Install Hadoop , Hadoop 3.3.4 설치

IANAKEDIARY·2022년 12월 17일

brew를 이용해서 설치한 Hadoop의 위치 파악

brew info [설치한 소프트웨어] 를 이용

brew info hadoop

현재 /usr/local/cellar/hadoop/3.3.4/libexec/sbin 위치에서

./start-all.sh

명령어로 Hadoop을 실행시키면 아래와 같은 에러 메세지가 나온다.


그래서 namenode 포멧을 시도해보면 아래와 같은 에러메세지를 마주하게되는데 루트 권한이 없어서 실행이 안된다고 하는 것 같다. 근데 여기서 구글링을 해도 자세한 내용이 나오지 않아서 Hadoop을 지우고 재설치하기로한다.

hedoop-env.sh 위치
/usr/local/Cellar/hadoop/3.3.4/libexec/etc/hadoop


Hadoop 재설치 진행

설치 환경

OS : macOS Monterey v12.5
Hadoop : 3.3.4
java : openjdk version "1.8.0_292"

1. Hadoop 설치

brew install hadoop

만약 brew가 설치되어 있지 않다면 Homebrew 홈페이지에 접속하여 설치한다.

2. 환경변수 수정

# 내가 받은 하둡 버전이 3.3.4 이다. 본인이 설치한 버전으로 수정해서 사용하길 바란다.
cd /usr/local/cellar/hadoop/3.3.4/libexec/etc/hadoop

💡 CLI가 아닌 방법으로 경로를 확인해보고 싶다면 finder 에서 'CMD + SHIFT + . '를 통해 숨김 폴더를 보이게하면 된다.


수정해야 할 파일 목록을 먼저 나열해본다.
1. hadoop-env.sh
2. core-site.xml
3. hdfs-site.xml
4. mapred-site.xml
5. yarn-site.xml

2-1) hadoop-env.sh 수정

open hadoop-env.sh

파일을 열어서 HADOOP_OPTS 부분을 변경한다.
주석이 달린 부분은 hadoop-env.sh 파일 내에 존재 할 것이고 그 부분을 찾아 밑에 아래 주석이 달리지 않은 한 줄을 적어주면 된다.

# Extra Java runtime options for all Hadoop commands. We don't support
# IPv6 yet/still, so by default the preference is set to IPv4.
# export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true"
# For Kerberos debugging, an extended option set logs more information
# export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true -Dsun.security.krb5.debug=true -Dsun.security.spnego.debug"
export HADOOP_OPTS=”-Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc=”

그리고 한 줄 더 추가해줘야 하는 게 있는데 java Home의 디렉토리를 지정해주어야한다.

따라서 최종적으로 아래와 같은 결과가 나온다.

# Extra Java runtime options for all Hadoop commands. We don't support
# IPv6 yet/still, so by default the preference is set to IPv4.
# export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true"
# For Kerberos debugging, an extended option set logs more information
# export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true -Dsun.security.krb5.debug=true -Dsun.security.spnego.debug"
export HADOOP_OPTS=”-Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc=”
export JAVA_HOME="/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home"

본인이 java를 어디에 설치한지 모르겠다면 터미널에 아래와 같이 입력하면 알 수 있다.

/usr/libexec/java_home

위치를 export JAVA_HOME = 뒤에 따옴표와 함께 복사 붙여넣기 해주면된다. 사람마다 경로가 다를 확률이 매우 높다.

2-2) core-site.xml 수정

open core-site.xml

이때 나의 경우에는 위의 명령어를 실행시키면 뜬금없이 어도비 일러스트나 마이크로소프트 워드가 실행되었는데 비슷한 상황이라면 아래 팁을 참고하면 좋다.

💡 xml 파일 CLI로 열기

open core-site.xml -a TextEdit

아래 태그를 복사하여 붙여넣기 후 저장하고 종료한다.

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/Cellar/hadoop/hdfs/tmp</value>
        <description>A base for other temporary directories.</description>
    </property>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

2-3) hdfs-site.xml 수정

open hdfs-site.xml -a TextEdit

아래 태그를 복사하여 붙여넣기 후 저장하고 종료한다.

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

2-4) mapred-site.xml 수정

open mapred-site.xml -a TextEdit

아래 태그를 복사하여 붙여넣기 후 저장하고 종료한다.

<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 -a TextEdit

아래 태그를 복사하여 붙여넣기 후 저장하고 종료한다.

<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_MAPRED_HOME</value>
	</property>
</configuration>

3. Hadoop 실행

3-1) 실행 준비

ssh localhost

위의 명령어를 터미널에 입력했을 때 마지막 접속시간이 안뜨고 Connection refused 가 뜨면 아래 명령어를 입력한다.

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

HDFS 포맷

cd /usr/local/cellar/hadoop/3.3.4/libexec/bin
hdfs namenode -format

❗️❗️ 나의 경우 여기서 문제가 발생했는데 로그를 확인해보면 다음과 같았다.

/usr/local/Cellar/hadoop/3.3.4/libexec/etc/hadoop/hadoop-env.sh: line 93: export: `-Djava.net.preferIPv4Stack=true': not a valid identifier

따라서 로그를 따라서 hadoop-env.sh 쉘을 다시 열었고 해당 부분을 여러번 수정해보면서 다시 포맷을 시도하고 다시 수정하고 다시 시도하면서 최종 해답을 얻었다.

아래와 같이 수정했고, 가끔씩 따옴표가 문제인 경우가 있다.
따옴표를 잘 확인하면서 진행하자.

사용하기 쉽도록 아래 코드를 첨부한다.

# Extra Java runtime options for all Hadoop commands. We don't support
# IPv6 yet/still, so by default the preference is set to IPv4.
# export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true"
# For Kerberos debugging, an extended option set logs more information
# export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true -Dsun.security.krb5.debug=true -Dsun.security.spnego.debug"
export HADOOP_OPTS="${HADOOP_OPTS} -Djava.security.krb5.realm= "
export HADOOP_OPTS="${HADOOP_OPTS} -Djava.security.krb5.kdc= "
export HADOOP_OPTS="${HADOOP_OPTS} -Djava.security.krb5.conf= "
export JAVA_HOME="/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home"

이후 다시 포맷을 진행하면 매끄럽게 진행된다.

cd /usr/local/cellar/hadoop/3.3.4/libexec/bin
hdfs namenode -format

3-2) Hadoop 실행

cd /usr/local/cellar/hadoop/3.3.4/libexec/sbin
./start-all.sh
# 또는
./start-dfs.sh
# 또는
./start-yarn.sh

3-3) 실행 확인

터미널에 jps를 입력하면, 하둡이 정상적으로 실행됨을 확인할 수 있다.

jps

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

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


3-4) 실행 종료

# 현재 경로가 아래의 경로와 다르다면 아래와 같은 경로로 이동한다.
# cd /usr/local/cellar/hadoop/3.3.4/libexec/sbin

# 해당 경로에서 ./start-all.sh 로 실행 해준 것 처럼 ./stop-all.sh 를 실행해주면 된다.

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

cf) vim 종료

Vim에 파일을 저장하고 편집기를 종료하는 명령은 :wq
profile
Database Engineering

0개의 댓글