为什么运行不成功 spark

为什么运行不成功 spark,第1张

本节介绍在Windows系统上安装Spark的过程。在Windows环境下需要安装Cygwin模拟Linux的命令行环境来安装Spark。

(1)安装JDK

相对于Linux、Windows的JDK安装更加自动化,用户可以下载安装Oracle JDK或者OpenJDK。只安装JRE是不够的,用户应该下载整个JDK。

安装过程十分简单,运行二进制可执行文件即可,程序会自动配置环境变量

(2)安装Cygwin

Cygwin是在Windows平台下模拟Linux环境的一个非常有用的工具,只有通过它才可以在Windows环境下安装Hadoop和Spark。具体安装步骤如下。

1)运行安装程序,选择install from internet。

2)选择网络最好的下载源进行下载。

3)进入Select Packages界面(见图2-2),然后进入Net,选择openssl及openssh。因为之后还是会用到ssh无密钥登录的。

另外应该安装“Editors Category”下面的“vim”。这样就可以在Cygwin上方便地修改配置文件。

最后需要配置环境变量,依次选择“我的电脑”→“属性”→“高级系统设置”→“环境变量”命令,更新环境变量中的path设置,在其后添加Cygwin的bin目录和Cygwin的usr\bin两个目录。

(3)安装sshd并配置免密码登录

1)双击桌面上的Cygwin图标,启动Cygwin,执行ssh-host-config -y命令,出现如图2-3所示的界面。

2)执行后,提示输入密码,否则会退出该配置,此时输入密码和确认密码,按回车键。最后出现Host configuration finished.Have fun!表示安装成功。

3)输入net start sshd,启动服务。或者在系统的服务中找到并启动Cygwin sshd服务。

注意,如果是Windows 8 *** 作系统,启动Cygwin时,需要以管理员身份运行(右击图标,选择以管理员身份运行),否则会因为权限问题,提示“发生系统错误5”。

(4)配置SSH免密码登录

1)执行ssh-keygen命令生成密钥文件,如图2-4所示。

2)执行此命令后,在你的Cygwin\home\用户名路径下面会生成.ssh文件夹,可以通过命令ls -a /home/用户名 查看,通过ssh -version命令查看版本。

3)执行完ssh-keygen命令后,再执行下面命令,生成authorized_keys文件。

cd ~/.ssh/

cp id_dsa.pub authorized_keys

这样就配置好了sshd服务。

(5)配置Hadoop

修改和配置相关文件与Linux的配置一致,读者可以参照上文Linux中的配置方式,这里不再赘述。

(6)配置Spark

修改和配置相关文件与Linux的配置一致,读者可以参照上文Linux中的配置方式,这里不再赘述。

(7)运行Spark

1)Spark的启动与关闭

①在Spark根目录启动Spark。

./sbin/start-all.sh

②关闭Spark。

./sbin/stop-all.sh

2)Hadoop的启动与关闭

①在Hadoop根目录启动Hadoop。

./sbin/start-all.sh

②关闭Hadoop。

./sbin/stop-all.sh

3)检测是否安装成功

正常状态下会出现如下内容。

-bash-4.1# jps

23526 Jps

2127 Master

7396 NameNode

7594 SecondaryNameNode

7681 ResourceManager

1053 DataNode

31935 NodeManager

1405 Worker

如缺少进程请到logs文件夹下查看相应日志,针对具体问题进行解决。

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

最终executor和driver的心跳失效:

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

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

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

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

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

还是怀疑是网络的问题

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

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

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

spark.shuffle.file.buffer=64k,

spark.reducer.maxSizeInFlight=96M

spark.network.timeout=300s

spark.rpc.askTimeout=300s

spark.shuffle.io.serverThreads=8

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

spark.shuffle.file.buffer=64k,

spark.reducer.maxSizeInFlight=96M

spark.network.timeout=300s

spark.rpc.askTimeout=300s

spark.shuffle.io.serverThreads=8

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

net.ipv4.tcp_keepalive_time= 15

net.ipv4.tcp_keepalive_probes = 10

net.ipv4.tcp_keepalive_intvl= 30

3.关闭sasl

spark.authenticate.enableSaslEncryption=false

spark.authenticate=false


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

原文地址:https://54852.com/yw/8091494.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存