$ hadoop namenode -format
(2)hadoop的namenode元資料目錄(即hdfs-site.xml配置檔案中的dfs.namenode.name.dir屬性,預設值是$/dfs/name),同樣如果沒有配置該屬性,那麼hadoop在格式化時將自行建立。必須注意的是在格式化前必須清楚所有子節點(即datanode節點)dfs/name下的內容,否則在啟動hadoop時子節點的守護程序會啟動失敗。這是由於,每一次format主節點namenode,dfs/name/current目錄下的version檔案會產生新的clusterid、namespaceid。但是如果子節點的dfs/name/current仍存在,hadoop格式化時就不會重建該目錄,因此形成子節點的clusterid、namespaceid與主節點(即namenode節點)的clusterid、namespaceid不一致。最終導致hadoop啟動失敗。
hadoop集群啟動namenode時,用jps檢視datanode沒有啟動。
原因分析:
由於在core-site.xml,hdfs-site.xml檔案中,我沒有設定如下內容。
core-site.xml內容如下:
hadoop.tmp.dir
file:/usr/local/hadoop/tmp
abase for other temporary directories.
fs.defaultfs
hdfs://localhost:9000
hdfs-site.xml內容如下:
dfs.replication
1dfs.namenode.name.dir
file:/usr/local/hadoop/tmp/dfs/name
dfs.datanode.data.dir
file:/usr/local/hadoop/tmp/dfs/data
導致系統啟動後會預設讀取linux根目錄下的tmp/hadoop-hadoop/下的檔案。
如果系統沒有重啟,這個目錄不會被系統清理掉,儲存了namenode和datanode相關資訊。
這樣下次啟動hadoop時(不論是重新格式化hdfs檔案系統,還是其他操作),hadoop還是會讀取預設位置,也就是tmp/hadoop-hadoop/下的檔案作為namenode、datanode的配置資訊。
而,重新格式化之後,namenode會重新生成,但儲存在tmp/hadoop-hadoop中的datanode配置資訊,不會重新生成。
兩個cluster-id衝突,導致啟動datanode失敗。
解決辦法:
一:(已驗證)
在core-site.xml,hdfs-site.xml檔案中,顯示確定namenode和datanode配置檔案的位置。
設定內容見上。
重啟hadoop,成功。無論是重新格式化hdfs,還是僅僅啟動namenode、datanode,都沒問題。
二:(根據原理推測可行解決方案,未驗證)
系統開機後,只執行一次format操作。(如果不小心format了,則可以先刪除tmp資料夾,rm -r ./tmp然後在執行format等啟動hadoop操作)
後續只是開啟namenode和datanode操作。
這樣就不生成新的namenode cluster id,不會導致id號衝突。
Hadoop namenode無法啟動
最近遇到了乙個問題,執行start all.sh的時候發現jps一下namenode沒有啟動 每次開機都得重新格式化一下namenode才可以 其實問題就出在tmp檔案,預設的tmp檔案每次重新開機會被清空,與此同時namenode的格式化資訊就會丟失 於是我們得重新配置乙個tmp檔案目錄 首先在h...
Hadoop namenode無法啟動
最近遇到了乙個問題,執行start all.sh的時候發現jps一下namenode沒有啟動 每次開機都得重新格式化一下namenode才可以,但這個可不是解決問題的方法啊,總不能每次啟動就把檔案系統格式化一下吧,這還得了 檢視了一下日誌,發現如下錯誤 error org.apache.hadoop...
Hadoop namenode無法啟動
最近遇到了乙個問題,執行start all.sh的時候發現jps一下namenode沒有啟動 每次開機都得重新格式化一下namenode才可以 其實問題就出在tmp檔案,預設的tmp檔案每次重新開機會被清空,與此同時namenode的格式化資訊就會丟失 於是我們得重新配置乙個tmp檔案目錄 首先在h...