본문 바로가기
  • 문과생의 백엔드 개발자 성장기
|Playdata_study/HADOOP

210715_HADOOP(HDFS3 연결최종)

by 케리's 2021. 7. 15.

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

댓글