Hadoop(하둡) 설치 및 사전 셋팅 (feat. Ubuntu)
<사전 셋팅>
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를 통해 파일이 하나 열리고
-> 기존 계정에 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
32. jps : java process가 잘 작동하는지 확인한다.
33. start-yarn.sh
34. jps
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 : 모두 멈추는 명령어