안녕하세요 🙋♀️ 🙋♂️
이번에 하둡에코시스템에 대해서 공부해보려고 합니다.
내용 정리하면서, 나중에 또 까먹을 미래의 나를 위해!! 포스팅 합니다. 하하
저는 AWS 의 EC2를 사용할 예정이므로, 모든 절차에 다 EC2를 사용합니다 :)
모든 단계는 공식사이트를 기준으로 작성 되었으며, 최종 아키텍쳐는 1개의 마스터노드, 3개의 슬레이브노드로 구성될 예정입니다 :)
시작해보겠습니다.
1. EC2 생성하기
이번 단계에서는 EC2 인스턴스를 생성합니다.
OS는 리눅스 CentOS를 사용할 예정입니다.!!! 꼭 AWS가 아니더라도 사용할수 있는 리눅스 서버(가상서버) 4대를 준비해주세요!
이번 단계에서는 그중에 하나를 마스터 서버로 사용할 예정입니다 :)
AWS 웹 콘솔에 접속한 후 EC2서비스를 선택합니다.
맨 처음 화면에서 "인스턴스 시작" 버튼을 찾아 클릭합니다.

인스턴스를 만드는 과정은 총 7단계로 구성되어있습니다.
먼저, 1단계, AMI를 선택합니다. 저는 Centos7을 사용할 예정이므로, 검색창에 Centos를 검색합니다!
AWS Marketplace 에서 맨 처음 검색되는 AMI로 선택하고 다음으로 넘어갑니다.

2단계, 인스턴스 유형을 선택합니다. 저는 t3.medium을 선택했습니다.
여기에서 검토 및 시작을 선택합니다.
만약, VPC설정이나, EC2 Role 추가가 필요하다면, 여기에서 다음"인스턴스 세부정보구성"으로 넘어갑니다.

7단계, 검토부분입니다. 아래까지 쭉 검토한 후 시작하기를 클릭합니다.
키페어 팝업창에서 가지고있는 키 페어를 선택하거나 새 키페어를 생성합니다.

몇분정도 후면 인스턴스를 사용할 수 있습니다.
인스턴스 목록에서 새로 생성된 인스턴스를 확인하고 이름을 Master.Hadoop으로 변경하였습니다.
그리고 퍼블릭IP주소를 확인해줍시다!

이제 이 인스턴스에 SSH로 접속합니다.
ssh -i <키페어경로> centos@<퍼블릭IP>

인스턴스에 접속까지 했으면, 이번 단계는 여기서 완료 되었습니다 :)
다음 단계로 넘어갑시다!
2. EC2에 Java 설치하기
Hadoop을 사용하기 위해서는 Linux에 Java가 설치되어 있어야 합니다. (호환되는 Java버전 확인)
제가 설치할 2.10.1버전의 하둡은 java 1.6 혹은 java 1.7이 설치 되어야 하네요. 설치해 봅시다 :)
제가 사용하는 CentOS 7 에서 Yum 으로 Java 1.7 버전 설치가 가능한지 확인 하기 위해, yum search 명령어를 사용합니다.
sudo yum search java-1.7

java 1.7버전을 설치할 수 있네요 :) 설치해봅시다!!
sudo yum install java-1.7* -y
위 명령어로 설치 진행 후 잘 설치가 되었는지 확인하기 위해 java 버전을 확인해봅니다.
sudo java -version

java 1.7 버전이 잘 설치 되었네요.
만약 다른 OS를 사용하시는 경우에는 직접 다운로드하여 설치해주셔야 합니다. (java.net)
여기까지 진행 하셨다면! 다음 단계로 넘어갑니다!!
3. Hadoop 설치하기
Hadoop 2.10.1 버전을 설치합니다. (다운로드링크, 문서링크)
이번 단계에서는 root 계정으로 진행할 예정입니다. 아래 명령어로 루트 계정으로 전환합니다.
sudo su
wget 명령어를 사용할건데, wget명령어가 없네요. 이 명령어 먼저 설치합니다.
yum install wget -y
이제 wget 명령어로 설치합니다.
wget https://archive.apache.org/dist/hadoop/common/hadoop-2.10.1/hadoop-2.10.1.tar.gz

이제 하둡 홈폴더가 될 /usr/local 경로에 압푹을 풀어보겠습니다.
tar -zxvf ./hadoop-2.10.1.tar.gz -C /usr/local/
그리고나서 아래 명령어로 목록을 확인해보면 hadoop-2.10.1 경로를 확인할 수 있습니다.
ls -al /usr/local/

다른 디렉터리는 모두 root소유인데, 방금 만든 하둡만 다르죠! 변경해주겠습니다.
chown -R root:root /usr/local/hadoop-2.10.1/
ls -al /usr/local/

네~~ 이렇게 변경이 완료 되었습니다!
이제 하둡 환경변수를 설정해줍니다.
/etc/profile 경로에 아래 세줄을 추가하고 source 명령어로 설정을 적용해줍니다.
vi /etc/profile
export HADOOP_HOME=/usr/local/hadoop-2.10.1/
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin/:$HADOOP_HOME/sbin
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64
source /etc/profile

하나 더 진행하겠습니다. "/usr/local/hadoop-2.10.1/etc/hadoop/hadoop-env.sh" 이 경로에 JAVA_HOME 을 설정해줄게요!
vim /usr/local/hadoop-2.10.1/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.261-2.6.22.2.amzn2.0.1.x86_64
(맨 아랫줄에 추가)

네! 이제 준비가 완료 되었습니다!!!
다음 단계로 넘어갑니다!
4. Hadoop 설정파일 설정하기
하둡 클러스터를 동작 시키기 위해 설정파일을 수정합니다.
설정파일은 하둡이 설치되어있는 경로($HADOOP_HOME)/etc/hadoop 아래 위치합니다.
설정파일 작성에 오류가 있다면 하둡실행이 불가하기때문에 오타가 있는지 여부를 반드시 확인하세요!
이 단계에서 4개의 파일을 수정합니다.
1. core-site.xml
하둡 시스템 설정 파일로, 로그파일, 네트워크 튜닝, I/O튜닝, 파일시스템튜닝, 압축 등 시스템 설정 파일입니다.
HDFS와 맵리듀스에서 공통적으로 사용할 환경정보를 입력하게 되며, core-default.xml이 기본 값이며, core-site.xml에 설정값이 없는 경우 기본 값을 그대로 사용합니다. (매개변수정보)
vi /usr/local/hadoop-2.10.1/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>

2. hdfs-site.xml
HDFS에서 사용할 환경정보를 설정합니다. hdfs-default.xml이 기본 값이며, hdfs-site.xml에 설정값이 없는 경우 기본 값을 그대로 사용합니다 (매개변수정보)
vi /usr/local/hadoop-2.10.1/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/datanode</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///data/namesecondary</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>

3. yarn-site.xml
Resource Manager 및 Node Manager에 대한 구성을 정의합니다. (매개변수정보)
vi /usr/local/hadoop-2.10.1/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>file:///data/yarn/local</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>file:///data/yarn/logs</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>

4. mapred-site.xml
MapReduce 어플리케이션 설정 파일입니다. (매개변수정보)
vi /usr/local/hadoop-2.10.1/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

이 네개의 설정파일을 모두 위와같이 설정하셨다면! 다음단계로 넘어갑니다!
5. EC2 복제하기
이제 설치된 이 EC2를 3개 더 복제해서! 총 4개의 인스턴스로 하둡 클러스터를 만들겠습니다!
먼저, AWS EC2 콘솔로 이동합니다.
EC2를 선택하고 작업 > 이미지 및 템플릿 > 이미지 생성을 클릭합니다.

이미지 생성 페이지에서, 이미지의 이름과 설명만 작성하신 후 "이미지 생성"을 클릭합니다.

EC2콘솔, 왼쪽 네비게이션 바에서 AMI를 클릭합니다.
시간이 조금 지난 후 확인하시면 avaliable 상태로 변경된것을 볼 수있습니다.
이제, 이 이미지를 선택하고, 상단의 작업 > 시작하기를 클릭합니다.

인스턴스 유형을 선택합니다.
저는 t3.medium을 사용합니다. 이후 "다음:인스턴스 세부정보 구성"을 클릭합니다.

인스턴스 개수를 3으로 변경합니다.
한번에 여러개의 인스턴스를 생성할 수 있습니다. 3으로 변경 되었다면, 검토 및 시작을 클릭합니다.

인스턴스 시작 전 검토 페이지입니다.
잘못된 부분이 있는지 한번 더 검토하고 "시작하기"를 클릭합니다.

시작 후 약간의 시간이 흐르면, 아래 사진처럼 네개의 인스턴스가 운영중인 상태가 됩니다.
저는 구분하기 편하도록 Name을 변경해두었습니다.

자, 이제 다음단계에서는 각 노드에서의 설정을 진행해 봅시다!
너무 길어져서 포스팅을 나눠서 하겠습니다~
다음 호스팅으로 뿅!
Hadoop 하둡! 무작정 따라하기 #2
이 포스팅은 이전포스팅과 이어집니다 :) 지금까지 하나의 노드에 Java와 하둡을 설치하고, 하둡 설정파일을 수정했습니다. 이번 포스팅에서는 각 노드에 맞게 설정을 변경해보도록 하겠습니다 !
1mini2.tistory.com