Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
일단 기본적인 설정이나 설치법은 검색하시면 많이 나옵니다. 그래서 그것들은 제외하고,
제가 겪었던 찾기 힘든 정보들만 서술합니다.
1. rsa 공개키 인증
hadoop의 특성상 node들사이의 통신이 이루어져야 합니다. Public key authorization을 이용해서 암호없이
서로 통신할 수 있도록 합니다. 그런데 방법이 검색해보면 이것저것 나오는데, 몇 개 시도해보면서 해맨 결과
아래와 같은 방법이 가장 좋은거 같습니다. 그리고 편하죠;
공개키가 제대로 안되어 있으면 permission denied 와 같은 error가 발생합니다. Master node에서 slave node들로
ssh 연결을 했을 때 비번을 묻지 않고 바로 연결이 되면 설정이 제대로 된 겁니다.
$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/udanax/.ssh/id_dsa):
Created directory '/home/udanax/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/udanax/.ssh/id_dsa.
Your public key has been saved in /home/udanax/.ssh/id_dsa.pub.
The key fingerprint is: blah~ blah~
$ _
$ cat ~/.ssh/id_dsa.pub | ssh id@host "cat >> .ssh/authorized_keys"
password: enter the password
$ _
2. Configure 파일
설치법마다 다르게 configure 파일 3개(site-core, hdfs, mapred 등)을 설정하는데 사실
기본적으로 필요한 property는 주소에 관련된 부분뿐입니다. 나머지는 default로 돌려도 소형 cluster에서는
그닥 문제가 없는거 같네요. apache에 가보면 lager cluster를 node 900개 정도로 보고 example configure를 올려놨기
때문에;
3. Incompatible namespaceIDs
namenode의 문제입니다. 검색하면 나오지만 dfs/data/의 data를 모두 삭제하고 namenode를 다시 format후에 실행하면
됩니다. 다만! 주의 할점은 master에서만 하면 되는게 아니라 모든 node에 대해서 다 해줘야 한다는 겁니다 -_-.. 전 이걸
몰라서 한참 고생했네요; cssh나 puttycs, xshell의 명령어 등을 통해 모든 node에 대해 한번에 실행해주고, master
에서 namenode를 format하고 다시 실행시키면 됩니다.(물론 그 전에 정지시켜놔야겟죠?;)
4. Connection refused,
정말 짜증 나는 문제인데..주소를 ip말고 hostname등으로 해주시는것 말고는 크게 문제 될건 없어보이지만,
가장 주의할 점은 어떤 configure 파일을 수정했으면 단순히 master에만 있으면 되는게 아니라 모든 slave node 들에
전부 다시 배포해야합니다. 그리고 namenode만 format을 하면 되는게 아니라 위의 3번과
같은 과정을 다시 거쳐야합니다. (모든 node들에 대해 dfs/data 삭제 -> 다시 namenode 포맷 -> 실행)
5. Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.
이제 설치가 다 되고 끝난 줄 알았지만! 예제를 실행시켜보니 map은 되는데 reduce 16% 과정에서 뻗으면서 위와 같은
에러가 발생합니다 -_-.. 검색결과가 많이 나오는거보니 흔한 에러 같은데 크게 해결책은 2가지가 나옵니다. Property에
"tasktracker.http.threads" 가 적어서 그런거니 400으로 늘리라는 것과 /etc/hosts와 /etc/hostname을 match 시키라는 거죠.
일단 해본결과 저는 2가지 모두 문제가 아니었습니다; 사실 etc/hostname은 없어도 되더군요. 전 /etc/hosts만 모든
node들을 일치시켰거든요.
외국 사이트들을 몇페이지 뒤져보다보니, 저 문제가 node 들간의 통신 문제라는 의견이 있더군요. 그래서 방화벽 port를
열어야한답니다. 결국 방화벽 문제가 맞습니다; 모든 node들에 대해서 이것도 필요한 port를 열어주셔야합니다.
일단 테스트하려면 방화벽을 해제시켜서 문제가 맞는지 확인하시기 바랍니다.
6. start 순서!
job-tracker에서 node를 5개가 아니라 0개로 인식하는 에러가 있었습니다. 겨우 datanode를 살려놓고 나니까 이런 문제가
생긴거죠. 문제는 start-dfs.sh 후에 start-mapred.sh를 해주셔야합니다. start-mapred.sh를 하면 datanode가 없기 때문에
인식을 못하는거죠..그냥 속편하게 start-all.sh 를 합시다.
6. Log를 확인하자!!
문제가 생겨서 에러가 뜨거나 원하는 결과가 안나오면 항상 log를 확인하시기 바랍니다. 각 node들마다 각자 log를 가지고
있습니다. log의 에러문제를 구글에서 검색해서 보다보면 결국 원하는 해답을 찾게 됩니다..수많은 삽질과 함께 ㅠㅠ
7. 제대로 동작하는지 확인하는 방법
MasterAddress:50070 은 datanode에 대해서 확인할 수 있습니다. Livenode에 연결한 갯수의 node가 모두 떠야합니다.
MasterAddress:50030 은 job-tracker에 대해서 확인할 수 있습니다. Cluster summary에 연결한 node가 모두 정상적으로
떠야하고, job 실행 시 여기에 진행상황, 결과 등이 나타납니다.
8. Livenode가 0또는 1인 경우
Data node들이 제대로 동작을 안하는 경우입니다. 설정이 잘못되서 에러가 난거죠. 각 data node 들의 log를 참조하셔서
확인하셔야 합니다. 저같은 경우에는 3번의 문제였습니다.
9. hadoop namenode -format은 stop-all.sh을 수행하여 데몬을 내려놓고 해주서야 함......
댓글 0
번호 | 제목 | 날짜 | 조회 수 |
---|---|---|---|
10 | HBase 설치하기 – Pseudo-distributed | 2013.03.12 | 2901 |
9 | org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-root/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible. | 2013.03.11 | 14910 |
» | hadoop설치시 참고사항 | 2013.03.08 | 2549 |
7 | hadoop 설치(3대) | 2013.03.07 | 2735 |
6 | Hadoop Cluster 설치 (Hadoop+Zookeeper+Hbase) | 2013.03.07 | 4165 |
5 | ExWordCount jar파일 | 2013.03.06 | 1683 |
4 | 이클립스에서 생성한 jar 파일 hadoop 으로 실행하기 | 2013.03.06 | 3301 |
3 | Hadoop wordcount 소스 작성 | 2013.03.06 | 2280 |
2 | Hadoop 설치 및 시작하기 | 2013.03.06 | 2303 |
1 | 메이븐 (maven) 설치 및 이클립스 연동하기 | 2013.03.06 | 2697 |