Google AdSense (text)

hidden logo stop

Moving

거지 같은 이글루스 광고노출 정책이 싫어서,
새 보금자리(http://blog.leocat.kr/)로 이사감.

[Hadoop] 서버 재시작 시 namenode 시작 안되는 현상 Computer & Program

hadoop을 설치하고 Single Node Setup(1.2.1 버전) 등의 따라하기 문서를 따라하면 정말 잘 된다. 그런데 시스템을 재시작하면 namenode가 정상적으로 시작되지 못 하고 바보가 되어 버린다. namenode가 정상적이지 않아서 아래 관리(?) 페이지가 열리지 않는다.

http://[[IP]]:50070/


원인은 namenode가 사라졌기 때문이다. 처음 설치하고 문서를 따라하면서 다음 명령으로 namenode를 생성했는데, 생성되는 namenode의 경로가 "/tmp" 아래이다. /tmp 경로는 임시경로이기 때문에 시스템이 재시작하면서 날려버리고, 그 안에 있는 namenode가 사라지는 것이다. TㅅT

$ hadoop namenode -format
13/08/08 13:59:33 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode

.. 중간 생략 ..

13/08/08 13:59:33 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/tmp/hadoop-[[USERNAME]]/dfs/name/current/edits
13/08/08 13:59:33 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/tmp/hadoop-[[USERNAME]]/dfs/name/current/edits
13/08/08 13:59:33 INFO common.Storage: Storage directory /tmp/hadoop-[[USERNAME]]/dfs/name has been successfully formatted.
13/08/08 13:59:33 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at [[HOST]]
************************************************************/


그러면 시스템이 다시 시작돼도 데이터가 날아가지 않게 namenode가 생성되는 경로를 바꿔주자. 몇 가지 방법이 있을 수 있다. 원하는 입맛대로 하나 골라서 쓰면 될듯 싶다.



1. hadoop의 모든 임시 경로 변경

우선 첫번째로는 hadoop에서 사용하는 모든 temp 경로를 바꿔주는 방법이 있다. conf/core-site.xml 파일에 다음 내용을 추가해 준다. (hadoop 예전 버전에서는 conf/hadoop-site.xml 파일이었는데 conf/core-site.xml로 변경됐다.) hadoop.tmp.dir은 hadoop에서 사용하는 모든 임시 경로의 상위 경로를 나타낸다.

<property>
    <name>hadoop.tmp.dir</name>
    <value>/data/hadoop</value>
</property>


그리고 다시 namenode를 생성하면 아래와 같이 경로가 바뀐 것을 볼 수 있다. 하위에 생성되는 dfs 경로는 HDFS 관련된 내용이 저장되는 경로이고, bin/start-all.sh로 hadoop을 시작시키면 mapred라는 MR 동작 관련 임시 파일을 담는 경로도 생성되는 것을 볼 수 있다.

$ hadoop namenode -format
13/08/08 15:04:13 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode

.. 중간 생략 ..

13/08/08 15:04:14 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/data/hadoop/dfs/name/current/edits
13/08/08 15:04:14 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/data/hadoop/dfs/name/current/edits
13/08/08 15:04:14 INFO common.Storage: Storage directory /data/hadoop/dfs/name has been successfully formatted.
13/08/08 15:04:14 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at [[HOST]]
************************************************************/
$ ls /data/hadoop
dfs
$ ls /data/hadoop/*
name
$ start-all.sh
... 생략 ...
$ ls /data/hadoop
dfs  mapred
$ ls /data/hadoop/*
/data/hadoop/dfs:
data  name  namesecondary

/data/hadoop/mapred:
local



2. HDFS, MR 등의 경로를 하나씩 변경

그리고 두번째로는 hadoop의 temp 경로를 모두 바꾸지 않고, 원하는 경로만 변경할 수 있게 HDFS 경로를 하나씩 잡아주는 방법이 있다.

conf/hdfs-site.xml 파일에 아래 내용을 추가한다. namenode와 datanode, secondary namenode의 경로를 하나씩 잡은 것이다.

<property>
    <name>dfs.name.dir</name>
    <value>/data/hadoop/dfs/name</value>
</property>
<property>
    <name>dfs.data.dir</name>
    <value>/data/hadoop/dfs/data</value>
</property>
<property>
    <name>fs.checkpoint.dir</name>
    <value>/data/hadoop/dfs/namesecondary</value>
</property>


그리고 MR 중간에 생성되는 중간 파일(intermediate file)과 같은 데이터를 저장할 공간도 잡아준다. (이건 namenode와는 관계 없으니 굳이 여기서는 잡아주지는 않아도 될듯..) conf/mapred-site.xml에 아래 내용을 추가해 준다.

<property>
    <name>mapred.local.dir</name>
    <value>/data/hadoop/mapred/local</value>
</property>
<property>
    <name>mapred.system.dir</name>
    <value>/tmp/hadoop/mapred/system</value>
</property>


역시 마찬가지로 namenode를 생성해주면 해당 경로에 폴더들이 생성된다. mapred.system.dir 경로는 HDFS에 생성되는 경로이다.


+ 예전에도 시스템 재시작하면 /tmp 경로가 날아가서 찾아봤던 기억이 나는데 왜 오늘도 TㅅT 아마 그 때는 hadoop은 아니었던 것 같지만..



- 참고
hadoop namenode 시작 안됨 에러..
GettingStartedWithHadoop - Hadoop Wiki

덧글

댓글 입력 영역

Google AdSense (text/image)