해당 시리즈는 라즈베리파이 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/*
|
마스터 정보 변경 및 클러스터 재부팅
모두 완료되었다면 마스터 노드에서만 아래의 작업을 해준다.
1 2 3 4 5
| vim /opt/hadoop/etc/hadoop/master
pi-master
|
1 2 3 4 5 6
| vim /opt/hadoop/etc/hadoop/worker
pi-slave1 pi-slave2
|
마스터에서 클러스터 정보 셋팅이 끝나면 마지막으로 워커 노드들에게도 하둡 환경설정 파일을 복사해준 후 적용시킨다.
1 2
| clusterscp ~/.bashrc clustercmd source ~/.bashrc
|
적용이 안된 설정들이 있을 수 있으니 클러스터를 리부트하자.
Hadoop 분산시스템 실행하기
클러스터 재부팅이 끝나면 하둡을 실행해보자. 아래의 코드를 마스터 노드에 입력하자.
1 2
| hdfs namenode -format start-dfs.sh && start-yarn.sh
|
위 명령어는 HDFS의 네임노드를 포맷하여 메타데이터들을 날려주고(만약 데이터노드와 맞지 않으면 에러가 발생한다), 하둡을 실행한 것이다. 각 노드마다 어떤 서비스들이 올라왔는지 알고 싶다면 아래의 코드를 입력하자.
jps
는 JVM Process Status tool로 자바 가상머신에 올라간 프로세스들의 목록을 보여준다. 또 분산시스템 정보를 한번에 보고 싶다면 아래의 코드를 입력해보자.
1 2
| yarn node –list hadoop dfsadmin -report
|
다음 글에서는 하둡과 스파크에서 기본적으로 제공하는 테스트들을 실행해보자.