해당 실습은 클라우드 환경에서 Ubuntu 18.04 VM을 하나 띄워서 진행했다.
우선 JDK와 Maven을 설치해준다.
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install openjdk-8-jdk
sudo apt install maven
hadoop 3.3.0 다운로드
Hadoop 3.3.0 이 링크에서 tar.gz의 링크를 wget으로 받아온 후 압축을 해제해준다.
tar xvfz hadoop-3.3.0.tar.gz
하둡 데몬을 띄우기 전에 설정해야할 것이 있다 localhost에 ssh로 로그인이 가능해야 한다.
ssh localhost
# 로그인이 되지 않는 경우는 아래 명령어들을 수행한다.
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
아래와 같이 ssh로 정상적으로 접근이 가능해야 한다.
하둡 config 디렉토리로 이동 후 몇 가지 파일들에 설정을 해줘야 데몬을 띄울 수 있다.
하둡 config 디렉토리 경로는 hadoop-3.3.0/etc/hadoop
hadoop-env.sh
여기서 설치한 JAVA와 HADOOP 그리고 HADOOP_CONF_DIR의 경로를 설정해줘야 한다.
주석 처리되어 있는 것을 해제하고 알맞은 내 경로로 바꿔준다.
JAVA같은 경우 openjdk-8을 받았으면 아래 사진과 경로가 같을 것이다.
결정적으로 하둡은 core,hdfs,yarn xml설정을 해줘야 필요한 데몬들이 띄워지고 하둡이 완전히 작동하게 된다.
설정파일 수정
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml
하둡은 데이터를 저장할때 원본 포함 3개의 복제본을 생성한다.
하지만 로컬 pc에서 데몬들을 하나씩만 띄울 것이기 때문에 작업하면 replication이 정상적으로 여러개 복제되지 않는다. 때문에 replication은 하나만 설정
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
하둡은 데몬을 실행할 때 처음에 네임노드를 format 해야한다.
네임노드는 fs이미지(실제 hadoop 전체 파일시스템의 구조를 스냅샷 형태로 저장하는 파일)를 관리한다.
fs 이미지에는 가장 최근의 하둡의 시스템의 메타데이터 정보들이 스냅샷으로 저장되어 있다. 변경사항이 발생했을 시 edits 로그도 계속 남기게 되고 주기적으로 이미지 병합을 해서 항상 최신의 fs이미지를 스냅샷 형태로 갖고 있게 관리된다.
이 때문에 하둡 네임노드 데몬을 내렸다가 올려도 전체 파일시스템의 최신 메타데이터 정보들을 불러올 수 있게 되는 것인데 format을 해주면 이 스냅샷과 로그들이 저장되는 디렉토리를 생성한다.
네임노드 format
bin/hdfs namenode –format
y or n 선택하는게 나오고 y를 입력해주면 format이 완료된다.
dfs 데몬 실행
sbin/start-dfs.sh
localhost:9870 접속
(local 환경이 전제라 localhost:9870이지만 난 Ubuntu VM을 띄워서 진행했으므로 VM External ip:9870으로 접속할 것이다.)
active로 되어 있으면 dfs 데몬이 잘 띄워져 있다는 뜻
summary에서 live nodes가 1이어야 정상
우린 hdfs 설정파일에서 replication을 1로 설정했기 때문
이제 MapReduce 데몬을 띄울 것이다.
설정파일 수정
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/* </value>
</property>
</configuration>
MapReduce 데몬 실행
sbin/start-yarn.sh
localhost:8088 접속
(마찬가지로 VM External ip:8088)
[Hadoop 참고]
Hadoop 관련 포스팅은 SKplanet Tacademy 유튜브의 아파치 하둡 입문 영상을 참고하였습니다.