이 글부터는 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 계정 생성 및 암호 설정

1
2
[root@master ~]# useradd hadoop
[root@master ~]# password hadoop
 

이 후 su hadoop 명령어로 hadoop 계정 접속

1
2
[root@master ~]# su hadoop
[hadoop@master root]$
 

 

2. ssh 키 생성

1
[hadoop@master ~]$ ssh-keygen -t rsa
 

위의 명령어를 내리면 비밀번호 설정하라고 나오는데 그냥 Enter를 쳐서 비밀번호 설정을 하지 않아야 한다.

비밀번호 설정시 머리 아픈 상황이 발생한다.

이젠 ssh 기본기 와 공개키가 만들어 졌다. ssh 공개키를 slave1,slave2,slave3에 복사해주어 slave서버로 접속할수 있도록 해보자.

 

 

3. ssh 공개키 복사 

1
[hadoop@master ~]$ ssh-copy-id -/home/master/.ssh/id_rsa.pub hadoop@slave1
 

위와 같은 명령어를 내리면 뭐라하면서 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 공개키 복사 작업을 완료 했으면 다음과 같은 명령어로 다른 서버들로 접속해보자.

1
2
3
[hadoop@master ~]$ ssh slave1
Last login: Thu May  9 09:36:11 2019 from master
[hadoop@slave1 ~]$
 

로그인이 되는것을 확인 할 수 있다.


5 .하둡 다운로드 후 압축풀기 & 소유자 변경 & 파일 이름 변경 

1
2
3
4
5
cd /usr/local
sudo wget http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz
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]

1
2
3
4
5
6
7
8
9
10
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]

1
2
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>
                <name>ha.zookeeper.quorum</name>
                <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>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.nodemanager.resource.memory-mb</name>
                <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>
                <name>yarn.nodemanager.vmem-check-enabled</name>
                <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>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>yarn.app.mapreduce.am.resource.mb</name>
                <value>1024</value>
        </property>
        <property>
                <name>mapreduce.map.memory.mb</name>
                <value>1536</value>
        </property>
        <property>
                <name>mapreduce.map.java.opts</name>
                <value>-Xmx1024M</value>
        </property>
        <property>
                <name>mapreduce.reduce.java.opts</name>
                <value>-Xmx2560M</value>
        </property>
        <property>
                <name>mapreduce.reduce.memory.mb</name>
                <value>3072</value>
        </property>
</configuration>
 
 

 

[vi /usr/local/hadoop/etc/hadoop/slaves]

1
2
3
slave1
slave2
slave3
 

 

[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>
                <name>dfs.namenode.name.dir</name>
                <value>/usr/local/hadoop/dfs/namenode</value>
        </property>
        <property>
                <name>dfs.journalnode.edits.dir</name>
                <value>/usr/local/hadoop/dfs/journalnode</value>
        </property>
</configuration>
 
 

 

8. hdfs 저장 폴더 만들기

1
2
3
4
[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 명령어를 사용할 수 없다.)

1
2
3
[hadoop@master ~]$ scp -/usr/local/hadoop hadoop@slave1:/usr/local
[hadoop@master ~]$ scp -/usr/local/hadoop hadoop@slave2:/usr/local
[hadoop@master ~]$ scp -/usr/local/hadoop hadoop@slave3:/usr/local
 

 

 

hadoop 폴더를 복사했다면 위에서 설정한 hdfs-site.xml 파일의 설정을 slave서버에 맞게끔 바꾸어주어야 한다.

바꾸어야 할 부분 => <name>dfs.namenode.name.dir</name>

1
2
3
4
<property>
      <name>dfs.datanode.data.dir</name>
      <value>/usr/local/hadoop/dfs/datanode</value>
</property>
 
 

또한 /usr/local/hadoop/dfs/namenode 파일 이름또한 datanode로 바꾸어주어야 한다.

 

하둡 설치 및 설정 끝...다음은 하둡 실행이다.

+ Recent posts