Hadoop問題小記


1.使用eclipse開發mapreduce程序,發現是跑在本地(LocalRunnerJob),而不是集群。

解決方法:將程序打成jar包,然后使用hadoop命令行運行。打包用Fat jar這個工具將第三方jar包一起發布,不要勾選One-JAR.

錯誤:Exception in thread "main" java.lang.IllegalArgumentException: Unable to locate   com.simontuffs.onejar.Boot in the java.class.path: consider using -Done-jar.jar.  path to specify the one-jar filename.

2.FAILED Too many fetch-failures

解決方法:

1) 檢查 /etc/hosts
   要求本機ip 對應 服務 器名
   要求要包含所有的服務器ip + 服務器名

/etc/hosts文件最前端如下信息:

127.0.0.1 localhost    your_hostname

::1           localhost6  your_hostname

若將這兩條信息注銷掉,(或者把your_hostname刪除掉)上述錯誤即可解決。
2) 檢查 .ssh/authorized_keys
   要求包含所有服務器(包括其自身)的public key

 盡 管我們在安裝hadoop之前已經配置了各節點的SSH無密碼通信,假如有3個IP分別為 192.168.128.131 192.168.128.132 192.168.133 ,對應的主機名為 master 、 slave1 、 slave2 。從每個節點第一次執行命令$ ssh 主機名(master 、slave1 、 slave2) 的時候,會出現一行關於密鑰的yes or no ?的提示信息,Enter確認后再次連接就正常了。如果我們沒有手動做這一步,如果恰 好在hadoop/conf/core-site.xml 及 mpred-site.xml中相應的IP 用主機名代替了,則很可能出現該異常。

3.hadoop上任務reduce個數為1問題解決

Hadoop的參數會受客戶端設置參數影響,我的任務在hadoop上運行時reduce個數總是1,查看hadoop安裝路徑下的conf文件夾中的配置文件,查看/conf/hadoop-site.xml  或者 /conf/hadoop-default.xml,查找:

<property>
  <name>mapred.reduce.tasks</name>
  <value>1</value>
  <description>The default number of reduce tasks per job.  Typically set
  to a prime close to the number of available hosts.  Ignored when
  mapred.job.tracker is "local".
  </description>
</property>

需要對這個參數進行修改,修改為:

<property>
  <name>mapred.reduce.tasks</name>
  <value>11</value>
  <description>The default number of reduce tasks per job.  Typically set
  to a prime close to the number of available hosts.  Ignored when
  mapred.job.tracker is "local".
  </description>
</property>

之后運行檢查reduce個數,此時reduce個數為:11。修改成功。

參考:http://blog.chinaunix.net/uid-1838361-id-287231.html

4.org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException

5.HBASE SHELL 錯誤NativeException: org.apache.hadoop.hbase.MasterNotRunningException: null

參考:http://blog.sina.com.cn/s/blog_718335510100zchp.html               http://www.cnblogs.com/tangtianfly/archive/2012/04/11/2441760.html

6.ZooKeeper session expired

參考:http://jiajun.iteye.com/blog/1013215    http://www.kuqin.com/system-analysis/20110910/264590.html

7.org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException: No lease on /hbase/.logs/Slave2,60020,1366353790042/Slave2%2C60020%2C1366353790042.1366353792650 File does not exist. [Lease.  Holder: DFSClient_hb_rs_Slave2,60020,1366353790042, pendingcreates: 1]
修改 hadoop的配置文件 conf/hdfs-site.xml,添加

 <property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>

待確認!!!

8.Failed setting up proxy interface org.apache.hadoop.hbase.ipc.HRegionInterface
參考:http://stackoverflow.com/questions/6007725/hbase-error-assignment-of-root-failure
9.org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode
10.解決客戶端通過zookeeper連接到hbase時連接過多的問題

原因:客戶端程序通過zookeeper訪問hbase的連接數超過設置的默認鏈接數(默認數是30),連接數不夠用會導致后續的連接連接不上去。

解決辦法:設置hbase-site.xml配置文件,添加如下屬性

<property>
    <name>hbase.zookeeper.property.maxClientCnxns</name>
    <value>300</value>
    <description>Property from ZooKeeper's config zoo.cfg.
    Limit on number of concurrent connections (at the socket level) that a
    single client, identified by IP address, may make to a single member of
    the ZooKeeper ensemble. Set high to avoid zk connection issues running
    standalone and pseudo-distributed.
    </description>
  </property>

將最大連接數我這設置成了300,后來發現仍然提示同樣的問題,最大連接數並沒有起作用,根據屬性提示,直接修改zoo.cfg配置文件

添加:maxClientCnxns=300

重啟下zookeeper,hbase,重新測試,問題解決。

11.job failed:# of failed Reduce Tasks exceeded allowed limit. FailedCount:

參考:http://blog.163.com/zhengjiu_520/blog/static/3559830620130743644473/

12.FATAL org.apache.hadoop.hbase.regionserver.wal.HLog: Could not sync. Requesting close of hlog
java.io.IOException

參考:http://blog.sina.com.cn/s/blog_53765cf90101auqo.html 待確認 http://www.codesky.net/article/201206/171897.html

13.Hbase Lease Exception

設置hbase.regionserver.lease.period和hbase.rpc.timeout hbase.rpc.timeout >=hbase.regionserver.lease.period

 14.Task attempt_failed to report status for 600 seconds. Killing!

參考:http://stackoverflow.com/questions/5864589/how-to-fix-task-attempt-201104251139-0295-r-000006-0-failed-to-report-status-fo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM