今天在hadoop集群上跑MapReduce程序,遇到的一些问题和解决的方法,希望对大家有帮助!
1.从HDFS上传下载文件到
第一种错误:

Java代码  
  1. <span style="font-size: medium;">Exception inthread"main"java.lang.IllegalArgumentException:
  2. Wrong FS: hdfs://192.168.1.11:9000/usr/yujing/wordcount,
  3. expected: hdfs://master:9000</span>

这个很多人都遇到过,不管是在ubuntu还是windows系统中,在连接集群的时候,不能直接使用hdfs://192.168.1.11:9000,要在hosts文件中添加192.168.1.11的映射,有人可能不知道windows下hosts文件在哪?C:\Windows\System32\drivers\etc\hosts(这个是隐藏文件你可以显示出来),在host文件中添加192.168.1.11 master就可以了。
第二种错误:

Java代码  
  1. <span style="font-size: medium;">org.apache.hadoop.ipc.RemoteException:
  2. org.apache.hadoop.hdfs.server.namenode.SafeModeException:
  3. Cannot create file/usr/yujing/wordcount. Name node is in
  4. safe mode.
  5. The ratio of reported blocks 0.0000 has not reached the
  6. threshold 0.9990. Safe mode will be turned off
  7. automatically.</span>

这个错误出现的原因是client对集群中HDFS的操作没有权限
解决办法:
(1)在代码中加上一行代码
conf.set("dfs.permissions","false");
(2)在集群配置文件hdfs-site.xml
property>
     <name>dfs.permissions</name>
    <value>false</value>
</property>
然后重启
1.对于hadoop提供的wordcount例子
第一种错误:

Java代码  
  1. <span style="font-size: medium;">12/02/10 14:24:59 INFO ipc.Client: Retrying connect to
  2. server: localhost/127.0.0.1:9000. Already tried 0 time(s).
  3. 12/02/10 14:25:01 INFO ipc.Client: Retrying connect to  </span>

当你在代码中明明写的是集群的IP,但是它连接就是localhost,这是因为mapreduce默认连接的是localhost
解决办法:
conf.set("fs.default.name", "hdfs://master:9000");
conf.set("hadoop.job.user", "yujing");
conf.set("mapred.job.tracker", "master:9001");
这样JobClient就会把Job任务提交到hadoop集群中
第二种错误:

Java代码  
  1. <span style="font-size: medium;">Exception in thread "main"
  2. org.apache.hadoop.mapreduce.lib.input.InvalidInputException
  3. : Input path does not exist:
  4. hdfs://master:9000/user/yujing/D:/qq.txt</span>

这种错误是因为向集群中提交job任务是文件的输入路径必须要是HDFS上的文件路径,输出路径也要是HDFS上的文件
第三种错误:

Java代码  
  1. <span style="font-size: medium;">2/02/10 14:52:36 WARN mapred.JobClient: No job jar file
  2. set.  User classes may not be found. See JobConf(Class) or
  3. JobConf#setJar(String).
  4. 12/02/10 14:52:36 INFO mapred.JobClient: Cleaning up the
  5. staging area hdfs://master:9000/tmp/hadoop-
  6. hadoop/mapred/staging/yujing/.staging/job_201202091335_0293</span>

以上的错误是由于mapreduce的输出路径已存在,必须先删除掉那个文件
正确的运行结果:

Java代码  
  1. <span style="font-size: medium;">12/02/10 14:59:35 INFO input.FileInputFormat: Total input
  2. paths to process : 1
  3. 12/02/10 14:59:35 INFO mapred.JobClient: Running job:
  4. job_201202091335_0299
  5. 12/02/10 14:59:36 INFO mapred.JobClient:  map 0% reduce 0%
  6. 12/02/10 14:59:48 INFO mapred.JobClient:  map 100% reduce
  7. 0%
  8. 12/02/10 15:00:04 INFO mapred.JobClient:  map 100% reduce
  9. 100%
  10. 12/02/10 15:00:09 INFO mapred.JobClient: Job complete:
  11. job_201202091335_0299
  12. 12/02/10 15:00:09 INFO mapred.JobClient: Counters: 25</span>

2.自己写的mapReduce程序
第一种错误:

Java代码  
  1. <span style="font-size: medium;">java.lang.RuntimeException:
  2. java.lang.ClassNotFoundException: cn.hadoop.InvertedIndex
  3. $InvertedIndexMapper
  4. at org.apache.hadoop.conf.Configuration.getClass
  5. (Configuration.java:866)
  6. at
  7. org.apache.hadoop.mapreduce.JobContext.getMapperClass
  8. (JobContext.java:195)</span>

第一种解决方法:
这是由于及集群中没有我们提交的jar包,所以namenode不知道怎么执行我们的job任务,所以就会报空指针异常错误,所以要自己打jar提交给集群。
解决方法: 所以先给自己的程序打成jar包,然后放到工程的根目录下,然后在代码中添加JobConf conf=new JobConf
();conf.setJar("pr.jar");这样就可以了,这个错误困扰了我们很久。
第二种解决方法:
使用eclipse插件解决,有很多人刚刚开始的时候使用插件老是会出不来想要的结果,这个可能和eclipse或者是插件包的版本有关,有的版本的eclipse不兼容hadoop插件,还有就是hadoop-eclipse-plugin-0.20.203.0.jar的插件里面少了一些包,要自己进行手动修改,这个网上又怎么修改的方法,关于在eclipse安装插件就是要多试试就可以了,当插件完成后,然后点击run hadoop,插件内部会打包你的程序提交到集群上。


第三种解决方法:
自己在程序中打包自己的mapreduce程序,然后提交job任务,这方面这部分代码在eclipse插件中也是实现了的,我们这里就是要用代码实现插件的功能。
第二种错误:

Java代码  
  1. <span style="font-size: medium;">2/02/10 14:59:35 INFO input.FileInputFormat: Total input
  2. paths to process : 1
  3. 12/02/10 14:59:35 INFO mapred.JobClient: Running job:
  4. job_201202091335_0299
  5. 12/02/10 14:59:36 INFO mapred.JobClient:  map 0% reduce 0%
  6. 12/02/10 14:59:48 INFO mapred.JobClient:  map 100% reduce
  7. 0%</span>

这种错误出现的原因是mapreduce默认的reduce个数是1个,所以如果当map的个数很大时,reduce过程迟迟不会进行,解决方法是在代码中添加job.setNumReduceTasks(4);设置reduced的个数。

MapReduce提交作业常见问题相关推荐

  1. oozie 重新提交作业

    在oozie的运行过程当中可能会出现错误,比如数据库连接不上,或者作业执行报错导致流程进入suspend或者killed状态,这个时候我们就要分析了,如果确实是数据或者是网络有问题,我们比如把问题解决 ...

  2. 在win7上的eclipse向hadoop提交作业异常-权限/设置调度器

    第一个问题,在win7上的eclipse向hadoop提交作业时,没有权限,异常信息如下: Java代码   Caused by: org.apache.hadoop.ipc.RemoteExcept ...

  3. spark提交到yarn_详细总结spark基于standalone、yarn集群提交作业流程

    最近总结了一些关于spark core的内容,今天先来和大家分享一下spark的运行模式. spark运行模式 (1)local:在本地eclipse.IDEA中写spark代码运行程序,一般用于测试 ...

  4. P2339 提交作业usaco

    P2339 提交作业usaco 题目背景 usaco 题目描述 贝西在哞哞大学选修了 C 门课,她要把所有作业分别交给每门课的老师,然后去车站和同学们一起回家.每个老师在各自的办公室里,办公室要等他们 ...

  5. pbs 写matlab作业,pbs提交作业

    如何如何使用使用pbs 提交作业 1 串行任务提交 用户通过qsub 命令来向系统提交任务,有两种方式提交:脚本方式和命令行方式.(一 般情况下,不允许root 用户使用qsub 命令提交作业) 1. ...

  6. python怎么提交作业_python分析作业提交情况

    这次做一个比较贴近我实际的东西:python分析作业提交情况. 要求: 将服务器中交作业的学生(根据文件的名字进行提取)和统计成绩的表格中的学生的信息进行比对,输出所有没有交作业的同学的信息(学号和姓 ...

  7. 如何做云班课上的计算机作业,云班课不分组怎么提交作业

    <云班课>APP中,学生们都需要按时完成老师布置的相关的任务以及作业,但是呢,在云班课平台中提交作业的类型有很多种类,所以说,针对不同的种类,提交作业的方式也是不同的,那么不分组的话应该要 ...

  8. python如何提交作业_python分析作业提交情况

    这次做一个比较贴近我实际的东西: 要求: 将服务器中交作业的学生(根据文件的名字进行提取)和统计成绩的表格中的学生的信息进行比对,输出所有没有交作业的同学的信息(学号和姓名),并输出所交的作业中命名格 ...

  9. Python自动检查哪位学生未提交作业

    最近期未需要对学生提交的作业进行统计,给平时成绩.总共交了8次作业,每个作业都有2个班,数量太多,于是就利用Python写了一个程序来自动实现. 思想:获取指定路径下的所有文件名,如果文件名中包含了学 ...

最新文章

  1. 产品运营 | 如何通过数据评判你的 App 表现?
  2. 基于Android移动终端的微型餐饮管理系统的设计与实现2-侧滑菜单
  3. python内置函数(2)-递归与迭代
  4. onchange onpropertychange 和oninput事件的区别
  5. docker运行prometheus
  6. webstorm怎么跑项目_快讯!明年厦门中考体育项目定了!初三家长抽的!其他地市抽到啥?...
  7. Webpack 4x 之路 ( 五 )
  8. 双11行业“三连冠”,鞋王百丽走对了哪几步?
  9. [置顶] C#中Socket服务端代码分享
  10. 安装mysql初始化date_0001_mysql 5.7.25安装初始化
  11. 统计git仓库一些commit数据
  12. 安装配置hadoop组件hive问题集锦
  13. 1. paip.discuz X2.5 积分(金钱)功能API总结
  14. Ubuntu和Win10双系统修改硬盘序列号后无法进入Win10的解决办法
  15. 安道麦四季度以最佳年度销售额和EBITDA收官全年
  16. 完整版TCP/UDP第7点
  17. 接码平台源码_你的票被服务器上的爬虫“吃”了,本文解析爬虫抢票的源码!...
  18. Redis笔记(Linux部署redis过程)
  19. 什么是微信商城?如何微商城?
  20. 金山毒霸技术预览版1.0 beta【云沙箱 三引擎】发布(毒霸体验团队可优先测试)...

热门文章

  1. node.js的request模块
  2. CO-类的本质、description方法
  3. SQL SERVER 2012 第三章 使用INSERT语句添加数据
  4. SQLserver 中时间减,并把结果转换成varchar类型,拼接上字符串
  5. 【博客话题】我的2011项目总结
  6. 晒晒公司整改后的拓扑图和设备
  7. js在firefox中的问题
  8. 石川es6课程---8、字符串
  9. Sliverlight Slide 的左右滑动
  10. kvm热添加和热迁移