Spark On Yarn的两种模式yarn-cluster和yarn-client深度剖析

Spark On Yarn的两种模式yarn-cluster和yarn-client深度剖析,第1张

转至: >

错误的说法是:Spark运行的基本流程是先初始化程序,然后将数据加载到内存中,最后用户可以使用任何算法对数据进行处理。

Spark的基本流程并不是如此简单,它的流程包括:创建Spark上下文,加载数据集,转换数据,使用算法进行分析,将结果输出,最后释放资源。

首先,在Spark程序中,需要考虑创建一个Spark上下文,它是一个运行Spark程序的基本环境,它能够提供Spark程序所需要的一切资源,包括集群管理器、资源管理器、Scheduler等。

其次,需要加载要处理的数据集,这些数据可以从本地文件系统或者远程的HDFS文件系统中获取,并将其加载到Spark中。

接着,将加载的数据转换成可以被Spark处理的数据,这里可以使用Spark的RDD API或者DataFrame API进行数据转换,将数据转换成可以被Spark处理的形式。

然后,可以使用Spark MLlib中提供的各种机器学习算法进行数据分析,计算出分析结果,并将结果输出到指定的文件中。

最后,在程序完成后,需要释放资源,将Spark上下文中加载的数据及各种资源占用情况清空,以便在下次运行时能够重新使用。

因此,以上错误的说法不能概括Spark的基本流程,Spark的基本流程涉及到更多的步骤,如上所述。

发现在2019-01-16 15:53:11,748:

最终executor和driver的心跳失效:

此外还有大量shuffle异常日志:

shuffle异常是否也是失败的根因?

1由于无法获取到driver日志,没法做更多的分析。先排除推测机制的干扰。让客户关闭掉spark推测机制:sparkspeculation

2关闭掉推测机制后,任务运行也失败了。启动executor失败的次数达到上限

并且失败都有大量的socket异常打印,executor和driver网络通信中断:

还是怀疑是网络的问题

1分析AM日志,发现AM日志从15点到之后都没有任何打印:

发现TID 13203 执行了40多min,在stage 31。虽然stage31的某个task执行慢,但是最终是执行成功的。spark的shuffle对网络性能要求比较高,准备进行如下shuffle调优,避免单个task问题:

准备进行如下调整:调优化shuffle参数:

sparkshufflefilebuffer=64k,

sparkreducermaxSizeInFlight=96M

sparknetworktimeout=300s

sparkrpcaskTimeout=300s

sparkshuffleioserverThreads=8

1部分task执行慢,是由于shuffle性能影响,调整shuffle参数规避。

sparkshufflefilebuffer=64k,

sparkreducermaxSizeInFlight=96M

sparknetworktimeout=300s

sparkrpcaskTimeout=300s

sparkshuffleioserverThreads=8

2不排除网络问题的影响,试图调整os参数,但是客户生产

netipv4tcp_keepalive_time= 15

netipv4tcp_keepalive_probes = 10

netipv4tcp_keepalive_intvl= 30

3关闭sasl

sparkauthenticateenableSaslEncryption=false

sparkauthenticate=false

以上就是关于Spark On Yarn的两种模式yarn-cluster和yarn-client深度剖析全部的内容,包括:Spark On Yarn的两种模式yarn-cluster和yarn-client深度剖析、Linux里面spark作用是什么、针对spark运行的基本流程哪个说法是错误的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10180363.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存