[M1] Mac OS에 하둡(Hadoop) 설치

[M1] Mac OS에 하둡(Hadoop) 설치 #

설치 개요 #

[ 설치 목적 ] 하둡의 맵리듀스와 분산 파일 시스템인 HDFS를 경험해보자!
[ 설치 환경 ]
OS : [M1] MacOS Monterey 12.0.1
Hadoop : 3.3.2

[ 기초 배경지식 ]
  하둡 맵리듀스는 수천개의 노드로 구성된 클러스터에서 병렬로 데이터를 처리하는 오픈소스 프레임워크이다. 하지만 개인이 클러스터 환경을 갖추기 어려우니, 하둡에서 Single node 설치 방법을 제공해준다.

[ 설치 링크 ]
  (1) Cluster Setup
  (2) Single Node Setup

나는 Single Node Setup을 따르며
(1) Local (Standalone) Mode (2) Pseudo-Distributed Mode (3) Fully-Distributed Mode
3가지 모드 중 Pseudo-Distributed Mode 로 설치하며 Yarn 사용을 위한 세팅도 진행한다.

[ 사전 체크 항목 ]
  Supported platforms : 기본적으로 Linux/GNU/Window 지원
  Required software :
    (1) 지원 Java 버전 설치 : Java 8 과 11 지원하지만, compile시 Java 11은 지원하지 않는다.
    (2) ssh 설치

STEP1. 하둡 설치 #

터미널에 명령 입력

brew install hadoop

만약 brew가 없다면 Homebrew에 접속하여 설치해준다.
만약 brew가 아닌 직접 설치를 원한다면 Hadoop에서 원하는 버전의 파일을 다운받고 압축을 해제해주면 설치가 완료된다.

STEP2. 환경변수 수정 #

## 하둡의 버전과 설치된 경로를 확인
brew info hadoop
## 경로는 위 명령어로 확인 및 하둡 버전 X.X.X는 본인이 설치한 버전으로 수정
cd /opt/homebrew/Cellar/hadoop/3.3.2

Finder에서 저 경로가 보이지 않았지만, 터미널에서 명령어 치니 경로가 잘 들어가지긴 했다.

그래도 직접 Finder에서 보기 위해서 Finder에서 ‘Cmd+Shift+G’ 를 치니 경로 검색 창이 떴고 그걸로 들어가니 Finder에서 볼 수 있었다. 앞으로 수정해야할 하위 파일들은 아래 경로에 있으니 들어가준다.

cd libexec/etc/hadoop

앞으로 수정해야 할 파일들

(1) hadoop-env.sh (하둡 사용)
(2) core-site.xml (Pseudo-Distributed Mode)
(3) hdfs-site.xml (Pseudo-Distributed Mode)
(4) mapred-site.xml (YARN)
(5) yarn-site.xml (YARN)

2-1. hadoop-env.sh 변경 #

open hadoop-env.sh

파일을 열고 아래 명령어로 본인의 자바 경로를 확인 후 나온 경로를 추가해준다.

## 자바 경로 확인
/usr/libexec/java_home
## 버전이 여러개라면 버전 특정하기
/usr/libexec/java_home -v8
export JAVA_HOME="/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home"

아래 그림처럼 그냥 맨 마지막줄에 추가해주면 된다. hadoop_env.png

이제, 하둡 클러스터를 사용할 준비가 완료됐다.
하둡 최상위 경로에서 아래 명령어를 치면 정상 실행되는지 확인 가능하다!

bin/hadoop

Single Node 지만 다음 3가지 모드가 지원되며 내가 사용하고 싶은 Pseudo-Distributed Mode를 위해 추가적으로 환경변수를 수정하자
(1) Local (Standalone) Mode (2) Pseudo-Distributed Mode (3) Fully-Distributed Mode

Pseudo-Distributed Mode란? : 각 하둡 daemon이 각각의 분리된 Java 프로세스에서 실행되는 모드로, standalone 모드와 다르게 가상으로 분산시스템을 경험할 수 있다.

2-2. core-site.xml 변경 #

open core-site.xml

파일을 열어 태그에 복사하여 넣어준다.

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>

2-3. hdfs-site.xml 변경 #

open hdfs-site.xml

파일을 열어 태그에 복사하여 넣어준다.

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

이제 로컬에서 맵리듀스를 실행해 볼 수 있지만,
YARN으로 맵리듀스 및 리소스매니저와 노드매니저 daemon 을 실행해보기 위해서 추가적으로 더 환경변수를 수정해준다.

2-4. mapred-site.xml 변경 #

open 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>

2-5. yarn-site.xml 변경 #

open yarn-site.xml

파일을 열어 태그에 복사하여 넣어준다.

<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.env-whitelist</name>
    <value
      >JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value
    >
  </property>
</configuration>

STEP3. 하둡 실행 #

3-1. 실행 전 준비 #

ssh localhost

ssh 를 한번 더 체크해보고 만약 마지막 접속 시간이 뜨지 않으면 페이지 상단에 “ssh 설치 여부 및 권한 확인"을 확인해보기 바란다.

이제 HDFS 로 포맷한다.

## 본인 하둡 경로 들어가기
cd /opt/homebrew/Cellar/hadoop/3.3.2
## 파일시스템 포맷
hdfs namenode -format

3-2. 하둡 실행 #

cd /opt/homebrew/Cellar/hadoop/3.3.2/libexec
sbin/start-all.sh
# 또는 로컬에서 맵리듀스 실행
sbin/start-dfs.sh
# 또는 yarn에서 맵리듀스 실행
sbin/start-yarn.sh

위 명령어를 입력해주면 정상적으로 실행된다.

또한 맵리듀스 실행을 위해서 HDFS 디렉토리가 필요하므로 만들어둔다.

# 경로는 하둡 최상위 경로에서 실행
# cd /opt/homebrew/Cellar/hadoop/3.3.2
bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/<username>

3-3. 실행 확인 #

jps

jps 를 터미널에 입력해주면, 하둡이 정상 설치 및 실행되고 있음을 아래와 같이 보여준다.

35906 DataNode
36274 NodeManager
38132 SecondaryNameNode
38456 Jps
35800 NameNode
36175 ResourceManager

그럼 이제 localhost 로 접속해서 확인해보자

Cluster status : http://localhost:8088
HDFS status : http://localhost:9870
Secondary NameNode status : http://localhost:9868

[ 실행 화면 예시 ]

Yarn.png
HDFS_status.png
Secondary_status.png

3-4. 실행 종료 #

## 만약 경로가 하둡 최상단 경로가 아니라면 다시 들어가준다.
## 하지만 해당 경로에서 ./start-all.sh 로 실행 해 줬기 때문에
## 그냥 아래 ./stop-all.sh만 실행해주면 된다.

sbin/stop-all.sh
# 또는
sbin/stop-dfs.sh
# 또는
sbin/stop-yarn.sh

Reference #

Hadoop: Setting up a Single Node Cluster
Installing Hadoop on a Mac
macOS에서 Hadoop 설치하기