Hadoop 분산시스템 설정하기

해당 시리즈는 라즈베리파이 3개를 연결하고 하둡(Hadoop)과 스파크(spark)를 사용하여 빅데이터를 다루는 과정을 보여줍니다.


워커 노드 디렉토리 생성

이제 마스터를 제외한 다른 노드들에게도 하둡을 설치해야 한다. 마스터 노드에서 만들어둔 clustercmd 함수를 이용하여 한번에 작동시키자. 먼저 하둡을 설치할 디렉토리를 생성하고 권한을 위임한다,

1
2
3
4
clustercmd sudo mkdir -p /opt/hadoop_tmp/hdfs
clustercmd sudo chown pi:pi –R /opt/hadoop_tmp
clustercmd sudo mkdir -p /opt/hadoop
clustercmd sudo chown pi:pi /opt/hadoop

Hadoop Configration 수정

분산시스템을 적용하기 위해서는 몇 가지 값들을 수정해주어야 한다. 먼저 파일이 존재하는 디렉토리로 이동하자.

1
cd /opt/hadoop/etc/hadoop

우리가 수정할 파일은 다음과 같다.

  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml
  • yarn-site.xml

위의 파일들을 들어가서 하나씩 변경해보자.

1
2
3
4
5
6
7
8
# 접속
vim core-site.xml

# 입력
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 접속
vim hdfs-site.xml

# 입력
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop_tmp/hdfs/datanode</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop_tmp/hdfs/namenode</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
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
31
32
# 접속
vim mapred-site.xml

# 입력
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
<name>yarn.app.mapreduce.am.resource.memory-mb</name>
<value>512</value>
</property>
<property>
<name>mapreduce.map.resource.memory-mb</name>
<value>256</value>
</property>
<property>
<name>mapreduce.reduce.resource.memory-mb</name>
<value>256</value>
</property>
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
31
32
# 접속
vim yarn-site.xml

# 입력
<property>
<name>yarn.acl.enable</name>
<value>0</value>
</property>
<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>3072</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>3072</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>256</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>

워커 노드 Configration 수정

마스터에서만 다운로드 했던 하둡 파일들을 워커에서 생성해둔 디렉토리로 보내준다. 이때 보내는 파일들은 위에서 수정한 configration이 적용된 상태이다.

1
for pi in $(otherpis); do rsync –avxP $HADOOP_HOME $pi:/opt/; done

복사가 끝나면 네임노드와 데이터노드를 초기화한다.

1
2
clustercmd rm –rf /opt/hadoop_tmp/hdfs/datanode/*
clustercmd rm –rf /opt/hadoop_tmp/hdfs/namenode/*

마스터 정보 변경 및 클러스터 재부팅

모두 완료되었다면 마스터 노드에서만 아래의 작업을 해준다.

  • master 정보 생성
1
2
3
4
5
# 접속
vim /opt/hadoop/etc/hadoop/master

# 입력
pi-master
  • worker 정보 생성
1
2
3
4
5
6
# 접속
vim /opt/hadoop/etc/hadoop/worker

# 입력
pi-slave1
pi-slave2

마스터에서 클러스터 정보 셋팅이 끝나면 마지막으로 워커 노드들에게도 하둡 환경설정 파일을 복사해준 후 적용시킨다.

1
2
clusterscp ~/.bashrc
clustercmd source ~/.bashrc

적용이 안된 설정들이 있을 수 있으니 클러스터를 리부트하자.

1
clusterreboot

Hadoop 분산시스템 실행하기

클러스터 재부팅이 끝나면 하둡을 실행해보자. 아래의 코드를 마스터 노드에 입력하자.

1
2
hdfs namenode -format
start-dfs.sh && start-yarn.sh

위 명령어는 HDFS의 네임노드를 포맷하여 메타데이터들을 날려주고(만약 데이터노드와 맞지 않으면 에러가 발생한다), 하둡을 실행한 것이다. 각 노드마다 어떤 서비스들이 올라왔는지 알고 싶다면 아래의 코드를 입력하자.

1
jps

jps는 JVM Process Status tool로 자바 가상머신에 올라간 프로세스들의 목록을 보여준다. 또 분산시스템 정보를 한번에 보고 싶다면 아래의 코드를 입력해보자.

1
2
yarn node –list
hadoop dfsadmin -report

다음 글에서는 하둡과 스파크에서 기본적으로 제공하는 테스트들을 실행해보자.


Hadoop 분산시스템 설정하기
https://dev-bearabbit.github.io/ko/Hadoop/hadoop-4/
Author
Jess
Posted on
2020년 11월 11일
Licensed under