写点什么

部署 Spark2.2 集群 (on Yarn 模式)

作者:程序员欣宸
  • 2022 年 8 月 16 日
    广东
  • 本文字数:2311 字

    阅读完需:约 8 分钟

部署Spark2.2集群(on Yarn模式)

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

机器规划

  • 本次实战用到了三台 CentOS7 的机器,身份信息如下所示:



  • 要注意的地方:


  1. spark 的 Master 和 hdfs 的 NameNode、Yarn 的 ResourceManager 在同一台机器;

  2. spark 的 Worker 和 hdfs 的 DataNode、Yarn 的 NodeManager 在同一台机器;

先部署和启动 hadoop 集群环境

  • 部署 spark2.2 集群 on Yarn 模式的前提,是先搭建好 hadoop 集群环境,请参考《Linux部署hadoop2.7.7集群》一文,将 hadoop 集群环境部署并启动成功;

部署 spark 集群

  1. 本次实战的部署方式,是先部署 standalone 模式的 spark 集群,再做少量配置修改,即可改为 on Yarn 模式;

  2. 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 文件,在尾部追加一行:


export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.7.7/etc/hadoop
复制代码


  • 打开 hadoop-2.7.7/etc/hadoop/yarn-site.xml 文件,在 configuration 节点中增加下面两个子节点,如果不做以下设置,在提交 spark 任务的时候,yarn 可能将 spark 任务 kill 掉,导致"Failed to send RPC xxxxxx"异常:


<property>  <name>yarn.nodemanager.pmem-check-enabled</name>  <value>false</value></property><property>  <name>yarn.nodemanager.vmem-check-enabled</name>  <value>false</value></property>
复制代码


  • 本次实战一共有三台电脑,请确保在每台电脑上都做了上述配置;

启动 hadoop 和 spark

  • hadoop 和 spark 都部署在当前账号的家目录下,因此启动命令和顺序如下:


~/hadoop-2.7.7/sbin/start-dfs.sh \&& ~/hadoop-2.7.7/sbin/start-yarn.sh \&& ~/hadoop-2.7.7/sbin/mr-jobhistory-daemon.sh start historyserver \&& ~/spark-2.3.2-bin-hadoop2.7/sbin/start-all.sh
复制代码

验证 spark

  • 在 hdfs 创建一个目录用于保存输入文件:


~/hadoop-2.7.7/bin/hdfs dfs -mkdir /input
复制代码


  • 准备一个 txt 文件(我这里是 GoneWiththeWind.txt),提交到 hdfs 的/input 目录下:


~/hadoop-2.7.7/bin/hdfs dfs -put ~/GoneWiththeWind.txt /input
复制代码


  • 以 client 模式启动 spark-shell


~/spark-2.3.2-bin-hadoop2.7/bin/spark-shell --master yarn --deploy-mode client
复制代码


  • 以下信息表示启动成功:


2019-02-09 10:13:09 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicableSetting default log level to "WARN".To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).2019-02-09 10:13:15 WARN  Client:66 - Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.Spark context Web UI available at http://node0:4040Spark context available as 'sc' (master = yarn, app id = application_1549678248927_0001).Spark session available as 'spark'.Welcome to      ____              __     / __/__  ___ _____/ /__    _\ \/ _ \/ _ `/ __/  '_/   /___/ .__/\_,_/_/ /_/\_\   version 2.3.2      /_/         Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_191)Type in expressions to have them evaluated.Type :help for more information.
scala>
复制代码


  • 输入以下内容,即可统计之前提交的 txt 文件中的单词出现次数,然后将前十名打印出来:


sc.textFile("hdfs://node0:8020/input/GoneWiththeWind.txt").flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _).sortBy(_._2,false).take(10).foreach(println)
复制代码


  • 控制台输出如下,可见任务执行成功:


scala> sc.textFile("hdfs://node0:8020/input/GoneWiththeWind.txt").flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _).sortBy(_._2,false).take(10).foreach(println)(the,18264)                                                                     (and,14150)(to,10020)(of,8615)(a,7571)(her,7086)(she,6217)(was,5912)(in,5751)(had,4502)
复制代码


  • 在网页上查看 yarn 信息,如下图:


java 版本的任务提交

  • 如果您的开发语言是 java,请将应用编译构建为 jar 包,然后执行以下命令,就会以 client 模式提交任务到 yarn:


~/spark-2.3.2-bin-hadoop2.7/bin/spark-submit \--master yarn \--deploy-mode client \--class com.bolingcavalry.sparkwordcount.WordCount \--executor-memory 512m \--total-executor-cores 2 \~/jars/sparkwordcount-1.0-SNAPSHOT.jar \192.168.119.163 \8020 \GoneWiththeWind.txt
复制代码


停止 hadoop 和 spark

  • 如果需要停止 hadoop 和 spark 服务,命令和顺序如下:


~/spark-2.3.2-bin-hadoop2.7/sbin/stop-all.sh \&& ~/hadoop-2.7.7/sbin/mr-jobhistory-daemon.sh stop historyserver \&& ~/hadoop-2.7.7/sbin/stop-yarn.sh \&& ~/hadoop-2.7.7/sbin/stop-dfs.sh
复制代码


  • 至此,Spark on Yarn 模式的集群部署和验证已经完成,希望能够带给您一些参考;

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...


发布于: 刚刚阅读数: 3
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018.04.19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
部署Spark2.2集群(on Yarn模式)_大数据_程序员欣宸_InfoQ写作社区