Hadoop 을 가장 안정적으로 설치하는 방법
1. (root)계정 /usr/local 밑에 java랑 hadoop을 압축풀어 설치
2. /home/hadoop/하위에 ln으로 링크를 건다.
(vi hosts emdfhr, etc 밑에 환경설정 끝나고 tmp폴더 만들고 data폴더 만든다)
------------------- 여러번 해보기 -------------------------
3. (root로 접속한 hadoop계정) 온다.
4. root에서 건 링크가 hadoop계정에서 제대로 잘 걸렸는지 확인
(소프트링크, 2번에서 함)
5. 전체 reboot
6. 복제
7. (hadoop계정으로 접속) 후 root로 가서 java, hadoop 전역패스 건다.
8. 다시 하둡계정으로 와서 ssh를 한다
ssh원리 : 내가가지고 있는 공개키를 2,3,4에 보내서 암호없이 접속가능
ssh가 잘 되야 하트비트를 잘 주고 받을 수 있다.
9. ssh 가 끝나면, 마스터에서 ~/.bach_profile
10. ssh를 이용해서 위에있는 9번을 scp 한다.
11. namenode-format -> 실행
Hadoop HDFS 연결 최종
1. vim ~/.bash_profile에 추가
vim ~/.bash_profile
export JAVA_HOME=/usr/java/jdk1.8.0_291-amd64
export HADOOP_HOME=/home/hadoop/hadoop-2.10.1
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export PATH
경로는 아래와 같이 확인 하면 된다.
[hadoop@hadoop01 바탕화면]$ echo $JAVA_HOME
/usr/java/jdk1.8.0_291-amd64
[hadoop@hadoop01 바탕화면]$ echo $HADOOP_HOME
/home/hadoop/hadoop-2.10.1
2. /home/hadoop/hadoop-2.10.1/etc/hadoop 에 가서
core-site.xml , hdfs-site.xml, yarn-site.xml, mapred-site.xml 설정을 아래와 같이 맞춰준다.
※ mapred-site.xml 은 /home/hadoop/data/mapred 경로에 폴더도 만들어 준다.
<core.site.xml>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.10.1/tmp/</value>
</property>
</configuration>
<hdfs-site.xml>
<configuration>
<property>
<name>dfs.replication</name> <value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/data/datanode</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop02:50090</value>
</property>
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>hadoop02:50091</value>
</property>
</configuration>
<yarn-site.xml>
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property><name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop01:8025</value></property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop01:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop01:8040</value>
</property>
</configuration>
<mapred-site.xml>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/data/mapred</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/home/hadoop/data/mapred</value>
</property>
</configuration>
3. 모든 머신에 적용하자
(직접 경로, 파일가서 적용 가능)
$ scp -r /home/hadoop/data/mapred hadoop@hadoop02:/home/hadoop/data/
4. /home/hadoop/data 경로에 datanode, namenode, tmp, mapred 폴더를 만든다
(직접, hadoop권한으로)
특히 data 폴더는 무조건 hadoop권한으로 줘야함 (hadoop 계정에서 애초에 만들자)
5. /home/hadoop/hadoop-2.10.1 경로에 tmp 파일도 생성해준다.
6. Cluster를 실행해보자 (최종)
※ 주의할 점 : namenode, datanode 같이 포맷하고 dfs → yarn → 잡트래커 실행한다.
( /home/hadoop/data/namenode/current/version 에서
머신1-master (hadoop01), 머신2 -secondary marster(hadoop02) clusterID가 다른 경우 문제가 생긴다)
1) 모든 marster 와 slave 의 /home/hadoop/data/datanode의 내용을 지운다.
(폴더가 사라지지 않을 수도 있으니 직접 삭제 추천)
2) 실행되는 jps 를 멈추자
[hadoop@hadoop01 ~]$ $HADOOP_HOME/sbin/stop-all.sh
3) namenode 포맷
[hadoop@hadoop01 ~]$ hdfs namenode -format
4) datanode 포맷
[hadoop@hadoop01 ~]$ hdfs datanode -format
5) source bash_profile 실행 (위에 path 줘서 안줘도 됨)
[hadoop@hadoop01 ~]$ source ~/.bash_profile
6) dfs start (start-all.sh 로 줘도 되지만 각각 심어주는 것이 효과적)
[hadoop@hadoop01 ~]$ $HADOOP_HOME/sbin/start-dfs.sh
7) yarn start
[hadoop@hadoop01 ~]$ $HADOOP_HOME/sbin/start-yarn.sh
8) jps 확인
[hadoop@hadoop01 ~]$ jps
15891 Jps
10964 JobHistoryServer
15803 ResourceManager
15486 NameNode
[hadoop@hadoop02 바탕화면]$ jps
12614 SecondaryNameNode
12876 Jps
12735 NodeManager
12527 DataNode
[hadoop@hadoop03 바탕화면]$ jps
5777 NodeManager
5931 Jps
5647 DataNode
[hadoop@hadoop04 바탕화면]$ jps
5777 Jps
5463 DataNode
5592 NodeManager
9) jobhistory 안뜨면 강제로 명시주기 (이미 실행중이나 상태를 보고싶으면 명시 주면 된다)
$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
9-1) 만약 hadoop01에 DataNode 뜨면 kill -9 앞에있는숫자 (전체머신) 하고 다시 처음부터
12876 Jps
12735 NodeManager
12527 DataNode
ex) kill -9 12527
7. local : 50070 에서 확인해 보자
Livenode가 3이 올라와야 한다. (올라오면 성공!)
http://localhost:50070
8. 이전 시간 생성한 test 의 file01, file02 도 디렉토리에 업데이트 한 후 확인 해보자.
※ 유의 할 점
utilities → Browse Directory 확인 후 마지막 경로(디렉토리) 체크 후 실행 한다.
(나는 input 까지 이므로 아래 경로 input을 준다)
1) 디렉토리 올리기
$HADOOP_HOME/bin/hadoop fs -mkdir -p /user/joe/wordcount/input/
2) test 폴더 내 file 올리기
// 1. test폴더로 간 후 (파일을 올리기 위해서 현재 들어가 있는 위치가 중요함)
[hadoop@hadoop01] $cd test
// 2. test폴더에 있는 파일올리기 (file01, file02 명시)
[hadoop@hadoop01 test]$ $HADOOP_HOME/bin/hadoop fs -put file01 /user/joe/wordcount/input
[hadoop@hadoop01 test]$ $HADOOP_HOME/bin/hadoop fs -put file02 /user/joe/wordcount/input
// 3. 전체를 올리고 싶으면 아래와 같이 주면 된다.
<!--$HADOOP_HOME/bin/hadoop fs -put . /user/joe/wordcount/input (전체올리기) -->
Browse Directory 확인
file01 을 클릭해서 권한을 보자 (slave가 모두 명시되어있음 성공!)
3) 올린 파일 읽어오기
[hadoop@hadoop01 test]$ $HADOOP_HOME/bin/hadoop fs -cat /user/joe/wordcount/input/file01
[hadoop@hadoop01 test]$ $HADOOP_HOME/bin/hadoop fs -cat /user/joe/wordcount/input/file02
// 실행결과
[hadoop@hadoop01 test]$ $HADOOP_HOME/bin/hadoop fs -cat /user/joe/wordcount/input/file01
21/07/16 20:20:40 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Hello World, Bye World!
[hadoop@hadoop01 test]$ $HADOOP_HOME/bin/hadoop fs -cat /user/joe/wordcount/input/file02
21/07/16 20:20:54 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Hello Hadoop, Goodbye to hadoop.
9. Node of the cluster 에서 잘 작동 하는지 추가로 확인 하자.
체크되어 있는데로 되어있으면 성공!
http://hadoop01:8088/
'|Playdata_study > HADOOP' 카테고리의 다른 글
210716_HADOOP(MR작업) (0) | 2021.07.16 |
---|---|
210714_HADOOP (MapReduce 2) (0) | 2021.07.14 |
210713_HADOOP (HDFS Format) (0) | 2021.07.14 |
210712_HADOOP (환경설정 및 WordCount2 예제1) (0) | 2021.07.12 |
210709_HADOOP(설치 + Java설치) (0) | 2021.07.09 |
댓글