Installing Hadoop 1 on Ubuntu 14.04

Posted at 2015. 11. 12. 03:37 | Posted in Study/Hadoop
반응형

Introduction


시작하세요! 하둡 프로그래밍
국내도서
저자 : 정재화
출판 : 위키북스 2014.12.31
상세보기


거침없이 배우는 하둡
국내도서
저자 : 척 램(Chuck Lam) / 강택현,이현남역
출판 : 지앤선(지&선) 2012.07.17
상세보기


하둡을 공부하기 위하여 설치해보자.


연습을 실전 같이! 완전분산(Fully distributed) 모드로 설치한다.


 호스트

 아이피

 역할

 코어/메모리

 hadoop-01

 192.168.153.10

 NameNode

 1 코어 / 1 GB

 hadoop-02

 192.168.153.11

 Secondary NameNode / DataNooe

 1 코어 / 1 GB

 hadoop-03

 192.168.153.12

 DataNode 1 코어 / 1 GB

 hadoop-04

 192.168.153.xxx DataNode 1 코어 / 1 GB




하둡 실행 계정 생성


하둡 실행 계정은 하둡 클러스터를 구성하는 모든 서버에 동일하게 생성해야 한단다. (정말? 실화야?)


"hadoop" 계정을 사용하도록하겠다. 각 서버에 생성하자.


root@hadoop-01:~# adduser hadoop

root@hadoop-02:~# adduser hadoop

root@hadoop-03:~# adduser hadoop




호스트 파일 수정


IP를 직접 사용해도 되지만 호스트명을 사용하자. 각 서버에서 /etc/hosts 파일을 아래와 같이 수정한다.


※ 물론 이 작업을 수행하는 나의 컴퓨터에도 호스트 파일 수정 작업이 되어 있어야 한다.


root@hadoop-01:~# vi /etc/hosts


127.0.0.1       localhost

192.168.153.10  hadoop-01

192.168.153.11  hadoop-02

192.168.153.12  hadoop-03


root@hadoop-02:~# vi /etc/hosts

root@hadoop-03:~# vi /etc/hosts




인코딩 방식 설정


하둡은 인코딩 방식으로 UTF-8을 사용한단다... 다행이 우분투는 기본적으로 UTF-8 사용해서 천만 다행 -_-/




방화벽 해제


어차피 내부통신에다 연습용이니 다 해제!


root@hadoop-01:~# ufw disable

root@hadoop-02:~# ufw disable

root@hadoop-03:~# ufw disable




자바 설치


Oracle JDK 1.7 을 설치 하도록 하겠다.


http://ubuntuhandbook.org/index.php/2014/02/install-oracle-java-6-7-or-8-ubuntu-14-04/


Oracle JDK 7 을 설치 했을 시에 설치되는 위치는 "/usr/lib/jvm/java-7-oracle" 이다.




하둡 클러스터를 위한 SSH 설정


마스터 노드는 클러스터에 위치한 다른 모든 노드들에 접근할 수 있어야 한다. 하둡은 이러한 접근을 위해 SSH를 사용한다.


마스터 노드(hadoop-01)에서 쌍으로 이루어진 SSH 키를 생성한다.


hadoop@hadoop-01:~$ pwd

/home/hadoop


hadoop@hadoop-01:~$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): [Enter]
Created directory '/home/hadoop/.ssh'.
Enter passphrase (empty for no passphrase): [Enter]
Enter same passphrase again: [Enter]
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
c5:f5:5b:3a:83:13:1b:9b:07:2c:dc:11:34:3d:a9:41 hadoop@hadoop-01
The key's randomart image is:
...


생성된 공개키를 다른 서버에 복사한다.


ssh-copy-id -i [복사할 공개키 경로] [대상 서버 계정]@[대상 서버]


hadoop@hadoop-01:~$ ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop-02

The authenticity of host 'hadoop-02 (192.168.153.11)' can't be established.

ECDSA key fingerprint is 28:1a:ab:fa:2d:a8:e0:c8:5b:ef:f7:ff:74:69:45:96.

Are you sure you want to continue connecting (yes/no)? yes

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

hadoop@hadoop-02's password: [SSH 비밀번호 입력]


Number of key(s) added: 1


Now try logging into the machine, with:   "ssh 'hadoop@hadoop-02'"

and check to make sure that only the key(s) you wanted were added.


hadoop@hadoop-01:~$ ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop-03

hadoop@hadoop-01:~$ ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop-01




하둡 다운로드 및 압축 해제


현재 최신 버전은 1.2.1 이다.


hadoop@hadoop-01:~$ pwd

/home/hadoop


hadoop@hadoop-01:~$ wget https://archive.apache.org/dist/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz


압축 해제!


hadoop@hadoop-01:~$ tar xvfz hadoop-1.2.1.tar.gz




hadoop-env 수정


이것 저것....


hadoop@hadoop-01:~/hadoop-1.2.1/conf$ pwd

/home/hadoop/hadoop-1.2.1/conf


hadoop@hadoop-01:~/hadoop-1.2.1/conf$ vi hadoop-env.sh


# The java implementation to use.  Required.

# 현재 우분투 14에 Oracle JDK 7을 설치하면 아래와 같은 경로에 설치된다.

export JAVA_HOME=/usr/lib/jvm/java-7-oracle


# The maximum amount of heap to use, in MB. Default is 1000.

export HADOOP_HEAPSIZE=768


# The directory where pid files are stored. /tmp by default.
# NOTE: this should be set to a directory that can only be written to by
#       the users that are going to run the hadoop daemons.  Otherwise there is
#       the potential for a symlink attack.
export HADOOP_PID_DIR=/home/hadoop/hadoop-1.2.1/pids




masters 수정


masters 파일에는 보조네임 노드를 실행할 서버를 설정한다. (여러개 가능)


hadoop@hadoop-01:~/hadoop-1.2.1/conf$ vi masters


hadoop-02




slaves 수정


slaves 파일에는 데이터 노드를 실행할 서버를 설정한다.


hadoop@hadoop-01:~/hadoop-1.2.1/conf$ vi slaves


hadoop-02

hadoop-03




core-site.xml 수정


이것 저것... ㅠㅠ


hadoop@hadoop-01:~/hadoop-1.2.1/conf$ vi core-site.xml


<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>


<!-- Put site-specific property overrides in this file. -->

<configuration>

        <property>

                <name>fs.default.name</name>

                <value>hdfs://hadoop-01:9000</value>

        </property>

        <property>

                <name>hadoop.tmp.dir</name>

                <value>/home/hadoop/hadoop-data</value>

        </property>

</configuration>




hdfs-site.xml 수정


...


hadoop@hadoop-01:~/hadoop-1.2.1/conf$ vi hdfs-site.xml


<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>


<!-- Put site-specific property overrides in this file. -->

<configuration>

        <property>

                <name>dfs.replication</name>

                <value>3</value>

        </property>

        <property>

                <name>dfs.http.address</name>

                <value>hadoop-01:50070</value>

        </property>

        <property>

                <name>dfs.secondary.http.address</name>

                <value>hadoop-02:50090</value>

        </property>

</configuration>




mapred-site.xml 수정


..


hadoop@hadoop-01:~/hadoop-1.2.1/conf$ vi mapred-site.xml


<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>


<!-- Put site-specific property overrides in this file. -->

<configuration>

        <property>

                <name>mapred.job.tracker</name>

                <value>hadoop-01:9001</value>

        </property>

</configuration>




하둡 환경설정 복사


네임노드에서 모든 수정 작업이 완료되면 다른 데이터노드 서버로 파일을 복사한다.


hadoop@hadoop-01:~$ cd ~

hadoop@hadoop-01:~$ tar zcvf hadoop.tar.gz hadoop-1.2.1

hadoop@hadoop-01:~$ scp hadoop.tar.gz hadoop@hadoop-02:/home/hadoop

hadoop@hadoop-01:~$ scp hadoop.tar.gz hadoop@hadoop-03:/home/hadoop


각각 서버로 전송된 파일 압축 해제


hadoop@hadoop-02:~$ tar xvfz hadoop.tar.gz

hadoop@hadoop-03:~$ tar xvfz hadoop.tar.gz




하둡 실행


네임노드를 초기화한다.


hadoop@hadoop-01:~/hadoop-1.2.1/bin$ ./hadoop namenode -format


INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = hadoop-01/192.168.153.10 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 1.2.1 STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on ... STARTUP_MSG: java = 1.7.0_80 ************************************************************/ INFO util.GSet: Computing capacity for map BlocksMap INFO util.GSet: VM type = 64-bit INFO util.GSet: 2.0% max memory = 778502144 INFO util.GSet: capacity = 2^21 = 2097152 entries INFO util.GSet: recommended=2097152, actual=2097152 INFO namenode.FSNamesystem: fsOwner=hadoop INFO namenode.FSNamesystem: supergroup=supergroup INFO namenode.FSNamesystem: isPermissionEnabled=true INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s) INFO namenode.FSEditLog: dfs.namenode.edits.toleration.length = 0 INFO namenode.NameNode: Caching file names occuring more than 10 times INFO common.Storage: Image file /home/hadoop/hadoop-data/dfs/name/current/fsimage of size 112 bytes saved in 0 seconds. INFO namenode.FSEditLog: closing edit log: position=4, editlog=/home/hadoop/hadoop-data/dfs/name/current/edits INFO namenode.FSEditLog: close success: truncate to 4, editlog=/home/hadoop/hadoop-data/dfs/name/current/edits INFO common.Storage: Storage directory /home/hadoop/hadoop-data/dfs/name has been successfully formatted. INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at hadoop-01/192.168.153.10 ************************************************************/


전부 실행


hadoop@hadoop-01:~/hadoop-1.2.1/bin$ ./start-all.sh


starting namenode, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-namenode-hadoop-01.out hadoop-03: starting datanode, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-datanode-hadoop-03.out hadoop-02: starting datanode, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-datanode-hadoop-02.out hadoop-01: starting secondarynamenode, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-secondarynamenode-hadoop-01.out starting jobtracker, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-jobtracker-hadoop-01.out hadoop-03: starting tasktracker, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-tasktracker-hadoop-03.out hadoop-02: starting tasktracker, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-tasktracker-hadoop-02.out




제대로 올라갔는지 확인하자


hadoop@hadoop-01:~$ jps

3050 JobTracker

2730 NameNode


hadoop@hadoop-02:~$ jps

3067 SecondaryNameNode

2951 DataNode

3190 TaskTracker


hadoop@hadoop-03:~$ jps

3087 TaskTracker

2949 DataNode


http://hadoop-01:50070




반응형

'Study > Hadoop' 카테고리의 다른 글

Install Ambari and Deploy HDP in CentOS  (1) 2016.06.05
Installing Hive(Hadoop 1) + MySQL on CentOS 6.7  (0) 2016.01.05
//