완전 잘됨.... 굿 ...
출처 : http://blog.iotinfra.net/?p=1275
■ Hadoop 완전분산 모드 설치에 대해 알아보고자 한다. 먼저 설치하려는 서버 정보는 아래와 같으며 각 서버간 통신을 원활히 하기 위한 ssh 공개키 분배는 이미 완료된것으로 가정한다. 참고 ssh 자동 로그인
Hadoop 설치 대상 서버 정보
Host Name | IP | 용도 |
---|---|---|
centos01 | 192.168.192.128 | Master Node |
centos02 | 192.168.192.130 | Slave Node |
centos03 | 192.168.192.133 | Data Node 1 |
centos04 | 192.168.192.132 | Data Node 2 |
centos05 | 192.168.192.131 | Data Node 3 |
■ 각 서버의 /etc/hosts 파일 정보
1 2 3 4 5 6 7 | 127.0.0.1 localhost ::1 localhost 192.168.192.128 centos01 192.168.192.130 centos02 192.168.192.133 centos03 192.168.192.132 centos04 192.168.192.131 centos05 |
■ 프로그램 설치 정보
프로그램 설치 정보
Name | Version | Location | Symbolic Link |
---|---|---|---|
JDK | jdk1.7.0_79 | /usr/local/ | java |
Maven | apache-maven-3.3.3 | /usr/local/ | maven |
Hadoop | hadoop-2.6.0 | /usr/local/ | hadoop |
■ Symbloic Link – 위의 표에 명시된 각 서버의 /usr/local 디렉토리에서 아래와 같이 symbloic link 작업을 한다.
1 2 3 4 5 | [nextman@centos01 ~]$ cd ~ [nextman@centos01 ~]$ cd /usr/local [nextman@centos01 local ]$ ln -s apache-maven-3.3.3/ maven [nextman@centos01 local ]$ ln -s hadoop-2.6.0/ hadoop [nextman@centos01 local ]$ ln -s jdk1.7.0_79 java |
■ 일반사용자(‘nextman’)의 .bash_profile 파일 편집을 아래와 같이 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | [nextman@centos01 ~]$ vi ~/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs alias tstart= '/usr/local/tomcat/bin/catalina.sh start' alias tstop= '/usr/local/tomcat/bin/catalina.sh stop' alias tstat= 'ps ax | grep tomcat' alias tlog= 'tail -f /usr/local/tomcat/logs/catalina.out &' export JAVA_HOME= /usr/local/java export TOMCAT_HOME= /usr/local/tomcat export MAVEN_HOME= /usr/local/maven export HADOOP_HOME= /usr/local/hadoop PATH=$HADOOP_HOME /bin :$HADOOP_HOME /sbin :$MAVEN_HOME /bin :$TOMCAT_HOME /bin :$JAVA_HOME /bin :$PATH:$HOME/. local /bin :$HOME /bin export PATH [nextman@centos01 ~]$ source ~/.bash_profile |
■ 일반사용자(‘nextman’)의 .bashrc 파일 편집을 아래와 같이 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= export JAVA_HOME= /usr/local/java # User specific aliases and functions |
■ 모든 서버(5대, centos01~05)에서 hadoop에서 사용할 데이터 디렉토리를 생성한다.
1 2 3 | [nextman@centos01 ~]$ mkdir /home/data/hadoop/tmp [nextman@centos01 ~]$ mkdir /home/data/hadoop/dfs/name [nextman@centos01 ~]$ mkdir /home/data/hadoop/dfs/data |
■ 모든 서버(5대, centos01~05)의 core-site.xml파일을 아래와 같이 편집한다. /home/data/hadoop 이하의 디렉토리는 소유권을 nextman 사용자가 가지도록 한다.
1 2 3 4 5 6 7 8 9 10 11 | [nextman@centos01 ~]$ vi /usr/local/hadoop/etc/hadoop/core-site.xml < configuration > < property > < name >fs.defaultFS</ name > </ property > < property > < name >hadoop.tmp.dir</ name > < value >/home/data/hadoop/tmp</ value > </ property > </ configuration > |
■ 모든 서버(5대, centos01~05)의 hdfs-site.xml파일을 아래와 같이 편집한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | [nextman@centos01 ~]$ vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml < configuration > < property > < name >dfs.replication</ name > < value >3</ value > </ property > < property > < name >dfs.namenode.name.dir</ name > < value >file:/home/data/hadoop/dfs/name</ value > < final >true</ final > </ property > < property > < name >dfs.datanode.data.dir</ name > < value >file:/home/data/hadoop/dfs/data</ value > < final >true</ final > </ property > < property > < name >dfs.permissions</ name > < value >false</ value > </ property > < property > < name >dfs.http.address</ name > < value >centos01:50070</ value > </ property > < property > < name >dfs.secondary.http.address</ name > < value >centos02:50090</ value > </ property > < property > < name >fs.checkpoint.dir</ name > < value >/home/data/hadoop/checkpoint</ value > </ property > < property > < name >fs.checkpoint.period</ name > < value >360</ value > </ property > < property > < name >dfs.backup.address</ name > < value >centos02:50100</ value > </ property > < property > < name >dfs.backup.http.address</ name > < value >centos02:50105</ value > </ property > </ configuration > |
■ 모든 서버(5대, centos01~05)의 mapred-site.xml파일을 아래와 같이 편집한다.
1 2 3 4 5 6 7 8 9 | [nextman@centos01 ~]$ cd /usr/local/hadoop/etc/hadoop/ [nextman@centos01 ~]$ cp mapred-site.xml.template mapred-site.xml [nextman@centos01 ~]$ vi /usr/local/hadoop/etc/hadoop/mapred-site.xml < configuration > < property > < name >mapred.job.tracker</ name > < value >centos01:9001</ value > </ property > </ configuration > |
■ 모든 서버(5대, centos01~05)의 masters파일을 아래와 같이 편집한다. 이 파일이 없으면 새로 생성한다.
1 2 | [nextman@centos01 ~]$ vi /usr/local/hadoop/etc/hadoop/masters centos01 |
■ 모든 서버(5대, centos01~05)의 slaves파일을 아래와 같이 편집한다.
1 2 3 4 5 | [nextman@centos01 ~]$ vi /usr/local/hadoop/etc/hadoop/slaves centos02 centos03 centos04 centos05 |
■ 네임노드(centos01)에서 네임노드 포맷 – 반드시 네임노드상에서 실행해야됨
$HADOOP_HOME/etc/hadoop/hdfs-site.xml의 dfs.namenode.name.dir에 명시된 디렉토리(여기서는 /home/data/hadoop/dfs/name)가 hdfs 파일 포맷으로 포맷된다. 이 디렉토리가 없으면 생성되고 이 디렉토리 하위에 current 디렉토리가 생성된 것을 확인할 수 있다.
1 2 3 4 5 6 | [nextman@centos01 ~]$ /usr/local/hadoop/bin/hdfs namenode - format ... [nextman@centos01 name]$ pwd /home/data/hadoop/dfs/name [nextman@centos01 name]$ ls current |
■ hadoop 시작 – 이전 버전에서는 $HADOOP_HOME/sbin/start-all.sh로 hadoop을 시작 하였으나 hadoop 버전 hadoop-2.6.0에서는 $HADOOP_HOME/sbin/start-dfs.sh, $HADOOP_HOME/sbin/start-yarn.sh 스크립트를 실행하는 것으로 변경되었다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [nextman@centos01 sbin]$ pwd /usr/local/hadoop/sbin [nextman@centos01 sbin]$ . /start-dfs .sh [nextman@centos01 sbin]$ . /start-dfs .sh Starting namenodes on [centos01] centos01: starting namenode, logging to /usr/local/hadoop-2 .6.0 /logs/hadoop-nextman-namenode-centos01 .out centos04: starting datanode, logging to /usr/local/hadoop-2 .6.0 /logs/hadoop-nextman-datanode-centos04 .out centos05: starting datanode, logging to /usr/local/hadoop-2 .6.0 /logs/hadoop-nextman-datanode-centos05 .out centos02: starting datanode, logging to /usr/local/hadoop-2 .6.0 /logs/hadoop-nextman-datanode-centos02 .out centos03: starting datanode, logging to /usr/local/hadoop-2 .6.0 /logs/hadoop-nextman-datanode-centos03 .out Starting secondary namenodes [centos02] centos02: starting secondarynamenode, logging to /usr/local/hadoop-2 .6.0 /logs/hadoop-nextman-secondarynamenode-centos02 .out [nextman@centos01 sbin]$ . /start-yarn .sh starting yarn daemons starting resourcemanager, logging to /usr/local/hadoop-2 .6.0 /logs/yarn-nextman-resourcemanager-centos01 .out centos04: starting nodemanager, logging to /usr/local/hadoop-2 .6.0 /logs/yarn-nextman-nodemanager-centos04 .out centos05: starting nodemanager, logging to /usr/local/hadoop-2 .6.0 /logs/yarn-nextman-nodemanager-centos05 .out centos02: starting nodemanager, logging to /usr/local/hadoop-2 .6.0 /logs/yarn-nextman-nodemanager-centos02 .out centos03: starting nodemanager, logging to /usr/local/hadoop-2 .6.0 /logs/yarn-nextman-nodemanager-centos03 .out |
http://[Namenode IP]:50070으로 접속해서 설치된 hadoop의 상태를 확인한다. – http://192.168.192.128:50070
■ jps로 hadoop 실행 확인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # centos01(master node)에서 hadoop 실행 확인 [nextman@centos01 sbin]$ jps 7147 NameNode 7404 ResourceManager 1543 Bootstrap 7663 Jps # centos02(secondary name node)에서 hadoop 실행 확인 [nextman@centos02 hadoop]$ jps 4067 Jps 3951 NodeManager 3789 DataNode 3856 SecondaryNameNode # centos03(data node)에서 hadoop 실행 확인 [nextman@centos03 ~]$ jps 2339 Jps 2128 DataNode 2227 NodeManager # centos04(data node)에서 hadoop 실행 확인 [nextman@centos04 ~]$ jps 2336 Jps 2125 DataNode 2224 NodeManager # centos05(data node)에서 hadoop 실행 확인 [nextman@centos05 ~]$ jps 2236 NodeManager 2348 Jps 2136 DataNode |
■ hadoop 종료 – master node(namenode, centos01)에서 hadoop를 종료한다. $HADOOP_HOME/sbin/stop-yarn.sh, $HADOOP_HOME/sbin/stop-dfs.sh 스크립트를 실행한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [nextman@centos01 sbin]$ pwd /usr/local/hadoop/sbin [nextman@centos01 sbin]$ . /stop-yarn .sh stopping yarn daemons stopping resourcemanager centos04: stopping nodemanager centos03: stopping nodemanager centos05: stopping nodemanager centos02: stopping nodemanager centos04: nodemanager did not stop gracefully after 5 seconds: killing with kill -9 centos03: nodemanager did not stop gracefully after 5 seconds: killing with kill -9 centos05: nodemanager did not stop gracefully after 5 seconds: killing with kill -9 centos02: nodemanager did not stop gracefully after 5 seconds: killing with kill -9 no proxyserver to stop [nextman@centos01 sbin]$ . /stop-dfs .sh Stopping namenodes on [centos01] centos01: stopping namenode centos04: stopping datanode centos02: stopping datanode centos05: stopping datanode centos03: stopping datanode Stopping secondary namenodes [0.0.0.0] 0.0.0.0: stopping secondarynamenode [nextman@centos01 sbin]$ |
■ 관리 편의를 위한 설정 1 – hadoop 디렉토리 symbloic link
hadoop이 설치된 디렉토리로 빨리 이동하기 위해서 일반 사용자 홈 디렉토리에 hadoop설치 디렉토리에 대한 링크 생성
1 2 3 | [nextman@centos02 ~]$ pwd /home/nextman [nextman@centos02 ~]$ ln -s /usr/local/hadoop-2 .6.0 hadoop |
■ 관리 편의를 위한 설정 2 – logs 디렉토리 symbloic link
logs 디렉토리가 커질 수 있기 때문에 /usr/local/hadoop-2.6.0/logs 디렉토리를 삭제하고 디스크 여유공간이 비교적 있는 /home/data/hadoop/디렉토리에 logs 디렉토리 생성
1 2 3 4 5 | [nextman@centos02 hadoop] pwd /usr/local/hadoop-2 .6.0 [nextman@centos02 hadoop] rm -rf logs [nextman@centos02 hadoop] mkdir /home/data/hadoop/logs [nextman@centos02 hadoop] ln -s /home/data/hadoop/logs logs |
'개발 > HADOOP_SPARK_ETC' 카테고리의 다른 글
zookeeper 설치 [펌] (0) | 2017.03.24 |
---|---|
zookeeper no route to host (0) | 2017.03.24 |
centos clusterssh (0) | 2017.03.20 |
ssh 자동로그인 설정 (0) | 2017.03.20 |
virtual box 여러 guest ip 설정 (CentOS) (0) | 2017.03.17 |
댓글