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原因:客戶端程序通過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