'삽질과 열매/Hadoop Ecosystem'에 해당되는 글 2건

  1. 2014.08.11 .pid: Permission denied (DataNode, TaskTracker가 안꺼질때)
  2. 2014.08.11 ssh 공유키 배포 실패, 계속 패스워드 물어볼때

하둡 stop-all.sh 실행시 DataNode, TaskTracker가 안꺼질때



$HADOOP_HOME/conf 디렉터리에서


hadoop-env.sh

hdfs-site.xml

core-site.xml

mapred-site.xml

masters

slaves


위 파일들을 잘못 설정하면 정상적인 스타트업이 안된다. 

이 경우 보통 오타가 문제인데 오타는 찾기도 힘들고 찾을때 힘들일수록 자괴감은 더욱 커진다 -0-


단도직입적으로 이번에 서버3(datanode02)에서 datanode와 tasktracker가 start-all때는 켜지는데 stop-all시에는 꺼지지 않았기 때문에 확실히 오타문제는 아닌거 같았다.. ~0~

그래서 일단 kill -9 pid 로 죽이고나서 다시한번 start-all.sh을 실행 하였다


하둡을 스타트업 시키면 노드들의 스타팅 내역과 결과가 뜬다


start-all.sh

starting namenode, logging to /home/project/hadoop/libexec/../logs/hadoop-project-namenode-namenode.out

datanode02: starting datanode, logging to /home/project/hadoop/libexec/../logs/hadoop-project-datanode-datanode02.out

datanode02: /home/project/hadoop/bin/hadoop-daemon.sh: line 138: /tmp/hadoop-project-datanode.pid: Permission denied

snamenode: starting datanode, logging to /home/project/hadoop/libexec/../logs/hadoop-project-datanode-snamenode.out

snamenode: starting secondarynamenode, logging to /home/project/hadoop/libexec/../logs/hadoop-project-secondarynamenode-snamenode.out

starting jobtracker, logging to /home/project/hadoop/libexec/../logs/hadoop-project-jobtracker-namenode.out

datanode02: starting tasktracker, logging to /home/project/hadoop/libexec/../logs/hadoop-project-tasktracker-datanode02.out

datanode02: /home/project/hadoop/bin/hadoop-daemon.sh: line 138: /tmp/hadoop-project-tasktracker.pid: Permission denied

snamenode: starting tasktracker, logging to /home/project/hadoop/libexec/../logs/hadoop-project-tasktracker-snamenode.out


보통 이 내역만 잘봐도 삽질의 depth가 줄어든다...

내역만 봐서 잘 모르겠거나 이미 콘솔에서 사라진 이전 내역을 보고싶다면 $HADOOP_HOME/logs를 뒤져보면 된다@@


위의 내역을 보면 서버3(datanode02)의 하둡 대몬이 아래 두 곳에 datanode와 tasktracker의 pid파일을 생성하고 싶어하는데 권한이 거부된다고 나온다. 


/tmp/hadoop-project-datanode.pid

/tmp/hadoop-project-tasktracker.pid


그렇기때문에 start-all때 일단 켜지긴 하지만 stop-all 때는 pid를 몰라서(혹은 이전에 저장된 잘못된 pid를 가져와서) 종료를 못하는 상황인 것 같다

그래서 /home/project/hadoop/bin/hadoop-daemon.sh 파일의 line 138근처를 보다가 좀 위로 올라가보니 hadoop_pid_dir가 디폴트로 /tmp로 지정된다는 의미의 if문이 있었다


 if [ "$HADOOP_PID_DIR" = "" ]; then

       HADOOP_PID_DIR=/tmp

 fi


HADOOP_PID_DIR를 project 홈디렉토리 하위 어딘가로 바꿔줘야 하는데..

여기서 if문 안에 then절의 내용을 바꿔 주거나 (비추천)

아니면  hadoop-env.sh의 export HADOOP_PID_DIR=/tmp 환경변수를 주석을 풀고 바꿔준다


설정을 바꾼 후 다시 start-all.sh과 stop-all.sh을 실행하여 정상작동 여부를 확인한다


Posted by null.
,




hadoop 설치 전 세팅으로 ssh 공유키 배포 실패



ssh 공유키를 생성하고 배포하는 방법이 몇가지 있다

하나는 ssh 키생성 후 자신의 id_rsa.pub을 authorized_keys로 복사하고 나서 scp 명령으로 배포하는 방법

또 다른 방법은 ssh-copy-id 명령으로 자신의 id_rsa.pub을 상대 서버의 authorized_keys로 바로 복사하는 방법


아, 맞다. 하둡 설치전 공유키 생성하고 배포하는 이유는 여기서 설명하지 않는다

다만 나 같은 맨땅에헤딩어들이 언젠간 구글링 끝에 찾게될 ssh 공유키 배포 실패로인한 나의 삽질을 기록하겠다


단도직입적으로 내가 삽질하게 된 이유는 첫째 방법이 예전에 먹힌적이 있었고 사실 그 방법밖에 몰랐기 때문이다


authorized_keys 파일에는 모든 서버의 공개키가 잘 복사되어있는데 ssh 접속시 계속 password를 물어봤다.

디렉터리랑 파일의 권한을 파격적으로 777로도 바꿔보고 이것 저것 다 해봐도 안되서 나와 비슷한 삽질의 흔적을 찾기 위해 구글링 했는데


/etc/ssh/sshd_config 파일에 아래의 항목에 주석도 풀어 주면 된다더라

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile     .ssh/authorized_keys


근데 풀어봐도 안됬다...



여튼 해결 못하고 멘토님께 도움을 청했는데 멘토님도 검색을 하셨다..

구글 말고 네이버에서 검색하셨는데 듣도보도 못한 ssh-copy-id 명령어가 나왔고

결과적으로 두번째 방법인 ssh-copy-id로 해결했다



이제부터 두번째 방법을 이용한 ssh 공개키 방법을 설명한다

참고로 ssh-copy-id 명령어 사용법은 다른 블로그가 더 자세히 설명 되어 있을 수 있다.




1. 아래의 명령을 각 서버에서 실행하여 공개키를 생성한다

ssh-keygen -t rsa


명령을 실행하면 홈 디렉터리에 아래의 두 파일이 포함된 .ssh 디렉터리가 생성된다 

id_rsa

id_rsa.pub



2. 서버가 s1, s2, s3 총 3대로 구성되어있으면 각 서버에다(자신의 서버 미포함) 아래의 명령으로 공유키를 복사해준다


ssh-copy-id user@s1

ssh-copy-id user@s2

ssh-copy-id user@s3


명령이 실행되면 명령이 실행되는 서버의 id_rsa.pub이 상대 서버의 .ssh 디렉터리에 authorized_keys 파일로 복사 생성된다

즉 s1에서 ssh-copy-id user@s2 하면 s2서버의 user 홈디렉터리 .ssh 디렉터리내부에 authorized_keys가 복사 생성되며 이미 생성되어진 파일이있으면 복사된 내용이 덧 붙여진다



3. more .ssh/authorized_keys 명령을 통해 복사된 공유키 내용에 계정@호스트명을 확인한다


<s1의 authorized_keys 내용 확인>

LsfadfHGLSlkjesfaEHJKKEfAdsfaHAHASDFdfaahgaGDr7owEAXJe1S3wdEdwB3Eb6SPMDiLzgLgLmX+jJFupYJe1S3wdE/dw

(생략)

HmgidOq5G2crYGQw6b9sHhCUxSqr/onNi90DSA3LxPmbjtiaZ9wchdPMDiLzgLgLmX+jJFupY2AVA3sAHASDFdfaahgaGDr7oLVllk6f576gMdpuE2ekljK1PumqnUI0GQ== user@s2


LsfadfHGLSlkjesfaEHJKKEfAdsfaHAHASDFdfaahgaGDr7owEAXJe1S3wdEdwB3Eb6SPMDiLzgLgLmX+jJFupYJe1S3wdE/dw

(생략)

HmgidOq5G2crYGQw6b9sHhCUxSqr/onNi90DSA3LxPmbjtiaZ9wchdPMDiLzgLgLmX+jJFupY2AVA3sAHASDFdfaahgaGDr7oLVl

k6f576gMdpuE2ekljK1PumqnUI0GQ== user@s3


4. ssh 명령실행시 password를 묻지않으면 ssh 공유키 배포가 정상적으로 완료된 것이다
ssh user@s2  
ssh user@s3




Posted by null.
,