一、環境搭建
- 可能因為是虛擬機的緣故?重啟后,SSH免密登陸總是失效,解決辦法。
mv /root/.ssh/known_hosts /tmp
- 對hadoop的namenode節點格式化的時候,出現
Format aborted in /usr/local/src/hadoop-1.2.1/tmp/dfs/name
錯誤,格式化失敗!
rm -rf /usr/local/src/hadoop-1.2.1/tmp/dfs/
image.png
- 執行./start-all.sh 命令的時候,出現
The authenticity of host 'slave2 (192.168.89.12)' can't be established.
錯誤,但是主從節點之間可以免密登陸,但是會造成slave節點啟動失敗。- 將錯誤排查了遍,真是浪費了好多時間,原來虛擬機一旦重啟,SELinux就會變回原來的樣子。
#臨時關閉,重啟失效
setenforce 0
getenforce #查看狀態,Permissive為關閉
#永久關閉,推薦
vim /etc/selinux/config
將SELINUX=enforcing改為SELINUX=disabled
image.png
- 上傳文件失敗./hadoop fs -put /etc/passwd /,拋出異常。
原因:防火墻沒有關閉:
centOS 6.5關閉防火墻步驟
關閉命令: service iptables stop
永久關閉防火墻:chkconfig iptables off
兩個命令同時運行,運行完成后查看防火墻關閉狀態
service iptables status
image.png
二、MapReducer
- ①由于Partitioner大于Reducer導致的錯誤。
為job設置足夠的reducer數量:
job.setNumReduceTasks(4);//啟用四個Reducer,因為我們分了四個paritioner。
java.io.IOException: Illegal partition for 13726230503 (1)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:1078)
at org.apache.hadoop.mapred.MapTask$NewOutputCollector.write(MapTask.java:690)
at org.apache.hadoop.mapreduce.TaskInputOutputContext.write(TaskInputOutputContext.java:80)
at cn.jxau.yuan.mapReduce.DataCount$DCMapper.map(DataCount.java:61)
at cn.jxau.yuan.mapReduce.DataCount$DCMapper.map(DataCount.java:1)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:364)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
17/08/05 02:09:44 INFO mapred.JobClient: Task Id : attempt_201708050137_0001_m_000000_1, Status : FAILED
java.io.IOException: Illegal partition for 13726230503 (1)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:1078)
at org.apache.hadoop.mapred.MapTask$NewOutputCollector.write(MapTask.java:690)
at org.apache.hadoop.mapreduce.TaskInputOutputContext.write(TaskInputOutputContext.java:80)
at cn.jxau.yuan.mapReduce.DataCount$DCMapper.map(DataCount.java:61)