집에서 학습 목적으로 하둡을 설치해 보기로 했다. 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를 입력하면, 현재 실행되고 있는 서비스를 확인할 수 있다.
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이다. )
각각의 실행화면은 아래와 같다.
오늘은 이렇게 맥에서 하둡을 설치하는 방법에 대해서 알아보았다. 처음에 생각한 가벼운 마음과는 달리 중간에 애를 많이 먹었다. 하지마 잘 실행되는 모습을 보니 나름 뿌듯하다. 이후에 hive와 hue도 설치해야 하는데, 앞길이 조금 막막하다. 하지만, 여기서 끝내면 죽도 밥도 안 되기 때문에, hive와 hue도 계속해서 설치해보도록 하겠다.
'데이터 > 데이터베이스' 카테고리의 다른 글
hive에서 원하는 순서대로 array 만드는 방법은?! (0) | 2022.03.10 |
---|---|
하이브 SQL NULL값 바꾸기 - NVL, COALESCE! (0) | 2022.02.01 |
SQL 칼럼 기준 텍스트 편집 - COLLECT_SET, COLLECT_LIST, CONCAT_WS?! (0) | 2022.02.01 |
하이브(hive) sql - 행(row)을 기준으로 최대값, 최소값 추출하는 방법! (0) | 2022.02.01 |
학습을 위한 가장 쉬운 하둡 설치 방법은? (0) | 2022.01.31 |
SQL에서 문자열 다루기 4종 - 합치기,자르기,찾기,바꾸기 (0) | 2022.01.30 |
SQLite3 기본 문법-CREATE, SELCT, INSERT, DELETE (0) | 2022.01.28 |
MySQL 설치 및 사용법 알아보기 (0) | 2022.01.27 |