Hadoop打包成jar包在集群上运行时出现的各种问题以及解决方案
之前将eclipse下编好的mapreduce代码放到集群上面跑,发现速度很慢,namenode节点的cpu和内存使用率很低,datanode节点基本上处于没有运行的状态,然后通过查看hadoop-etc-hadoop下面的配置文件,发现mapreduce-site.xml文件下面的mapreduce.framework.name名字中framework少了一个字母e,导致集群一直运行在伪分布模式下面,同时也导致web控制网页没有datanode的信息,打开master:8088网站显示no available datanode in the table,曾经这个问题困扰了我很久很久,因为如果网站打不开的话就没有办法查看运行的日志,没有办法通过日志来查看运行出错信息。在hadoop2.1以后就通过mapreduce-site.xml配置文件里面的mapreduce.jobhistory.webapp.address下面的value值master:19888网站来查看各个节点的运行状态了,开启jobhistory的命令是mr-jobhistory-sh start historyserver。
运行jar包的时候提示空指针异常 java.lang.NullPointerException分析说明
这个问题也困扰了我相当长的时间,直到后来通过日志log发现原来是程序没有读我的文件(文件格式是xml格式),后来把文件复制到各个节点下面相同的路径里面,然后在代码中输入路径(不可以只放在namenode节点上,不然datanonde读不到文件便会报空指针异常)。
mapreduce框架中全局变量的设置
在我的工程中需要在map函数里面调用一个类的方法,如果在每个map函数里面都新建类的话会导致运行时间很长,内存溢出。这里我想在代码运行之前新建这个类,在map方法里面直接调用这个类的方法,这个过程也困扰了我很长的时间,直到另一个需求的出现,在处理很多文件的时候我希望输出为多个文件,而不是只有一个输出文件。
对于输出多个文件的分析
在程序中加入以下代码

private MultipleOutputs mos;
protected void setup(Context context) throws IOException, InterruptedException {
mos=new MultipleOutputs(context);//初始化mos
}
protected void cleanup( Context context) throws IOException, InterruptedException {
mos.close();//释放资源
}
public void map(LongWritable key,Text value,Context context) throws IOException,InterruptedException,NullPointerException{
mos.write(new Text(key),new Text(value),filename);
}

实现以filename文件作为输入文件输出map的结果。
这里我就发现了一个地方,在setup方法中新建了一个对象mos,然后在map函数中直接调用mos的方法,而网上说setup方法只运行一次,可以重载自己的功能,然后回到上一个问题,我把需要初始化的对象直接放到setup方法里面,然后在map函数里面执行对象的方法,结果空指针异常消失了,而且不会再每执行一次map函数就新建一个对象,这样减少了内存的消耗。
运行时候出现Error: GC overhead limit exceeded
在hadoop2.x中默认Container的yarn child jvm堆大小为200M,通过参数mapred.child.java.opts指定,可以在job提交的时候给定,是一个客户端生效的参数,配置在mapred-site.xml文件中,通过将该参数修改为-Xms200m -Xmx4096000m来更改jvm堆大小,异常解决。
然后我继续运行jar包工程,运行时出现4.2 GB of 2.1 GB virtual memory used. Killing container.
这个错误和物理内存无关,是虚拟内存超了。
解决方法:
在etc/hadoop/yarn-site.xml文件中,修改检查虚拟内存的属性为false,如下:
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
参考资料:http://blog.csdn.net/ma0903/article/details/48289731
Hadoop打包成jar包在集群上运行时出现的各种问题以及解决方案的更多相关文章
- flink idea 打包jar 并放到集群上运行
flink idea 打包jar 并放到集群上运行 在开始之前注意前提,当前项目的scala的版本要和集群上的scala一致 我已经创建好一个wordCount的flink项目 注意项目的po ...
- IntelliJ IDEA编写的spark程序在远程spark集群上运行
准备工作 需要有三台主机,其中一台主机充当master,另外两台主机分别为slave01,slave02,并且要求三台主机处于同一个局域网下 通过命令:ifconfig 可以查看主机的IP地址,如下图 ...
- 012 Spark在IDEA中打jar包,并在集群上运行(包括local模式,standalone模式,yarn模式的集群运行)
一:打包成jar 1.修改代码 2.使用maven打包 但是目录中有中文,会出现打包错误 3.第二种方式 4.下一步 5.下一步 6.下一步 7.下一步 8.下一步 9.完成 二:在集群上运行(loc ...
- [Java] Java 打包成jar包 和 解压jar包
解压jar包 jar xf xxx.jar 打包成jar包 方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] ...
- [JAR包] android引入JAR包,打包成JAR包,打包成Library项目,导入Library项目
(1)项目导入JAR包:1.在项目目录里建立一个libs目录,将外部jar包拷贝在里面.2.右键点击项目,Bulid Path->Configure Build Path3.在设置Libraie ...
- 【spring boot】idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到(转)
转自:https://www.cnblogs.com/sxdcgaq8080/p/7727249.html 接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p ...
- 【Android端】代码打包成jar包/aar形式
Android端代码打包成jar包和aar形式: 首先,jar包的形式和aar形式有什么区别? 1.打包之后生成的文件地址: *.jar:库/build/intermediates/bundles/d ...
- Android studio 将 Module 打包成 Jar 包
整理记录 AndroidStudio 把一个 module 项目打包成 jar 包. 一.默认自动生成的 jar 包 众所周知 android studio 会在library所依赖的 app运行 或 ...
- springboot打包成jar包后找不到xml,找不到主类的解决方法
springboot打包成jar包后找不到xml,找不到主类的解决方法 请首先保证你的项目能正常运行(即不打包的时候运行无误),我们在打包时经常遇到如下问题: springboot打包成jar包后找不 ...
随机推荐
- CentOS 6.0 VNC远程桌面配置[转]
原文出处: http://blog.haohtml.com/archives/12281 谢谢作者. 引言:必须明白:vncserver在调用的时候,会根据你的配置来启用server端的监听端口,端口 ...
- 剑指Offer - 九度1523 - 从上往下打印二叉树
剑指Offer - 九度1523 - 从上往下打印二叉树2013-12-01 00:35 题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 输入: 输入可能包含多个测试样例,输入以E ...
- 《Cracking the Coding Interview》——第8章:面向对象设计——题目9
2014-04-23 23:57 题目:如何设计一个内存文件系统,如果可以的话,附上一些代码示例. 解法:很遗憾,对我来说不可以.完全没有相关经验,所以实在无从入手.这题目应该和工作经验相关吧? 代码 ...
- Linq语法和C#6.0
一. linq 1.简介: 能用linq实现的基本都可以用扩展方法实现: 举例: 查询ID>1的狗有如下两种写法 (1)var r1=dogs.where(d=>d.id>1) ( ...
- zedboard zynq 学习 sobel 边缘检测 IP核 制作 根据 文档 Xapp890
官方文档http://www.xilinx.com/support/documentation/application_notes/xapp890-zynq-sobel-vivado-hls.pdf ...
- FileZilla修改文件大小格式
之前使用FileZilla觉得很奇怪,文件大小显示为字节格式,很不习惯. 最近发现是在这里修改. 菜单“编辑”下选择设置,选择选项“文件大小格式”,在右边选择为:“使用SI式二进制前缀.(如 1 KB ...
- LINQ to Entities 不识别方法“System int string 转换的问题
这个问题困扰了挺久,网上找了挺多方法 都太好使. 分几种情况. 1.如果查询结果 转换,那比较容易. var q = from c in db.Customers where c.Country == ...
- HDU 1711 Number Sequence---KMP原始
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> #in ...
- bzoj 1314: River过河 树套树+单调队列
Description ZY带N个小Kid过河,小KID分成两种:高一年级,高二年级,由于存在代沟问题,如果同一条船上高一年级生和高二年级生数量之差超过K,就会发生不和谐的事件.当然如果一条船上全是同 ...
- [codevs_1237]餐巾计划问题
题目描述 一个餐厅在相继的N 天里,每天需用的餐巾数不尽相同.假设第i天需要ri块餐巾(i=1,2,…,N).餐厅可以购买新的餐巾,每块餐巾的费用为p分:或者把旧餐巾送到快洗部,洗一块需m天,其费用为 ...