Database - Hadoop 설치 및 환경 설정(MacOS)

HyojinKo·2022년 10월 28일
0

Database

목록 보기
1/2

SSH 확인

1. Terminal 에서 ifconfig 명령어를 통해 host name 확인

ifconfig를 입력하면 나오는 결과 중 en0에서 사진에 표시한 부분이 host name이다.

% ifconfig

2. 권한 부여

(1). 설정 > 공유 > 원격 로그인 선택 > 모든 사용자 접근 허용 > +를 눌러 사용자 추가

3. SSH 실행

위에서 얻은 host name을 활용해 ssh를 이와 같이 실행시켜주면 된다.

% ssh 사용자id@hostName

예를 들어, 사용자 이릉이 hyojin이고 local host의 주소가 127.0.0.1일때,

ssh hyojin@127.0.0.1

을 입력하고 비밀번호를 입력해주면, 로그인에 성공했다는 안내가 뜬다.

Homebrew를 사용해 hadoop 설치

1. install hadoop

$ brew install hadoop

하지만 나는 이전 시도에서 오류가 떠 hadoop 디렉토리를 삭제했더니
Error: No such file or directory - /opt/homebrew/var/homebrew/linked/hadoop
이런 오류가 떠서...ㅠ

% brew cleanup

을 한 후에 다시 설치해주었다...

2. hadoop 환경 구축

(1) hadoop 설치 위치 확인

% brew info hadoop

를 입력해서 나오는 hadoop의 설치 위치를 확인한다.

보통 /usr/local/... 어쩌구에 설치 되는 경우가 많은데, 나는 opt/homebrew/Cellar/...여기에 설치가 되어있었다. 꼭 그대로 따라하지 말고 각자 로컬에서의 설치 위치 확인하고 경로 바꿔주기!

(2) hadoop 설치 경로로 이동

%  cd /opt/homebrew/Cellar/hadoop/x.x.x 
# x.x.x는 버전이니 각자 로컬에 설치된 버전에 맞게 바꿔주기

(3) 환경 변수 파일 수정

  • hadoop-env.sh
  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml
  • yarn-site.xml
    이렇게 총 다섯개의 파일을 수정해야한다.
    위 링크 참고.

일단

% cd /opt/homebrew/Cellar/hadoop/3.3.4/libexec/etc/hadoop

으로 해당 파일들이 있는 디렉토리로 이동해준다.

i) hadoop-env.sh
나는 vim 명령어로 수정하였는데 이것보단

open hadoop-env.sh	

로 파일을 열어 수정하는 편이 쉽다...

일단 java의 위치를 먼저 확인해줘야한다.

% /usr/libexec/java_home

나 같은 경우는 "/Users/kohyojin/Library/Java/JavaVirtualMachines/openjdk-16.0.1/Contents/Home" 여기에 설치되어 있었다.

export JAVA_HOME="/Users/kohyojin/Library/Java/JavaVirtualMachines/openjdk-16.0.1/Contents/Home"

그렇게 얻은 경로를 이와 같이 hadoop-env.sh 파일의 맨 마지막줄에 추가해준다.

이렇게 그냥 맨 마지막줄에 넣어주면 됨

ii) core-site.xml
마찬가지로

% open core-site.xml

으로 core-site.xml을 열어주고,

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

위 코드를 그대로 넣어준다.

iii) hdfs-site.xml

% open hdfs-site.xml

열어주고 ...

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

추가해줘요...

iv) 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>

추가해줘요...

v) 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>

추가해줘요..
(그냥 처음부터 추가 돼서 나왔으면 어땠을까 싶어...)

3. hadoop 실행

(1) ssh 상태 확인
아까도 했지만 혹시 모르니 ssh의 상태 확인

% ssh localhost

를 입력했을때 마지막 접속 시간이 뜨면 정상적으로 작동한다는 얘기!
안 된다면 권한을 다시 확인해줘야겠죠?

(2) namenode 포맷

다시 hadoop의 루트 노드로 이동해준 후, namenode를 포맷한다

% cd /opt/homebrew/Cellar/hadoop/3.3.4
% hdfs namenode -format

아까 여기서 왜인지 모르게 오류가 계속 떠서... hadoop을 uninstall하고 다시 처음부터 했더니 됨 ...
아마 configuration이나 java path 추가 과정에서 뭔가 오류가 있었던 것 같다

(3) 실행
실행 파일이 있는 "/opt/homebrew/Cellar/hadoop/3.3.4/libexec/sbin"으로 이동해줘야한다.

% cd /opt/homebrew/Cellar/hadoop/3.3.4/libexec/sbin

이후 세가지 파일들을 방금 이동한 위치에서 실행시켜준다

% start-all.sh
% start-dfs.sh
% start-yarn.sh

Warning이 겁나 떠서 쫄렸다능....

(4) MapReduce를 위한 directory 생성
다시 hadoop의 루트 노드로 이동해주고 디렉토리 두개를 생성해준다

cd /opt/homebrew/Cellar/hadoop/3.3.2

bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/hyojinko # 마지막엔 각자의 username 넣어주기

(5) 실행 확인
jps를 통해 실행이 정상적으로 되었는지 확인해준다.

% jps

그럼 이런 결과가 나온다!!! 흑

4. hadoop 접속

아래 주소를 통해 local host로 접속해준다!
Cluster status : http://localhost:8088

HDFS status : http://localhost:9870

Secondary NameNode status : http://localhost:9868

5. 종료

% cd libexec/sbin
% stop-all.sh # 모두 종료
% stop-dfs.sh
% stop-yarn.sh
profile
재밌나?

0개의 댓글