1. 程式人生 > >Hadoop錯誤1_Hadoop分散式及偽分散式下DataNode不能啟動的問題

Hadoop錯誤1_Hadoop分散式及偽分散式下DataNode不能啟動的問題

問題導讀:
1、hadoop 完全分散式 和偽分散式下 datanode無法啟動的原因?

2、怎麼解決?




問題描述:
在叢集模式下更改節點後,啟動叢集發現 datanode一直啟動不起來。
我叢集配置:有5個節點,分別為master slave1-5 。
在master以hadoop使用者執行:start-all.sh
jps檢視master節點啟動情況:
  1.    NameNode        
  2.          JobTracker
  3.          SecondaryNameNode
複製程式碼

均已經正常啟動,利用 master:50070 , Live Nodes 為0, 隨進入 slave1:
ssh slave1,  輸入命令 jps ,發現只有 TaskTracker 而沒有DataNode。隨後看日誌


上網查詢解決方法,最後終於解決了,解決方法如下:
1. 先執行stop-all.sh暫停所有服務
2. 將所有Salve節點上的tmp(即 hdfs-site.xml 中指定的 dfs.data.dir 資料夾,DataNode存放資料塊的位置)、 logs 資料夾刪除 , 然後重新建立tmp , logs 資料夾
3. 將所有Salve節點上的/usr/hadoop/conf下的core-site.xml刪除,將master節點的core-site.xml檔案拷貝過來,到各個Salve節點
  1. scp /usr/hadoop/conf/core-site.xml   [email protected]:/usr/hadoop/conf/
複製程式碼
4. 重新格式化: hadoop namenode -format
5. 啟動:start-all.sh

注:這是我碰到的情況,不見得是你遇到的問題,基本上從以下幾個方面解決問題:
        1. 檢查各個xml檔案是否配置正確
        2. java環境變數配置是否正確
        3. ssh是否無密碼互通
        4, Hadoop離開安全模式,hadoop dfsadmin -safemode leave。

也可以參考這個:偽分散式下datanode無法啟動問題
例子如下:
1. 環境描述:
虛擬機器7.1.4,Ubuntu 10.10,偽分散式安裝Hadoop。

2. 問題描述:

多次格式化檔案系統時:
  1. $ bin/hadoop namenode -format
複製程式碼 會出現datanode無法啟動。

3. 問題產生原因:
執行檔案系統格式化時,會在namenode資料資料夾(即配置檔案中dfs.name.dir在本地系統的路徑)中儲存一個current/VERSION檔案,記錄namespaceID,標識了所格式化的namenode的版本。如果我們頻繁的格式化namenode,那麼datanode中儲存(即配置檔案中dfs.data.dir在本地系統的路徑)的current/VERSION檔案只是你第一次格式化時儲存的namenode的ID,因此就會造成datanode與namenode之間的id不一致。

4. datanode啟動日誌:
/home/xsj/hadoop/hadoop-0.20.2/logs/hadoop-xsj-datanode-xsj-virtual-machine.log.XXXX-XX-XX
檢視日誌發現:
************************************************************/
2012-05-28 17:40:59,973 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /home/xsj/hadoop/hadoop-0.20.2/hdfs/data: namenode namespaceID = 1525353449; datanode namespaceID = 1686950792

5. 解決方案:
把配置檔案中dfs.data.dir在本地系統的路徑下的current/VERSION檔案中的namespaceID改為與dfs.name.dir在本地系統的路徑下的current/VERSION檔案中的namespaceID一樣,例如:
dfs.data.dir為/home/xsj/hadoop/hadoop-0.20.2/hdfs/data
dfs.name.dir為/home/xsj/hadoop/hadoop-0.20.2/hdfs/name
開啟/home/xsj/hadoop/hadoop-0.20.2/hdfs/name/current/VERSION檔案:
  1. #Wed May 30 09:51:09 CST 2012
  2. namespaceID=1525353449
  3. cTime=0
  4. storageType=NAME_NODE
  5. layoutVersion=-18
複製程式碼

開啟/home/xsj/hadoop/hadoop-0.20.2/hdfs/data/current/VERSION檔案:
  1. #Thu May 24 17:23:11 CST 2012
  2. namespaceID=1686950792
  3. storageID=DS-1689019725-127.0.1.1-50010-1337851391704
  4. cTime=0
  5. storageType=DATA_NODE
  6. layoutVersion=-18
複製程式碼

修改為:
  1. #Thu May 24 17:23:11 CST 2012
  2. namespaceID=1525353449
  3. storageID=DS-1689019725-127.0.1.1-50010-1337851391704
  4. cTime=0
  5. storageType=DATA_NODE
  6. layoutVersion=-18
複製程式碼


6. 重啟後執行jps命令:

 

問題導讀:
1、Hadoop出現問題時,該如何入手檢視問題?
2、datanode無法啟動,我們該怎麼解決?
3、如何動態加入DataNode或TaskTracker?


一、問題描述
當我多次格式化檔案系統時,如

  1. [email protected]:/usr/local/hadoop-1.0.2# bin/hadoop namenode -format
複製程式碼
會出現datanode無法啟動,檢視日誌,發現錯誤為:
  1. 2012-04-20 20:39:46,501 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /home/gqy/hadoop/data: namenode namespaceID = 155319143; datanode namespaceID = 1036135033
複製程式碼
二、問題產生原因
當我們執行檔案系統格式化時,會在namenode資料資料夾(即配置檔案中dfs.name.dir在本地系統的路徑)中儲存一個current/VERSION檔案,記錄namespaceID,標識了所格式化的 namenode的版本。如果我們頻繁的格式化namenode,那麼datanode中儲存(即配置檔案中dfs.data.dir在本地系統的路徑)的current/VERSION檔案只是你第一次格式化時儲存的namenode的ID,因此就會造成datanode與namenode之間的id不一致。

三、解決辦法
把配置檔案中dfs.data.dir在本地系統的路徑下的current/VERSION中的namespaceID改為與namenode一樣。

如果大家在安裝的時候遇到問題,或者按步驟安裝完後卻不能執行Hadoop,那麼建議仔細檢視日誌資訊,Hadoop記錄了詳盡的日誌資訊,日誌檔案儲存在logs資料夾內。
無論是啟動,還是以後會經常用到的MapReduce中的每一個job,以及HDFS等相關資訊,Hadoop均存有日誌檔案以供分析。
例如:
NameNode和DataNode的namespaceID不一致,這個錯誤是很多人在安裝時會遇到的,日誌資訊為:
  1. java.io.IOException: Incompatible namespaceIDs in /root/tmp/dfs/data:
  2. NameNode namespaceID = 1307672299; DataNode namespaceID = 389959598
複製程式碼
若HDFS一直沒有啟動,讀者可以查詢日誌,並通過日誌進行分析,以上提示資訊顯示了NameNode和DataNode的namespaceID不一致。
這個問題一般是由於兩次或兩次以上的格式化NameNode造成的,有兩種方法可以解決,第一種方法是刪除DataNode的所有資料(及將叢集中每個datanode的/hdfs/data/current中的VERSION刪掉,然後執行hadoop namenode -format重啟叢集,錯誤消失。<推薦>);第二種方法是修改每個DataNode的namespaceID(位於/hdfs/data/current/VERSION檔案中)<優先>或修改NameNode的namespaceID(位於/hdfs/name/current/VERSION檔案中),使其一致。


下面這兩種方法在實際應用中也可能會用到。
1)重啟壞掉的DataNode或JobTracker。當Hadoop叢集的某單個節點出現問題時,一般不必重啟整個系統,只須重啟這個節點,它會自動連入整個叢集。
在壞死的節點上輸入如下命令即可:
  1. bin/Hadoop-daemon.sh start DataNode
  2. bin/Hadoop-daemon.sh start jobtracker
複製程式碼
2) 動態加入DataNode或TaskTracker。這個命令允許使用者動態將某個節點加入叢集中。
  1. bin/Hadoop-daemon.sh --config ./conf start DataNode
  2. bin/Hadoop-daemon.sh --config ./conf start tasktracker
複製程式碼

原文來自:

http://www.aboutyun.com/thread-7930-1-1.html

http://www.aboutyun.com/thread-7931-1-1.html

偽分散式下datanode無法啟動問題

1. 環境描述: 虛擬機器7.1.4,Ubuntu 10.10,偽分散式安裝Hadoop。 2. 問題描述: 多次格式化檔案系統時: $ bin/hadoop namenode -format 會出現datanode無法啟動。 3. 問題產生原因:  執行檔案系統格式化時,會在namenode資料資料夾(即配置檔案中dfs.name.dir在本地系統的路徑)中儲存一個current/VERSION檔案,記錄namespaceID,標識了所格式化的namenode的版本。如果我們頻繁的格式化namenode,那麼datanode中儲存(即配置檔案中dfs.data.dir在本地系統的路徑)的current/VERSION檔案只是你第一次格式化時儲存的namenode的ID,因此就會造成datanode與namenode之間的id不一致。 4. datanode啟動日誌: /home/xsj/hadoop/hadoop-0.20.2/logs/hadoop-xsj-datanode-xsj-virtual-machine.log.XXXX-XX-XX 檢視日誌發現: ************************************************************/ 2012-05-28 17:40:59,973 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /home/xsj/hadoop/hadoop-0.20.2/hdfs/data: namenode namespaceID = 1525353449; datanode namespaceID = 1686950792 5. 解決方案: 把配置檔案中dfs.data.dir在本地系統的路徑下的current/VERSION檔案中的namespaceID改為與dfs.name.dir在本地系統的路徑下的current/VERSION檔案中的namespaceID一樣,例如: dfs.data.dir為/home/xsj/hadoop/hadoop-0.20.2/hdfs/data dfs.name.dir為/home/xsj/hadoop/hadoop-0.20.2/hdfs/name 開啟/home/xsj/hadoop/hadoop-0.20.2/hdfs/name/current/VERSION檔案: #Wed May 30 09:51:09 CST 2012 namespaceID=1525353449 cTime=0 storageType=NAME_NODE layoutVersion=-18 開啟/home/xsj/hadoop/hadoop-0.20.2/hdfs/data/current/VERSION檔案: #Thu May 24 17:23:11 CST 2012 namespaceID=1686950792 storageID=DS-1689019725-127.0.1.1-50010-1337851391704 cTime=0 storageType=DATA_NODE layoutVersion=-18 修改為: #Thu May 24 17:23:11 CST 2012 namespaceID=1525353449 storageID=DS-1689019725-127.0.1.1-50010-1337851391704 cTime=0 storageType=DATA_NODE layoutVersion=-18 6. 重啟後執行jps命令 7. 參考資料:

原文來自:http://blog.sina.com.cn/s/blog_76fbd24d01017qmc.html

個人總結:使用偽分散式的方法沒有作用,最後採用分散式下DataNode不能啟動的解決方法,刪除tmp和logs

檔案,重新進行分散式環境配置,成功。

相關推薦

Hadoop錯誤1_Hadoop分散式分散式DataNode不能啟動的問題

問題導讀:1、hadoop 完全分散式 和偽分散式下 datanode無法啟動的原因?2、怎麼解決?問題描述:在叢集模式下更改節點後,啟動叢集發現 datanode一直啟動不起來。我叢集配置:有5個節點,分別為master slave1-5 。在master以hadoop使

java大資料最全課程學習筆記(1)--Hadoop簡介和安裝分散式

> 目前[CSDN](https://blog.csdn.net/weixin_42208775),[部落格園](https://home.cnblogs.com/u/gitBook/),[簡書](https://www.jianshu.com/u/da41700fde04)同步發表中,更多精彩歡迎訪問

大資料技術學習筆記之Hadoop框架基礎1-Hadoop介紹分散式部署

一、學習建議     -》學習思想         -》設計思想:分散式             -》資料採集

5.大資料學習之旅——hadoop-簡介分散式安裝

Hadoop簡介 是Apache的頂級專案,是一個可靠的、可擴充套件的、支援分散式計算的開源 專案。 起源 創始人:Doug Cutting 和Mike 2004 Doug和Mike建立了Nutch - 利用通用爬蟲爬取了網際網路上的所有數 據,獲取了10億個網頁資料 - 1

Hadoop安裝教程_單機/分散式配置_CentOS6.4/Hadoop2.6.0

 2015-12-17 (updated: 2017-03-02) 本教程適合於在 CentOS 6.x 系統中安裝原生 Hadoop 2,適用於Hadoop 2.7.1, Hadoop 2.6.0 等版本,主要參考了官方安裝教程,步驟詳細,輔以適當說明,相信按照步驟來,都

hadoop叢集環境搭建之分散式叢集環境搭建

搭建叢集的模式有三種 1.偽分散式:在一臺伺服器上,啟動多個執行緒分別代表多個角色(因為角色在叢集中使用程序表現的) 2.完全分散式:在多臺伺服器上,每臺伺服器啟動不同角色的程序,多臺伺服器構成叢集 node01:NameNode node02:

HBase安裝分散式配置教程

HBase安裝是在我的另一篇部落格hadoop在centos系統未分散式安裝的基礎上進行的,HBase下載地址:HBase,不建議選擇最新版本的,容易出現相容性問題。 HBase安裝步驟 解壓到/usr/local 路徑下 sudo tar -zxf ~

hadoop HDFS Pseudo-Distributed Mode 分散式部署

   一、 架構簡介:        本文件介紹如何設定和配置單節點Hadoop安裝,以便您可以使用Hadoop MapReduce和Hadoop分散式檔案系統(HDFS)快速執行簡單操作。       使用hadoop版本:Apache Hadoop 2.6.5  

Hadoop安裝教程_單機/分散式配置_Hadoop2.6.4/Ubuntu16.04

1. 簡介 本教程適合於原生 Hadoop 2,包括 Hadoop 2.6.4, Hadoop 2.7.1 等版本,看了很多資料,自己搭建了好幾次,特做個總結,按照步驟來都能成功。 2. 環境 本教程使用 Ubuntu 16.04 64位 作為系統環境(U

Hadoop安裝教程_單機/分散式配置_騰訊雲/Ubuntu Server 16.04.1 LTS 64位/Hadoop2.9.1

環境 騰訊雲伺服器 系統:Ubuntu Server 16.04.1 LTS 64位 Hadoop版本:hadoop-2.9.1 提示:雲伺服器下的Ubuntu圖形化介面親測很卡,慎用!所以本教程全程shell配置。 裝好了 Ubuntu 系統之後,在安裝 Ha

Hadoop安裝教程_單機/分散式配置_hadoop-2.7.5/Ubuntu14.04

    本篇部落格為學習總結部落格,學習字源來自廈門大學資料庫實驗室,連結為:http://dblab.xmu.edu.cn/blog/install-hadoop/    十分感謝!!!一、 建立新使用者    首先按 ctrl+alt+t 開啟終端視窗,輸入如下命令建立新

Hadoop學習筆記-入門分散式配置(Mac OS,0.21.0,Eclipse 3.6)

11/09/04 22:32:33 WARN conf.Configuration: DEPRECATED: hadoop-site.xml found in the classpath. Usage of hadoop-site.xml is deprecated. Instead use core-s

Hadoop安裝教程_單機/分散式配置_Hadoop2.7.3/Ubuntu16.04

當開始著手實踐 Hadoop 時,安裝 Hadoop 往往會成為新手的一道門檻。儘管安裝其實很簡單,書上有寫到,官方網站也有 Hadoop 安裝配置教程,但由於對 Linux 環境不熟悉,書上跟官網上簡略的安裝步驟新手往往 Hold 不住。加上網上不少教程也甚是坑,導

hadoop分散式 無法啟動datanode的原因could only be replicated to > 0 nodes, instead of 1的錯誤

目前發現一個原因是 因為datanode無法啟動從而導致在hadoop上 put資料 出現 could only be replicated to > 0 nodes, instead of 1的錯誤。 輸入jps發現唯獨只有datanode程序沒有起來。所以我們要想

linux安裝hadoop分散式叢集

1.    在虛擬機器上安裝了centos7, 下載hadoop。http://hadoop.apache.org/releases.html  這裡選擇2.7版本而不是3.0版本 不選3.0版本的理由,檢視版本更新日誌

windows搭建Flume client + Ubuntu18.04 Hadoop分散式

經過兩天的吐血折騰終於在hadoop的介面上看見我同步的日誌檔案了,記錄一下。先來張定妝照: dashboard裡檢視: ubuntu下檢視: 從Windows裡上傳的日誌檔案: ==================================從0開始折騰====

windows10 eclipse連線虛擬機器中的Hadoop分散式叢集

在windows用eclipse連線hadoop之後,可以便於進行mapreduce開發,非常方便,如果在虛擬機器裡面用eclipse的話  ,emmmmmm,你會卡到懷疑人生。     首先需要去下載eclipse,這個直接官網就ok  link

Hadoop分散式的安裝部署

文章目錄 需要的軟體及原始碼包 安裝JDK Hadoop的部署安裝 Hadoop的配置 Hadoop的使用 做Hadoop的偽分散式我們分為一下幾個步驟 需要的軟體及原始碼包 FileZil

Centos7配置Hadoop分散式環境

Centos 版本:7 Hadoop版本:2.7.4 Java版本:1.8 一、安裝JDK 官網下載jdk 1.8 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.

Spark本地安裝Linux分散式搭建

title: Spark本地安裝及Linux下偽分散式搭建 date: 2018-12-01 12:34:35 tags: Spark categories: 大資料 toc: true 個人github部落格:Josonlee’s Blog 文章目錄