Hadoop相关问题记录

3 篇文章 0 订阅
2 篇文章 0 订阅

Eclipse Maven Missing artifact jdk.tools:jdk.tools:jar:1.6

问题描述:

       以前的项目,只是为了解决问题而解决问题,没有去考虑原因,现在由于重装了系统导致之前的配置报错了,遂找了找原因。

Eclipse Maven Missing artifact jdk.tools:jdk.tools:jar:1.6

原因:

       出现类似问题,大概就是pom.xml中的依赖包中需要使用类似jdk1.6/jdk1.7而你没有,所以就包缺少这个jar包的问题。

别人的解决办法:

       当时是解决了问题,也不知道设置了什么,但是现在新系统无效了,所以怎么解决也不重要了

<dependency>
    <groupId>jdk.tools</groupId>
    <artifactId>jdk.tools</artifactId>
    <version>1.6</version>
    <scope>system</scope>
    <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>

我的解决办法:

       因为我引入了hadoop的相关jar包,它需要使用jdk1.6,我是做法是让它不去下载依赖的jdk,省略的是其他不下载的与我项目冲突的依赖。

	<dependency>
	  <groupId>org.apache.hadoop</groupId>
	  <artifactId>hadoop-common</artifactId>
	  <version>${hadoop.version}</version>
	  	<exclusions>
                        ......
			<exclusion>
				<artifactId>jdk.tools</artifactId>
				<groupId>jdk.tools</groupId>
			</exclusion>
		</exclusions>
	</dependency>

       当然不知道哪些其他的依赖还会去依赖不同的jdk,该问题只在Eclipse里出现,IDEA中暂未出现该问题。

------------------------------------------------------------------------------------------------------------------------------------

MapReduce job报错,资源不足

描述:

        在Eclipse中开发的MapReduce打成jar包放到服务器运行时,一直报资源不足的错误,在开发时想引入配置文件在运行jar包时生效省事。但是试了很多次,都是同样的错误,所以总结是:程序自己引入的配置文件不生效,还是要修改服务器相关配置重启。

问题:

Container [pid=29704,containerID=container_1528184652168_0006_01_000002] is running beyond physical memory limits.
 Current usage: 1.0 GB of 1 GB physical memory used; 3.1 GB of 2.1 GB virtual memory used. Killing container.Dump of the process-tree for container_1528184652168_0006_01_000002 :
	|- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USA
GE(PAGES) FULL_CMD_LINE	|- 29719 29704 29704 29704 (java) 4165 318 3246665728 265504 /usr/java/jdk1.8.0_131/bin/java -Djava.net.pr
eferIPv4Stack=true -Dhadoop.metrics.log.level=WARN -Djava.net.preferIPv4Stack=true -Xmx820m -Djava.io.tmpdir=/yarn/nm/usercache/hdfs/appcache/application_1528184652168_0006/container_1528184652168_0006_01_000002/tmp -Dlog4j.configuration=container-log4j.properties -Dyarn.app.container.log.dir=/yarn/container-logs/application_1528184652168_0006/container_1528184652168_0006_01_000002 -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA -Dhadoop.root.logfile=syslog org.apache.hadoop.mapred.YarnChild 10.10.201.222 57724 attempt_1528184652168_0006_m_000000_0 2 	|- 29704 29700 29704 29704 (bash) 0 0 108650496 310 /bin/bash -c /usr/java/jdk1.8.0_131/bin/java -Djava.ne
t.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN  -Djava.net.preferIPv4Stack=true -Xmx820m -Djava.io.tmpdir=/yarn/nm/usercache/hdfs/appcache/application_1528184652168_0006/container_1528184652168_0006_01_000002/tmp -Dlog4j.configuration=container-log4j.properties -Dyarn.app.container.log.dir=/yarn/container-logs/application_1528184652168_0006/container_1528184652168_0006_01_000002 -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA -Dhadoop.root.logfile=syslog org.apache.hadoop.mapred.YarnChild 10.10.201.222 57724 attempt_1528184652168_0006_m_000000_0 2 1>/yarn/container-logs/application_1528184652168_0006/container_1528184652168_0006_01_000002/stdout 2>/yarn/container-logs/application_1528184652168_0006/container_1528184652168_0006_01_000002/stderr  
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143

参数:

1.0 GB:任务所占的物理内存
1GB: mapreduce.map.memory.mb 参数默认设置大小
3.1 GB:程序占用的虚拟内存
2.1 GB: mapreduce.map.memory.db 乘以 yarn.nodemanager.vmem-pmem-ratio 得到的

        其中 yarn.nodemanager.vmem-pmem-ratio 是 虚拟内存和物理内存比例,在yarn-site.xml中设置,默认是2.1
很明显,container占用了2.8G的虚拟内存,但是分配给container的却只有2.1GB。所以kill掉了这个container

上面只是map中产生的报错,当然也有可能在reduce中报错,如果是reduce中,那么就是mapreduce.reduce.memory.db * yarn.nodemanager.vmem-pmem-ratio

注:

        物理内存:真实的硬件设备(内存条)
        虚拟内存:利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。(为了满足物理内存的不足而提出的策略)

        linux会在物理内存不足时,使用交换分区的虚拟内存。内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存得到了释放,这块内存就可以用于其它目的,当需要用到原始的内容时,这些信息会被重新从交换空间读入物理内存。

解决办法:

        可以到linux服务器修改配置文件,重启服务。我是通过CDH的浏览器管理界面(http://xx.xx.xx.xx:7180/cmf/home),进入YARN,进入配置文件页面,修改的配置文件,然后在浏览器点击重启该服务就可以了。

因为我的是maponly的MapReduce,所以我只修改了map,在修改完之后,管理页面会提示重启哪部分,点击重启即可。

参考文章:https://www.2cto.com/net/201805/747075.html

-----------------------------------------------------------------------------------------------------------------------------------

Windows本地Hadoop环境问题

java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
	at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:355)
	at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:370)
	at org.apache.hadoop.util.Shell.<clinit>(Shell.java:363)
	at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:78)
	at org.apache.hadoop.security.Groups.parseStaticMapping(Groups.java:93)
	at org.apache.hadoop.security.Groups.<init>(Groups.java:77)
	at org.apache.hadoop.security.Groups.getUserToGroupsMappingService(Groups.java:240)
	at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:257)
	at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:234)
	at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:749)
	at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:734)
	at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:607)
	at org.apache.hadoop.mapreduce.task.JobContextImpl.<init>(JobContextImpl.java:72)
	at org.apache.hadoop.mapreduce.Job.<init>(Job.java:133)
	at org.apache.hadoop.mapreduce.Job.<init>(Job.java:123)
	at org.apache.hadoop.mapreduce.Job.<init>(Job.java:128)
	at SolrIndexMapReduce.SeaIndexMRByPerson.createSubmittableJob(SeaIndexMRByPerson.java:217)
	at SolrIndexMapReduce.SeaIndexMRByPerson.main(SeaIndexMRByPerson.java:244)

配置好本地Hadoop环境配置,参考地址:https://www.cnblogs.com/honey01/p/8027193.html

本地Hadoop环境配置好后,运行报如上错误,说明缺少“winutils.exe”文件,只需要将该报放入Hadoop环境的bin目录下即可

我的为2.6.0版本,“winutils.exe”文件下载地址:链接:https://pan.baidu.com/s/1ISbhB427SQpP4Ez43R1vXw 提取码:q6ye

	Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
	at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
	at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:570)
	at org.apache.hadoop.fs.FileUtil.canRead(FileUtil.java:977)
	at org.apache.hadoop.util.DiskChecker.checkAccessByFileMethods(DiskChecker.java:173)
	at org.apache.hadoop.util.DiskChecker.checkDirAccess(DiskChecker.java:160)
	at org.apache.hadoop.util.DiskChecker.checkDir(DiskChecker.java:94)
	at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.confChanged(LocalDirAllocator.java:285)
	at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:344)
	at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:150)
	at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:131)
	at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:115)
	at org.apache.hadoop.mapred.LocalDistributedCacheManager.setup(LocalDistributedCacheManager.java:131)
	at org.apache.hadoop.mapred.LocalJobRunner$Job.<init>(LocalJobRunner.java:163)
	at org.apache.hadoop.mapred.LocalJobRunner.submitJob(LocalJobRunner.java:731)
	at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:432)
	at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1285)
	at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1282)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
	at org.apache.hadoop.mapreduce.Job.submit(Job.java:1282)
	at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1303)
	at SolrIndexMapReduce.HomePageIndexMR.main(HomePageIndexMR.java:283)

当出现如上错误时,说明缺少“hadoop.dll”文件,将该文件放置Hadoop的bin目录下即可

我的为2.6.0版本,“hadoop.dll”文件下载地址:链接:https://pan.baidu.com/s/1JwQGt5KDPLesQSXDiqxvAg 提取码:rfmc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值