하둡 설정
전에 언급한 바와 같이 서버는 4개를 클러스터링 할 예정입니다.
각각의 호스트이름은 다음과 같습니다:
doop01
doop02
doop03
doop04
하둡은 기본적으로 두가지로 나뉩니다. 바로 hdfs와 맵리듀스입니다.
hdfs는 하둡의 파일시스템의 약자이고 하둡이 실제로 사용하는 파일시스템입니다.
hdfs는 네임노드와 데이터노드로 나뉩니다.
맵리듀스는 map과 reduce를 수행하는 작업입니다.
기본적으로는 잡트래커와 태스크트래커로 나뉩니다.
잡트래커는 태스크트래커에게 일을 시키는 역할을 하고
태스크트래커는 잡트래커에게 받은 일을 수행하는 역할을 합니다.
보통은 master가 네임노드와 잡트래커를, slave들이 데이터노드와 태스크트래커를 맡습니다.
masters 파일
먼저공통적으로 사용될 하둡의 설정 파일들을 수정하도록 하겠습니다.
conf 디렉터리 안에있는 masters파일을 열어줍니다.
vi conf/masters
그리고 원래 있던 내용은 지우고 다음 한줄을 입력해주겠습니다.
doop02
master란 하둡의 클러스터 중 리소스를 관리하고 slave들에게 일을 시키는 역할을 하는 기기를 말합니다.
masters파일에는 보조네임노드 즉 하둡 클러스터링의 master가 되는 기기를 서포트하는 sub-master를 설정하는 파일입니다.
이를 하둡 1.0에서는 secondarynamenode라고 합니다.
slaves 파일
slave는 master가 시키는 일을 수행하는 기기들을 말합니다. 하둡에서는 이를 데이터를 실제로 저장하는 기기라고 해서 datanode라고 부릅니다.
이 slave들을 지정해주기 위해 slave파일을 열어주겠습니다.
vi conf/slaves
그리고 역시 내부의 내용을 지우고 아래의 내용을 입력해줍니다.
doop02
doop03
doop04
보시는 바와 같이, doop02는 보조네임노드도 수행하고 데이터노드도 수행하는 것을 알 수 있습니다.
core-site.xml 파일
이제 conf안에 있는 core-site.xml파일을 열고 다음 내용을 <configuration></configuration>태그 사이에 입력해줍니다.
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://doop01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/doop/hadoop-data/</value>
</property>
</configuration>
이 파일은 기존에 있는 하둡의 default설정에서 hdfs와 mapreduce설정들 중 공통적인 무언가를 바꾸고 싶을 때 사용합니다.
fs.default.name 설정은 하둡의 파일시스템인 hdfs의 기본 이름 즉 우리의 설정에서는 doop01기기를 말합니다.
hadoop.tmp.dir은 하둡이 명령을 수행할 때 데이터를 읽고 쓰는 임시 저장공간입니다. 별도로 만들어주지 않아도, 디렉토리가 없다면 하둡이 자동으로 생성합니다.
hdfs-site.xml 파일
hdfs-site.xml파일을 열어 다음 내용을 <configuration></configuration>태그 사이에 입력해줍니다.
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.http.address</name>
<value>doop01:50070</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>doop02:50090</value>
</property>
</configuration>
hdfs-site.xml파일은 hdfs에만 적용될 설정을 입력해 주는 파일입니다.
dfs.replication설정은 데이터가 하둡의 파일시스템에 저장될 때 replication 즉 복제되는 갯수를 의미합니다.
dfs.http.address는 hdfs의 기본주소 즉 doop01기기의 주소를 의미합니다.
dfs.secondary.http.address는 보조네임노드의 주소 즉 doop02의 주소를 의미합니다.
mapred-site.xml
마지막으로 mapred-site.xml파일을 열어 다음 내용을 <configuration></configuration>태그 사이에 입력해줍니다.
이름에서 알 수 있듯이 이 파일은 mapreduce에만 적용될 설정을 입력해 주는 파일입니다.
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>doop01:9001</value>
</property>
</configuration>
mapred.job.tracker는 mapreduce의 일을 slave들에게 할당하는 일을 하는 잡트래커를 설정해줍니다.
우리의 경우에는 doop01기기가 됩니다.
이제 하둡의 공통적인 설정이 끝났습니다.
VM복제
원래대로라면, 하둡이 설치되는 클러스터의 모든 기기들에 따로 위의 설정작업을 해주거나,
한곳에서 설정한 뒤 scp로 모두 배포해주어야 합니다.
하지만 우리는 VM을 사용할 것이기 때문에, 공통적인 내용은 모두 하나의 기기에서 작성한것이고, VM을 복제해 모두 적용해 줄 것입니다.
이제 복제를 위해 doop01기기를 잠시 멈추도록 하겠습니다.
돌아가고있는 doop01창의 x표시를 누르면 위와같은 창이 나옵니다.
가장 하단에 있는 Power off를 선택해 doop01기기를 종료시켜줍니다.
복제
이제 VirtualBox Manager로 돌아가 doop01을 오른쪽 클릭 하고 clone메뉴를 누르거나 Ctrl+O 단축키를 눌러주시면, 복제를 할 수 있는 창이 나옵니다.
새로운 기기를 doop02라고 설정하고 진행하겠습니다.
꼭 아래에 있는 Reinitialize the MAC address 체크박스를 선택해 주셔야합니다.
그래야 전 기기와 다른 MAC address와 ip를 할당받을 수 있습니다.
그리고 다음 창에서는 Full-clone을 선택하고 진행합니다.
위와같이 doop03과 doop04도 만들어주면 됩니다.
호스트 설정
네트워크설정
이제 각각의 VM을 실행하고 모두 같은 root계정으로 로그인한 뒤, ifconfig명령을 입력해봅니다.
> ifconfig
아직 ip가 제대로 나오지 않을 수 있습니다. 각 기기에서 아래의 명령을 입력해줍니다.
> dhclient
각 기기의 ip가 다른것을 확인할 수 있습니다. 이 ip주소들을 적어두시기 바랍니다.
이제 이를 영구적으로 반영하도록 하겠습니다.
네트워크 관련 설정파일인 ifcfg-enp0s3파일을 열어줍니다.
> vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
그리고 가장 하단에 보이는 ONBOOT=no를 ONBOOT=yes로 바꿔주시면 되겠습니다.
이 작업은 dhclient가 기기가 실행될 때 마다 해당 이더넷 어답터의 설정을 적용시켜주는 옵션입니다.
호스트명 설정
이제 각 VM의 호스트명을 변경해주도록 하겠습니다.
아래의 커맨드를 입력해 hostname을 변경해줍니다.
> hostnamectl set-hostname doop01
그리고 hostname 커맨드를 입력하면 doop01로 호스트명이 변경된 것을 볼 수 있습니다.
Shell에는 적용이 되어있지 않은데, 이것을 확인하시려면 reboot을 하시거나 다른 계정으로 로그인하시면 바뀐것을 확인하실 수 있습니다. Shell에는 반영이 안되어있지만, 시스템에 적용 되었다는것만 기억하시면 됩니다.
각 VM에 해당 명령을 해주어 호스트명을 변경해줍니다. 각각 doop02, doop03, doop04로 이름지으시면 됩니다.
다음으로 /etc/hosts 파일을 변경해주겠습니다. 먼저 doop01기기의 파일만 수정하도록 하겠습니다.
먼저 아래 커맨드를 입력해 /etc/hosts를 열어주고, 있는 내용을 모두 지워줍니다.
> vi /etc/hosts
그리고 다음 내용을 입력해줍니다.
편의를 위해서 192.168.1.1 ~ 4로 적었지만, 아까 ifconfig했던 각각의 ip주소들을 입력해주셔야 합니다.
doop01 192.168.1.1
doop02 192.168.1.2
doop03 192.168.1.3
doop03 192.168.1.4
파일전송
그리고 파일을 저장한 뒤 이 파일을 다른 기기들에 scp를 사용해 보내주도록 하겠습니다.
> scp /etc/hostname doop@doop02:/etc/hostname
> scp /etc/hostname doop@doop03:/etc/hostname
> scp /etc/hostname doop@doop04:/etc/hostname
각 기기에서 cat /etc/hostname 명령을 입력해보시면 내용이 바뀐것을 볼 수 있습니다.
ssh설정
이제 드디어 마지막 설정입니다.
ssh 키 생성
각 기기의 ssh 키를 만들어주도록 하겠습니다.
먼저 doop 계정으로 로그인한 뒤 home디렉토리로 이동합니다.
> su doop
> cd
그리고 ssk-keygen명령을 입력하고, 모든 질문에 enter를 눌러주시면 ssh 키가 만들어집니다.
해당 작업을 모든 기기에서 해주시면 됩니다.
ssh 키 복사
ssh키는 ssh통신을 할 때 믿을 수 있는 기기이면 별다른 정보를 입력하지 않고도 통신을 할 수 있도록 하기 위해서 설정해줍니다.
각 VM들을 믿을 수 있는 기기로 등록하기 위해 ssh공개키를 복사하고 등록하도록 하겠습니다.
아래의 명령을 각 기기에서 다른 3개의 기기들의 이름으로 실행해 줍니다.
> ssh-copy-id -i /home/doop/.ssh/id_rsa.pub doop@doop02
doop01 --> doop02, doop03, doop04
doop02 --> doop01, doop03, doop04
doop03 --> doop01, doop02, doop04
doop04 --> doop01, doop02, doop03
이렇게 실행해 주시면 각 기기는 믿을 수 있는 기기가 되어 비밀번호 없이도 ssh통신을 할 수 있게 됩니다.
설정이 모두 끝났으니 다음 포스팅에서는 하둡 클러스터를 구동시켜보도록 하겠습니다.
참고자료
이 포스팅은 "시작하세요! 하둡 프로그래밍" 책의 예제를 무작정 따라해본 포스팅입니다.
https://wikibook.co.kr/beginning-hadoop-programming-2rev/
'빅데이터 > 하둡' 카테고리의 다른 글
하둡 1.0 튜토리얼 - (6) HDFS 명령어 (0) | 2019.07.12 |
---|---|
하둡 1.0 튜토리얼 - (5) 하둡 실행 (5) | 2019.07.12 |
하둡 1.0 튜토리얼 - (3) 하둡 설치 (0) | 2019.07.12 |
하둡 1.0 튜토리얼 - (2) 자바 설치 (0) | 2019.07.11 |
하둡 1.0 튜토리얼 - (1) VM 설치 (0) | 2019.07.11 |