집에서 학습 목적으로 하둡을 설치해 보기로 했다. DB마다 SQL문법이 달라 매번 바뀌는 것도 귀찮기도 하고, 테스트를 해보기도 좋을 것 같다는 얄팍(?)한 생각에서 시작됐다. 하지만 설치를 시작하고 얼마 안 돼 후회하기 시작했다. 설치가 일사천리로 다 잘 되면 문제가 없지만 언제나 예외와 문제가 발생한다.

 

오늘은 맥(mac)에서 하둡(hadoop) 설치하는 방법에 대해서 알아보도록 하겠다.

 

 

아파치 하둡

 

 

인터넷을 검색해보면 하둡 설치와 관련된 문서들을 금방 찾을 수 있다. 하지만 설치하면서 발생하는 에러에 대한 대처는 찾기 어렵다. 그래서 필자의 맥에 하둡을 설치하면서 발생한 에러와 대처법들을 공유하고자 한다.

 

 

1. 하둡 설치

하둡을 설치하는 방법은 여러가지가 있지만, 맥의 경우 brew를 이용하여 좀 더 쉽게 설치할 수 있다. 브류는 오픈 소스 소프트웨어 패키지 관리 시스템으로 설치를 쉽게 도와 준다. brew install hadoop을 실행하면, 하둡을 설치할 수 있다.

 

brew install hadoop

 

 

hadoop을 설치중에 아래와 같은 에러가 발생하였다.

 

"Error: The `brew link` step did not complete successfully. The formula built, but is not symlinked into /usr/local. Could not symlink sbin/FederationStateStore. /usr/local/sbin is not writable."

 


뜻을 보니 /usr/local/sbin 폴더를 쓸 수 없다는 애기인 것 같다. Finder를 이용해서 /usr/local 폴더에 가니 sbin폴더가 없다. 그냥 Finder에서 sbin 폴더를 만들어주면 해결된다.

 

 

2. 하둡 설정

하둡 설정을 위해서 관련된 파일을 수정해야 한다. 왜 이렇게 수정하는지 알면 좋으나, 정확한 이유는 잘 모르겠다. 일단 수정해보자. 수정할  파일은 총 4개이다. hadoop-env.sh, Core-site.xml, mapred-site.xml, hdfs-site.xml이다.

 

해당 파일의 위치는 "/usr⁩/⁨local⁩/Cellar⁩/hadoop⁩/3.1.1⁩/libexec⁩/etc⁩"이다.

 

먼저, hadoop-env.sh부터 살펴보자.

 

-기존: export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"
-변경: export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc="

 


하지만, 해당 파일의 위의 내용이 없었던 듯 하다. 그냥 변경에 해당하는 내용을 추가로 기재했다.

 


다음은 Core-site.xml이다.

 

[ 아래 부분을 추가로 기재해야 한다 ]

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



다음 mapred-site.xml이다.


[ 아래 부분을 추가 기재한다 ]

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9010</value>
</property>
</configuration>

 


마지막은 hdfs-site.xml이다.

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

 

 

이제 설정이 모두 끝났다. 하둡을 실행해 보도록 하자.

 

 

3. 하둡실행

하둡을 실행하기 전에, 하둡 파일 시스템으로 포맷을 해야 한다. 아래와 같이 입력하여 하둡 파일 시스템으로 포맷한다.

 

hdfs namenode -format

 


위의 명령어로 하둡 파일 시스템으로 포맷을 해 주고, 아래와 ssh key를 생성하고 사용한다.

 

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 

 

이제 하둡을 실행해보자. 아래와 같이 실행하면 하둡을 띄울 수 있다.

 

/usr/local/Cellar/hadoop/3.1.1/sbin/start-dfs.sh

 


"localhost: ssh: connect to host localhost port 22: Connection refused" 라는 에러가 발생한다. 원격 로그인을 허용하지 않았을 경우, 위와 같은 에러가 발생한다. 환경설정의 [공유]에 들어가면, 중간에 원격 로그인이라고 있다. 클릭하여 원격 로그인을 허용하도록 하자.

원격 로그인 허용

 

 

다시 start-dfs.sh로 실행하니, warning이 뜬다.

"2018-12-16 09:22:37,400 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable"

 


이는 64비트 운영체제에서 32비트 하둡을 실행하기 때문에 발생하는 에러라고 한다. 인터넷을 검색해보니 해결방법이 없지는 않으나, 크게 중요한 문제는 아니라고 한다. 실제로 이런 warning이 떠도 실행은 잘 된다.

 


하둡을 실행하고 종료하는 명령어는 아래와 같다. 귀찮으면 start-all로 실행해도 된다.

 

1. 실행
> /usr/local/Cellar/hadoop/3.1.1/sbin/start-dfs.sh
> /usr/local/Cellar/hadoop/3.1.1/sbin/start-yarn.sh

2. 종료
> /usr/local/Cellar/hadoop/3.1.1/sbin/stop-dfs.sh
> /usr/local/Cellar/hadoop/3.1.1/sbin/stop-yarn.sh

 


정상적으로 실행된 것인지 궁금하다면, jps를 입력하면 된다. jps를 입력하면, 현재 실행되고 있는 서비스를 확인할 수 있다.

 

JPS 실행

 

 

localhost로 하둡을 띄운 것이기 때문에, localhost로 접속해서 하둡의 상태를 체크할 수 있다. hadoop의 상태를 체크할 수 있는 주소는 아래와 같다.

 

- Cluster status: http://localhost:8088
- HDFS status: http://localhost:9870 ( 3.x는 9870, 2.x는 50070이다. )
- Secondary NameNode status: http://localhost:9868 ( 3.x는 9868, 2.x는 50090이다. )

 

 

각각의 실행화면은 아래와 같다.

 

하둡 클러스터 상태

 

파일 시스템 상태

 

Secondary Status

 

 

오늘은 이렇게 맥에서 하둡을 설치하는 방법에 대해서 알아보았다. 처음에 생각한 가벼운 마음과는 달리 중간에 애를 많이 먹었다. 하지마 잘 실행되는 모습을 보니 나름 뿌듯하다. 이후에 hive와 hue도 설치해야 하는데, 앞길이 조금 막막하다. 하지만, 여기서 끝내면 죽도 밥도 안 되기 때문에, hive와 hue도 계속해서 설치해보도록 하겠다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기