部署 Spark2.2 集群 (on Yarn 模式)
欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
机器规划
本次实战用到了三台 CentOS7 的机器,身份信息如下所示:
要注意的地方:
spark 的 Master 和 hdfs 的 NameNode、Yarn 的 ResourceManager 在同一台机器;
spark 的 Worker 和 hdfs 的 DataNode、Yarn 的 NodeManager 在同一台机器;
先部署和启动 hadoop 集群环境
部署 spark2.2 集群 on Yarn 模式的前提,是先搭建好 hadoop 集群环境,请参考《Linux部署hadoop2.7.7集群》一文,将 hadoop 集群环境部署并启动成功;
部署 spark 集群
本次实战的部署方式,是先部署 standalone 模式的 spark 集群,再做少量配置修改,即可改为 on Yarn 模式;
standalone 模式的 spark 集群部署,请参考《部署spark2.2集群(standalone模式)》一文,要注意的是 spark 集群的 master 和 hadoop 集群的 NameNode 是同一台机器,worker 和 DataNode 在是同一台机器,并且建议 spark 和 hadoop 部署都用同一个账号来进行;
修改配置
如果您已经完成了 hadoop 集群和 spark 集群(standalone 模式)的部署,接下来只需要两步设置即可:
假设 hadoop 的文件夹 hadoop-2.7.7 所在目录为**/home/hadoop/**,打开 spark 的 spark-env.sh 文件,在尾部追加一行:
打开 hadoop-2.7.7/etc/hadoop/yarn-site.xml 文件,在 configuration 节点中增加下面两个子节点,如果不做以下设置,在提交 spark 任务的时候,yarn 可能将 spark 任务 kill 掉,导致"Failed to send RPC xxxxxx"异常:
本次实战一共有三台电脑,请确保在每台电脑上都做了上述配置;
启动 hadoop 和 spark
hadoop 和 spark 都部署在当前账号的家目录下,因此启动命令和顺序如下:
验证 spark
在 hdfs 创建一个目录用于保存输入文件:
准备一个 txt 文件(我这里是 GoneWiththeWind.txt),提交到 hdfs 的/input 目录下:
以 client 模式启动 spark-shell
以下信息表示启动成功:
输入以下内容,即可统计之前提交的 txt 文件中的单词出现次数,然后将前十名打印出来:
控制台输出如下,可见任务执行成功:
在网页上查看 yarn 信息,如下图:
java 版本的任务提交
如果您的开发语言是 java,请将应用编译构建为 jar 包,然后执行以下命令,就会以 client 模式提交任务到 yarn:
上述命令的最后三个参数是 WorkCount 类运行时需要用到的参数,该应用的详情请参考《第一个spark应用开发详解(java版)》;
停止 hadoop 和 spark
如果需要停止 hadoop 和 spark 服务,命令和顺序如下:
至此,Spark on Yarn 模式的集群部署和验证已经完成,希望能够带给您一些参考;
欢迎关注 InfoQ:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/d078ecc2e603514b515e062de】。文章转载请联系作者。
评论