Hadoop異常總結

版權聲明:本文爲yunshuxueyuan原創文章。
如需轉載請標明出處:http://www.cnblogs.com/sxt-zkys/
QQ技術交流羣:299142667java

Hadoop異常總結node

hadoop啓動不正常,hadoop datanode節點超時時間設置,HDFS冗餘數據塊的自動刪除,namenode安全模式問題,ntp時間服務同步等問題。windows

hadoop的日誌目錄(/opt/sxt/hadoop-2.6.5/logs)

hadoop啓動不正常

用瀏覽器訪問namenode的50070端口,不正常,須要診斷問題出在哪裏:瀏覽器

第一步:在服務器的終端命令行使用jps查看相關進程安全

(namenode1個節點   datanode3個節點   secondary namenode1個節點)服務器

第二步:若是已經知道了啓動失敗的服務進程,進入到相關進程的日誌目錄下,查看日誌,分析異常的緣由網絡

1) 配置文件出錯,saxparser  exception; ——找到錯誤提示中所指出的配置文件檢查修改便可app

2) unknown host——主機名不認識,配置/etc/hosts文件便可,或者是配置文件中所用主機名跟實際不一致ssh

             (注:在配置文件中,建議使用主機名,而不要用ip地址)oop

3)directory 訪問異常—— 檢查namenode的工做目錄,看權限是否正常

start-dfs.sh啓動後,發現有datanode啓動不正常

第一步:查看datanode的日誌,看是否有異常,若是沒有異常,手動將datanode啓動起來sbin/hadoop-daemon.sh start datanode

第二步:頗有多是slaves文件中就沒有列出須要啓動的datanode

第三步:排除上述兩種狀況後,基本上,能在日誌中看到異常信息:

    一、配置文件

  二、ssh免密登錄沒有配置好

       三、datanode的身份標識跟namenode的集羣身份標識不一致

(刪掉datanode的工做目錄)

 

hadoop datanode節點超時時間設置

datanode進程死亡或者網絡故障形成datanode沒法與namenode通訊,namenode不會當即把該節點斷定爲死亡,要通過一段時間,這段時間暫稱做超時時長。HDFS默認的超時時長爲10分鐘+30秒。若是定義超時時間爲timeout,則超時時長的計算公式爲:

timeout  = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval。

而默認的heartbeat.recheck.interval 大小爲5分鐘,dfs.heartbeat.interval默認爲3秒。

須要注意的是hdfs-site.xml 配置文件中的heartbeat.recheck.interval的單位爲毫秒,dfs.heartbeat.interval的單位爲。因此,舉個例子,若是heartbeat.recheck.interval設置爲5000(毫秒),dfs.heartbeat.interval設置爲3(秒,默認),則總的超時時間爲40秒。

hdfs-site.xml中的參數設置格式:

<property>

        <name>heartbeat.recheck.interval</name>

        <value>2000</value>

</property>

<property>

        <name>dfs.heartbeat.interval</name>

        <value>1</value>

</property>

  

HDFS冗餘數據塊的自動刪除

在平常維護hadoop集羣的過程當中發現這樣一種狀況:

某個節點因爲網絡故障或者DataNode進程死亡,被NameNode斷定爲死亡,HDFS立刻自動開始數據塊的容錯拷貝;當該節點從新添加到集羣中時,因爲該節點上的數據其實並無損壞,因此形成了HDFS上某些block的備份數超過了設定的備份數。經過觀察發現,這些多餘的數據塊通過很長的一段時間纔會被徹底刪除掉,那麼這個時間取決於什麼呢?

該時間的長短跟數據塊報告的間隔時間有關。Datanode會按期將當前該結點上全部的BLOCK信息報告給Namenode,參數dfs.blockreport.intervalMsec就是控制這個報告間隔的參數。

hdfs-site.xml文件中有一個參數:

<property>

<name>dfs.blockreport.intervalMsec</name>

<value>3600000</value>

<description>Determines block reporting interval in milliseconds.</description>

</property>

  

其中3600000爲默認設置,3600000毫秒,即1個小時,也就是說,塊報告的時間間隔爲1個小時,因此通過了很長時間這些多餘的塊才被刪除掉。經過實際測試發現,當把該參數調整的稍小一點的時候(60秒),多餘的數據塊確實很快就被刪除了。

 

 

namenode安全模式問題

當namenode發現集羣中的block丟失數量達到一個閥值時,namenode就進入安全模式狀態,再也不接受客戶端的數據更新請求

在正常狀況下,namenode也有可能進入安全模式:

集羣啓動時(namenode啓動時)一定會進入安全模式,而後過一段時間會自動退出安全模式(緣由是datanode彙報的過程有一段持續時間)

也確實有異常狀況下致使的安全模式

緣由:block確實有缺失

措施:能夠手動讓namenode退出安全模式,bin/hdfs dfsadmin -safemode leave

  或者:調整safemode門限值:  dfs.safemode.threshold.pct=0.999f

 

ntp時間服務同步問題

第一種方式:同步到網絡時間服務器

 

 # ntpdate time.windows.com

將硬件時間設置爲當前系統時間。

#hwclock –w

加入crontab:    

30 8 * * * root /usr/sbin/ntpdate 192.168.0.1; /sbin/hwclock -w 天天的8:30將進行一次時間同步。

重啓crond服務:

service crond restart

 

 

第二種方式:同步到局域網內部的一臺時間同步服務器

1、搭建時間同步服務器

一、編譯安裝ntp server

rpm -qa | grep ntp

若沒有找到,則說明沒有安裝ntp包,從光盤上找到ntp包,使用

rpm -Uvh ntp***.rpm

進行安裝

二、修改ntp.conf配置文件

vi /etc/ntp.conf

①、第一種配置:容許任何IP的客戶機均可以進行時間同步

將「restrict default nomodify notrap noquery」這行修改爲:

restrict default nomodify notrap

配置文件示例:/etc/ntp.conf

②、第二種配置:只容許192.168.23.***網段的客戶機進行時間同步

在restrict default nomodify notrap noquery(表示默認拒絕全部IP的時間同步)以後增長一行:

restrict 192.168.23.0 mask 255.255.255.0 nomodify notrap

三、啓動ntp服務

service ntpd start

開機啓動服務

chkconfig ntpd on

四、ntpd啓動後,客戶機要等幾分鐘再與其進行時間同步,不然會提示「no server suitable for synchronization found」錯誤。

 

2、配置時間同步客戶機

手工執行 ntpdate <ntp server> 來同步

或者利用crontab來執行

crontab -e

0 21 * * * ntpdate 192.168.23.22 >> /root/ntpdate.log 2>&1

天天晚上9點進行同步

相關文章
相關標籤/搜索