2014-11-22 61 views
5

我已經搜索了這個問題,雖然有很多類似的例子,但我找不到一個通用的解決方案或適用於我的解決方案。我已經安裝了Hadoop,並且正在僞分佈式模式下運行。它工作正常,我可以多次啓動和停止並使其正常運行。但是,如果我重新啓動計算機並啓動Hadoop,則namenode無法啓動。我需要每次格式化,這意味着我失去了所有已完成的工作,需要重新開始。Hadoop namenode需要在每臺計算機啓動後進行格式化

我在關注Hadoop:權威指南v3。

我的核心site.xml中說:

<configuration> 
    <property> 
     <name>fs.default.name</name> 
     <value>hdfs://localhost/</value> 
    </property> 
</configuration> 

我HDFS-site.xml中說:

<configuration> 
    <property> 
     <name>dfs.replication</name> 
     <value>1</value> 
    </property> 
</configuration> 

有沒有的配置Hadoop的,這樣我就不需要再一種方式每次重新啓動計算機時都要格式化namenode?

謝謝。

回答

11

看起來你並不是覆蓋hdfs配置dfs.name.dir,dfs.data.dir,默認情況下它指向/ tmp目錄,當你的機器重新啓動時它將被清除。您必須通過覆蓋位於HADOOP配置目錄中的hdfs-site.xml文件中的這些值來將其從/ tmp更改爲您主目錄中的另一個位置。

執行以下步驟

在你的home目錄中保存的NameNode圖像&數據節點塊創建一個目錄(與您的登錄名替換)

mkdir /home/<USER>/pseudo/ 

在修改您的HDFS-site.xml文件的HADOOP_CONF_DIR(Hadoop配置direcotry)如下

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
<configuration> 
<property> 
    <name>dfs.name.dir</name> 
    <value>file:///home/<USER>/pseudo/dfs/name</value> 
</property> 
<property> 
    <name>dfs.data.dir</name> 
    <value>file:///home/<USER>/pseudo/dfs/data</value> 
</property> 
<property> 
    <name>dfs.replication</name> 
    <value>1</value> 
</property> 

</configuration> 

格式的HDFS的NameNode &開始使用

+0

奇妙 - 工作。非常感謝。 – Nick 2014-11-23 07:43:14

+0

黑白,不需要創建目錄。該目錄將在'hdfs namenode -format'期間自動創建。 – Raj 2015-03-17 05:15:48

+0

酷。我記得,早期的hadoop版本0.20,我們不得不手動創建目錄。在最新版本的hadoop社區中添加了自動目錄創建功能。感謝您的評論! – sachin 2015-03-17 19:35:39