Hadoop 常見問題處理彙總

P1:ssh連接機器,出現ssh:NODE_166:Temporary failure in name resolution

解決辦法:檢查/etc/hosts文件中定義了主機名和IP地址對應關係是否正確。



P2: ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Call to master/10.1.22.165:9000 failed on local exception: java.net.NoRouteToHostException: No route to host

解決辦法:修改hostname 和 /etc/hosts 裏的虛擬域名一致。如果沒辦法修改hostname (修改/etc/sysconfig/ network HOSTNAME可以改變hostname) ,可以修改 /etc/hosts 來爲每個記錄增加一個和其域名一致的域名別名

P3: java.io.IOException: Too many open files
解決辦法:超過了系統可打開文件數的限制, linux系統默認打開文件數最大值是1024 ,修改/etc/security/limits.conf
添加:
* soft nofile 65535
* hard nofile 65535
Max user process
Ulimit –a

P4:在datanode 鏈接不上 hadoopmaster,提示Retrying connect to server: hadoopmaster/130.38.27.112:9001. Already tried 0 time(s)
解決辦法:這個問題是由於namenode沒有啓動成功導致的。查看namenode日誌針對問題解決。

P5:Incompatible namespaceIDs in /data1/ocnosql_dev/data: namenode namespaceID = 405233244966; datanode namespaceID = 33333244
解決辦法:將namenode和datanode的VERSION中的namespaceID修改成一樣

P6: Task process exit with nonzero status of 126異常
解決辦法:環境變量有錯或者執行權限不夠。可能原因爲JDK包內${JAVA_HOME}/jre/bin/java文件的執行權限不夠

P7: 執行mapreduce任務的時候OutOfMemoryError
解決辦法:修改mapred-site.xml
        mapred.child.java.opts
        -Xmx1024m

P8: ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:ocnosql (auth:SIMPLE) cause:java.io.IOException: File /guoyk/test.txt._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1).  There are 0 datanode(s) running and no node(s) are excluded in this operation.

解決辦法:dfs.datanode.failed.volumes.tolerated數值大於或等於dfs.datanode.data.dir中配置的數,將tolerated值調小或註釋掉

P9:運行job任務時報out of memory錯誤,然後怎麼調整內存大小都不行,後來發現是can’t create new thread。

在vi /etc/security/limits.conf 添加
ocnosql - nofile 65535
ocnosql- nproc  65535

P10:hdfs無法使用(比如執行一個操作文件命令就報錯:only be replicated to 0 nodes, instead of 1)

解決辦法:給出了幾個可能的原因,1、由於多次格式化,重啓導致namenode和datanode的信息不一致;2、namenode和datdanode建立連接需要等一段時間,說白了就是等一會兒 ;3、沒有寫文件權限(但是我查看日誌都是root最高權限)4、磁盤空間不足

P11:上傳本地文件至hdfs,或者寫hdfs時發生java.net.SocketTimeoutException: 1000000 millis timeout while waiting for channel to be ready for write

解決辦法:
問題原因:當一個HDFS系統同時處理許多個並行的put操作,往HDFS上傳數據時,有時候會出現dfsclient 端發生socket 鏈接超時的報錯,有的時候甚至會由於這種原因導致最終的put操作失敗,造成數據上傳不完整。
修改hadoop配置文件hdfs-site.xml,增加dfs.datanode.socket.write.timeout和dfs.socket.timeout兩個屬性的設置。
   
        dfs.datanode.socket.write.timeout
        100000000
   
 
   
        dfs.socket.timeout
        100000000
   
或者把這個值設爲0。即可

P12:ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:180)
at java.io.DataInputStream.readLong(DataInputStream.java:399)
at org.apache.hadoop.hdfs.server.namenode.FSImage.readCheckpointTime(FSImage.java:561)
at org.apache.hadoop.hdfs.server.namenode.FSImage.getFields(FSImage.java:552)
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.read(Storage.java:227)

問題原因:IO錯誤,所以應該是文件有問題
解決辦法:namenode的元數據目錄下的fstime文件爲空,從備份的地方拷貝了一個過來就好了
readCheckpointTime是指讀取fstime文件

P13:2013-04-15 17:06:03,585 INFO org.apache.hadoop.hdfs.server.datanode.OfferService: using BLOCKREPORT_INTERVAL of 10000msec Initial delay: 0msec
2013-04-15 17:06:03,585 ERROR org.apache.hadoop.hdfs.server.datanode.OfferService: OfferService encountered exception java.lang.NullPointerException

問題原因:
解決辦法:在avatar環境上有時候重啓的時候就會一直刷這個日誌,我處理的方法就是重啓 datanode,重啓就 可以解決。 
單獨重啓進程,順序如下:
主節點:hadoop-daemon.sh start avatarnode 
備節點:hadoop-daemon.sh start avatarnode  -one -standby -sync
數據節點:hadoop-daemons.sh start avatardatanode 
P14:
hdfs dfs -setrep -R -w 2 /test/712/dir1; 執行等待時間過長
解決辦法:這個操作與datanode的blockreport有關,功能測試如果該操作延遲,可以修改參數dfs.blockreport.intervalMsec,調小點,默認是6小時,可以調爲10分鐘。



P15:datanode停機後彙報到namenode的時間差問題 默認10分30秒,

配置爲:
dfs.namenode.heartbeat.recheck-interval 毫秒
dfs.heartbeat.interval 秒
 時間差爲:10*dfs.heartbeat.interval + dfs.namenode.heartbeat.recheck-interval / 1000 * 2

P16:put數據的時候,停datanode節點,put等待間過長的問題,
修改配置:
  dfs.datanode.socket.write.timeout 時間縮小點,可以1-2分鐘,單位ms

  但是該值如果設的太低,當主namenode發生切換時,會導致正在put的任務失敗退出。所以該值的調整需要的原則是要於namenode切換的時間。


P17:解決zookeeper佔用內存太高的問題,默認是使用機器1/3的內存
在zookeeper/bin下的zkServer.sh文件前面增加配置:
JVMFLAGS="-Xmx1000m"


P18、hbase的snapy壓縮不生效問題
     需要經snapy的so文件放到lib/native/Linux-amd64-64目錄下,放在native下不生效。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章