Spark集群搭建过程中遇到的一些问题

1、
在搭建好hadoop,spark之后,提交第一次任务的时候就出现了错误。
在任务提交并创建之后,从8088看,任务一直处于ACCEPTED状态,而在shell中一直重复如下信息:
17/04/03 16:43:24 INFO yarn.Client: Application report for application_1491208536792_0001 (state: ACCEPTED)
直到
17/04/03 16:43:25 INFO yarn.Client: Application report for application_1491208536792_0001 (state: FAILED)
出现之后,整个任务完全失败。查询log,发现有如下错误信息:
Application application_1491211547264_0001 failed 2 times due to AM Container for appattempt_1491211547264_0001_000002 exited with exitCode: -103 due to: Container [pid=3122,containerID=container_1491211547264_0001_02_000001] is running beyond virtual memory limits. Current usage: 84.7 MB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing container.
Dump of the process-tree for container_1491211547264_0001_02_000001 :
|- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE 。
上网看了一下,原来是对于yarn的内存分配问题。
所以在yarn-site.xml中增加了如下配置代码
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>100000</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>10000</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>3000</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>2000</value>
</property>
但是结果并不如人意,没有解决我的问题。
于是我加上如下代码,修改检查虚拟内存的属性为false
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
没错,修改完这些之后,问题就不再出现了,随后便出现了其他问题
2、
我们知道,spark有三种运行方式,分别是local、standalone以及yarn模式,目前来说,这三种都会出现不同的问题,其中local和stantalone模式会出现:
node1/192.168.10.100 to node1:8020 failed on connection exception的异常。
修改了很多,无济于事。
而yarn模式出现了exitCode15的退出码错误,任务一直处于Accepted,最后突然成功,然而没有任何结果,同时会报出一个错,exitCode15错误码。
无法解决,只能看看我的配置是不是有没有问题:
这时候我把spark-env.sh中的

export SPARK_YARN_USER_ENV=”CLASSPATH=/usr/hadoop/hadoop2.5″

export SPARK_MASTER_IP=192.168.10.100

这两句进行了注释,便没有了exidCode15错误。
3、
随后,运行任务到最后一步,web端已经显示成功,但是还是冒出了如下错误
Exception in thread “main” java.lang.IllegalArgumentException: Log directory hdfs://node1:8020/sparkHistoryLogs does not exist.
仔细一想,之前在创建fs目录的时候,由于教程中的hdfs端口是9000,而我的是8020,所以,那次创建目录虽然没有报错,但是却是失败的。重新创建:
hadoop fs -mkdir hdfs://node1:8020/sparkHistoryLogs
之后再运行测试任务,便没有了错误,仔细一想,还是自己对于集群的各个参数没有深入的了解导致的。
4、
目前来说,spark on Yarn运行任务是没有问题了,但是其他两种模式遇到的connection失败问题还是迟迟没有解决,暂时先略过,待对spark集群理解深入一些之后再来解决这个问题。

    原文作者:蠟筆小噺没有烦恼
    原文地址: https://www.jianshu.com/p/36406575e87b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞