2013-11-22 3 views
0

내 랩톱에 가상 분산 모드로 Hadoop을 설치했습니다. OS는 Ubuntu입니다. 파일이 아래 보이는기계를 다시 시작할 때마다 HDFS를 포맷해야하는 이유는 무엇입니까?

hdfs-site.xml 하둡 (/tmp 폴더에 기본 하둡 데이터를 저장하여) 데이터를 저장합니다

내가 변경 한 경로 : 지금은 컴퓨터를 다시 시작하고 시작하려고 할 때마다

<property> 
    <name>dfs.data.dir</name> 
    <value>/HADOOP_CLUSTER_DATA/data</value> 
</property> 

hadoop 클러스터 start-all.sh 스크립트를 사용하여 데이터 노드가 시작되지 않습니다. 로그를 확인하고 jps 명령을 사용하여 데이터 노드가 시작되지 않았 음을 확인했습니다.

그럼

    stop-all.sh 스크립트를 사용하여
  1. 중지 클러스터.
  2. hadoop namenode -format 명령을 사용하여 포맷 된 HDFS입니다.
  3. start-all.sh 스크립트를 사용하여 클러스터를 시작했습니다.

이제 클러스터를 중지했다가 다시 시작해도 문제가 없습니다. 컴퓨터를 다시 시작하고 클러스터를 시작하려고 할 때만 문제가 발생합니다.

  • 누구와 비슷한 문제가 발생 했습니까?
  • 왜 이런 일이 발생하고
  • 이 문제를 어떻게 해결할 수 있습니까? 당신이 실제로 데이터를 만들어 멀리 /tmp에서 dfs.datanode.data.dir을 변경하여
+0

기본 위치는 지금 :

당신이 원하는 경우

, 당신은 쉽게이 속성을 추가 할 수 있습니까? –

+0

@sonic, 귀하의 의견에 따라 제 질문을 수정했습니다. – Shekhar

+0

당신은 아래 답변을 가지고 있습니다 :) –

답변

6

(블록)는 재부팅을 통해 생존. 그러나 단지 블록보다 HDFS가 더 있습니다. 당신은 모든 관련된 dirs가 /tmp, 가장 주목할 만하게는 dfs.namenode.name.dir (나는 당신이 다른 dirs를 바꾸어야한다는 것을 말할 수 없다. 그것은 당신의 설정에 달려 있지만 namenode dir은 필수적이다. 또한 충분할 수도 있음)을 지적해야한다.

더 최근의 Hadoop 배포판을 사용하는 것이 좋습니다. BTW, 1.1 namenode dir 설정은 dfs.name.dir입니다.

1

hadoop 2.0 이상 버전을 사용하는 사람들은 설정 파일명이 다를 수 있습니다.

answer으로 알려 지므로, hadoop 설치 디렉토리 /etc/hadoop으로 이동하십시오.

hdfs-site.xml 파일을 엽니 다. 이 user configuration will override the default hadoop configurations은 이전에 자바 클래스 로더에 의해로드되었습니다.

속성을 추가하고 새로운 namenode 디렉토리 (기본값은 file://${hadoop.tmp.dir}/dfs/name)를 설정하십시오.

dfs.datanode.data.dir 속성 (기본값은 file://${hadoop.tmp.dir}/dfs/data)에 대해서도 동일하게 수행하십시오.예를 들어

: tmp를 해줄가 나타납니다

<property> 
    <name>dfs.namenode.name.dir</name> 
    <value>/Users/samuel/Documents/hadoop_data/name</value> 
</property> 
<property> 
    <name>dfs.datanode.data.dir</name> 
    <value>/Users/samuel/Documents/hadoop_data/data</value> 
</property> 

다른 속성은 dfs.namenode.checkpoint.dir입니다. 기본값은 file://${hadoop.tmp.dir}/dfs/namesecondary입니다.

<property> 
    <name>dfs.namenode.checkpoint.dir</name> 
    <value>/Users/samuel/Documents/hadoop_data/namesecondary</value> 
</property> 
+1

이렇게하면, 파일 시스템을 포맷하는 것을 잊지 마십시오 :'$ HADOOP_HOME/bin/hdfs namenode -format'. var가 설정되어 있지 않으면 $ HADOOP_HOME 환경 변수를 hadoop의 절대 경로로 바꿉니다. – Samuel

관련 문제