이 글부터는 master 서버에서 실행하는 포스팅입니다.
혹시 이 전의 글을 못보신 분을 위해 다음과 같이 하둡을 구축할 것입니다.
xxx.xxx.xxx.35 master
xxx.xxx.xxx.101 slave1
xxx.xxx.xxx.102 slave2
xxx.xxx.xxx.103 slave3
|
master 서버의 계정도 가상서버와 마찬가지로 'hadoop'이어야 한다.
1. hadoop 계정 생성 및 암호 설정
|
[root@master ~]# useradd hadoop
[root@master ~]# password hadoop
|
|
이 후 su hadoop 명령어로 hadoop 계정 접속
|
[root@master ~]# su hadoop
[hadoop@master root]$
|
|
2. ssh 키 생성
|
[hadoop@master ~]$ ssh-keygen -t rsa
|
|
위의 명령어를 내리면 비밀번호 설정하라고 나오는데 그냥 Enter를 쳐서 비밀번호 설정을 하지 않아야 한다.
비밀번호 설정시 머리 아픈 상황이 발생한다.
이젠 ssh 기본기 와 공개키가 만들어 졌다. ssh 공개키를 slave1,slave2,slave3에 복사해주어 slave서버로 접속할수 있도록 해보자.
3. ssh 공개키 복사
위와 같은 명령어를 내리면 뭐라하면서 yes,no를 물어보는데 그 내용이 무엇이냐면 처음 접속하는 ip이니 기록을 남길 것인지 묻는 것이다. 그러니 yes라 대답한다.
이후 hadoop@slave1의 암호를 물을 텐데 가상서버의 계정 hadoop의 비밀번호를 입력하면 된다.
slave2,slave3에도 복사 해준다.
master에서 키를 생성하고 복사해 주었으니 마찬가지로 slave1,slave2,slave3에서 각각 ssh 키를 생성하고 ssh 공개키를 각 서버로 복사해 준다.
master ->> slave1,slave2,slave3
slave1 ->> master,slave2,slave3
slave2 ->> master,slave1,slave3
slave3 ->> master,slavr1,slave2
4. ssh 공개키 복사 작업을 완료 했으면 다음과 같은 명령어로 다른 서버들로 접속해보자.
|
[hadoop@master ~]$ ssh slave1
Last login: Thu May 9 09:36:11 2019 from master
[hadoop@slave1 ~]$
|
|
로그인이 되는것을 확인 할 수 있다.
5 .하둡 다운로드 후 압축풀기 & 소유자 변경 & 파일 이름 변경
|
cd /usr/local
sudo tar -xzvf hadoop -2.7.6.tar.gz
sudo chown -R hadoop:hadoop /usr/local/hadoop-2.7.6
mv hadoop-2.7.6 hadoop
|
|
6. 하둡 환경 변수 설정
[sudo vi .bashrc]
|
export HADOOP_HOME=/usr/local/hadoop
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 HADOOP_PID_DIR=${HADOOP_HOME}/pids
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib/*
|
|
7. 하둡 설정
[vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh]
|
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64
export HADOOP_HOME=/usr/local/hadoop
|
|
[vi /usr/local/hadoop/etc/hadoop/core-site.xml]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
<property>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
</configuration>
|
|
[vi /usr/local/hadoop/etc/hadoop/yarn-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
|
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<value>mapreduce_shuffle</value>
</property>
<property>
<value>8192</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocaion-mb</name>
<value>8192</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocaion-mb</name>
<value>1024</value>
</property>
<property>
<value>false</value>
</property>
</configuration>
|
|
[vi /usr/local/hadoop/etc/hadoop/mapred-site]
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
|
<configuration>
<property>
<name>mapreduce.jobtracker.address</name>
<value>master:9001</value>
</property>
<property>
<value>yarn</value>
</property>
<property>
<value>1024</value>
</property>
<property>
<value>1536</value>
</property>
<property>
<value>-Xmx1024M</value>
</property>
<property>
<value>-Xmx2560M</value>
</property>
<property>
<value>3072</value>
</property>
</configuration>
|
|
[vi /usr/local/hadoop/etc/hadoop/slaves]
[vi /usr/local/hadoop/etc/hadoop/hdfs-site]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<value>/usr/local/hadoop/dfs/namenode</value>
</property>
<property>
<value>/usr/local/hadoop/dfs/journalnode</value>
</property>
</configuration>
|
|
8. hdfs 저장 폴더 만들기
|
[hadoop@master ~]$ cd /usr/local/hadoop/
[hadoop@master hadoop]$ mkdir dfs
[hadoop@master hadoop]$ cd dfs
[hadoop@master dfs]$ mkdir namenode
|
|
master 서버에서 8번까지 진행했다면 각 slave서버들로 hadoop 폴더를 ssh를 이용하여 복사해준다. 복사 명령어는 다음과 같다.(ssh 키 복사를 해주지 않았다면 scp 명령어를 사용할 수 없다.)
|
[hadoop@master ~]$ scp -r /usr/local/hadoop hadoop@slave1:/usr/local
[hadoop@master ~]$ scp -r /usr/local/hadoop hadoop@slave2:/usr/local
[hadoop@master ~]$ scp -r /usr/local/hadoop hadoop@slave3:/usr/local
|
|
hadoop 폴더를 복사했다면 위에서 설정한 hdfs-site.xml 파일의 설정을 slave서버에 맞게끔 바꾸어주어야 한다.
바꾸어야 할 부분 => <name>dfs.namenode.name.dir</name>
|
<property>
<value>/usr/local/hadoop/dfs/datanode</value>
</property>
|
|
또한 /usr/local/hadoop/dfs/namenode 파일 이름또한 datanode로 바꾸어주어야 한다.
하둡 설치 및 설정 끝...다음은 하둡 실행이다.