Hadoop

Hadoop(하둡) 설치 및 사전 셋팅 (feat. Ubuntu)

집못가는프로그래머 2021. 9. 6. 18:21

<사전 셋팅>

1. Ubuntu(우분투) 터미널 실행

 

2. sudo apt update (apt를 먼저 업데이트 해주어야 한다)

 

3. sudo apt install openjdk-8-jdk -y  : 하둡은 자바(Java) 기반이기 때문에 자바 실행 환경이 설치되어 있어야 한다. 

 

4. java -version; javac -version : 자바 설치된 버전을 확인한다

 

5. sudo apt install openssh-server openssh-client -y   : (총괄 관리를 하는)Master 컴퓨터와 Slave 컴퓨터들이 있을 때

   Slave 컴퓨터들끼리 통신을 위함

 

6. sudo adduser hdoop    : Cluster 내에서 이용될 공통계정 설정 (ID : hdoop) (e.g. 컴퓨터가 100개 일때 모든 컴퓨터의 ID와 PW를 통일한다)

 

7. sudo visudo -f /etc/sudoers   : nano를 통해 파일이 하나 열리고

이처럼 root ALL=(ALL:ALL) ALL 밑에 새로만든 계정이름(hdoop)을 적어준다

 -> 기존 계정에 hdoop 권한을 설정한다.

 

8. su - hdoop   : 사용중인 계정을 hdoop으로 전환 (whoami를 쳐보면 사용중인 계정이 hdoop으로 바뀐것을 확인)

 

9. ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa  : 전체 컴퓨터의 비밀번호를 설정한다

 

10. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys : 허용된 유저에 설정한 비밀번호를 저장해준다. (컴퓨터들간의 열결을 위함)

 

11. chmod 0600 ~/.ssh/authorized_keys   :  아까 만들어준 authorized_keys를 hdoop 계정 최고권한만 읽기,쓰기 가 가능하도록 한다.

 

12. ssh localhost   :  ssh를 통해 localhost로 접속한다. (현재 사용중인 hdoop에 대한 권한 및 설정은 위에서 모두 했으므로 가능하다)


<하둡 설치>

1.  https://downloads.apache.org/hadoop/common/  < 링크를 우분투에서 접속하여 최신버전의 전 버전 hadoop을 다운로드한다.

   - 전 버전을 설치하는 이유는 가장 최신에 나온 버전은 이슈가 많을 수 있기 때문에 안정화 되어있는 전 버전을 추천

 

2. 하둡 버전.tar.gz 파일을 '파일 저장'을 체크하여 저장한다. (열기 아님)

 

3. cd ../hduser/Downloads/   : 하둡 설치파일의 경로

 

4. ls  : 설치 파일이 있는지 확인

 

5. cp 다운로드받은파일 ~/    : 하둡 설치파일을 현재 디렉토리로 옮긴다(hdoop 디렉토리)

 

6. cd   : 현재 디렉토리로 돌아온다

 

7. ls   : 옮겨진 설치파일이 있는지 확인

 

8. tar xvzf 설치파일명   : 압축되어 있는 설치파일 압축 해제

 

9. mv 해제한 설치파일 hadoop   : hadoop 이라는 파일을 만들어서 그 안에 설치파일을 넣는다.

 

10. nano .bashrc   : .bashrc 파일 열기 (하둡 관련 설정을 위함)

 

11. 

#Hadoop Related Options
export HADOOP_HOME=/home/hdoop/hadoop      
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS"-Djava.library.path=$HADOOP_HOME/lib/native"

 

↑ Windows의 환경변수 셋팅과 비슷한 작업. 

HADOOP_HOME이라는 변수에 Path를 넣어주고 $HADOOP_HOME (앞에 $가 붙으면 이미 선언된 변수임을 뜻함)을

이용하여 모든 셋팅을 한다

 

12. source .bashrc  : 설정 변경 후 컴퓨터를 다시시작하지 않고 .bashrc 파일만 따로 실행시킨다.

 

13. echo $HADOOP_HOME   : 설정했던 HADOOP_HOME의 값을 다시한번 확인해준다

 

14. which java  : 설치되어있는 java의 경로를 확인한다.

 

15. readlink -f 위 경로 : 위에서 구한 java 경로를 통해 내부의 링크를 읽는다. (/usr/lib/jvm/java-8-openjdk-amd64 까지만 복사해둔다)

 

16. nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh   : 하둡의 환경설정 파일(hadoop-env.sh)을 연다

 

17. export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64  : nano로 오픈한 파일의 가장 아래에 추가하고 저장한다. (JAVA_HOME을 추가한것) 

 

18. source $HADOOP_HOME/etc/hadoop/hadoop-env.sh   : 변경한 설정파일을 시스템에 적용시킨다

 

19. echo $JAVA_HOME   : 아까 설정한 JAVA_HOME의 값을 확인한다

 

20. nano $HADOOP_HOME/etc/hadoop/core-site.xml   : 하둡의 core-site.xml 파일 수정

 

21.

*파일내용의 하단부 <configuration> </configuration> 사이에 작성하고 저장

<property>
  <name>hadoop.tmp.dir</name>
  <value>/home/hdoop/tmpdata</value>
</property>
<property>
  <name>fs.default.name</name>
  <value>hdfs://127.0.0.1:9000</value>
</property>

 

↑ 하둡이 임시 디렉토리에 대한 작업을 어떻게 할것인지에 대한 설정

 

22. mkdir tmpdata   :  위 설정에서 <value>태그에 작성되있는 tmpdata 디렉토리를 만들어준다

 

23. nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml  : hdfs-site.xml 파일 수정

 

24. 파일을 열고 하단의 <configuration> </configuration> 사이에 작성

<property>
  <name>dfs.data.dir</name>
  <value>/home/hdoop/dfsdata/namenode</value>
</property>
<property>
  <name>dfs.data.dir</name>
  <value>/home/hdoop/dfsdata/datanode</value>
</property>
<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>

 

#namenode : 서버의 master 노드 디렉토리 이름

#datanode : 서버의 slave 노드 디렉토리 이름

 

25. 위의 namenode, datanode 디렉토리가 없기 때문에 dfsdata디렉토리를 만들고 그 안에 namenode, datanode 생성

> mkdir dfsdata

> cd dfsdata

> mkdir namenode

> mkdir datanode

> ls  : 잘 만들어졌는지 확인

 

26. nano $HADOOP_HOME/etc/hadoop/mapred-site.xml  : 하둡의 mapreduce(쪼개진 파일들을 처리하는 방법론, 요즘은 spark를 더 쓰는 추세이다) 관련 파일 수정

 

27.  <configuration> </configuration> 사이에 작성 ↓

<property> 
  <name>mapreduce.framework.name</name> 
  <value>yarn</value> 
</property> 

 

28. nano $HADOOP_HOME/etc/hadoop/yarn-site.xml  : yarn 관련 파일 수정

 

29. <!-- Site specific YARN configuration properties --> </configuration> 사이에 작성 ↓

<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.hostname</name>
  <value>127.0.0.1</value>
</property>
<property>
  <name>yarn.acl.enable</name>
  <value>0</value>
</property>
<property>
  <name>yarn.nodemanager.env-whitelist</name>   
  <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PERPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>

 

30. hdfs namenode -format  : hdfs를 위한 namenode 포멧

* HDFS : Hadoop Distributed File System 의 줄임말

 

31. start-dfs.sh

이와같은 3가지 프로세스가 작동되면 된다

32. jps  : java process가 잘 작동하는지 확인한다.

결과에 DataNode, SecondaryNameNode, NameNode     3가지가 있으면 된다

33. start-yarn.sh

위와같은 결과가 나오면 된다

34. jps

Jps를 제외한 5가지가 나오면 된다

 

35. 웹브라우저를 이용해 링크에 접속한다

     http://localhost:9870  << Namenode 관련 정보

     http://localhost:9864  << Datanode 관련 정보

     http://localhost:8088  << Yarn 관련 정보

 

36.

start-dfs.sh, start-yarn.sh 과 같은 실행 명령어들은

start-all.sh 을 이용해 한번에 모두 실행시키는것이 가능하다.

stop-all.sh : 모두 멈추는 명령어