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

简介: 部署Spark on Yarn集群

欢迎访问我的GitHub

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

机器规划

  • 本次实战用到了三台CentOS7的机器,身份信息如下所示:
IP地址 hostname(主机名) 身份
192.168.119.163 node0 NameNode、ResourceManager、HistoryServer、Master
192.168.119.164 node1 DataNode、NodeManager、Worker
192.168.119.165 node2 DataNode、NodeManager、Worker 、SecondaryNameNode
  • 要注意的地方:
  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 applicable
Setting 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:4040
Spark 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模式的集群部署和验证已经完成,希望能够带给您一些参考;

欢迎关注阿里云开发者社区博客:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...
相关文章
|
1月前
|
分布式计算 资源调度 大数据
【决战大数据之巅】:Spark Standalone VS YARN —— 揭秘两大部署模式的恩怨情仇与终极对决!
【8月更文挑战第7天】随着大数据需求的增长,Apache Spark 成为关键框架。本文对比了常见的 Spark Standalone 与 YARN 部署模式。Standalone 作为自带的轻量级集群管理服务,易于设置,适用于小规模或独立部署;而 YARN 作为 Hadoop 的资源管理系统,支持资源的统一管理和调度,更适合大规模生产环境及多框架集成。我们将通过示例代码展示如何在这两种模式下运行 Spark 应用程序。
139 3
|
17天前
|
资源调度 分布式计算 Hadoop
搭建YARN集群
文章介绍了如何搭建YARN集群,包括启动HDFS集群、修改YARN配置文件、启动ResourceManager和NodeManager节点,并提供了用于管理Hadoop集群的自定义脚本。
27 2
|
1月前
|
SQL 分布式计算 监控
|
17天前
|
分布式计算 资源调度 Hadoop
在YARN集群上运行部署MapReduce分布式计算框架
主要介绍了如何在YARN集群上配置和运行MapReduce分布式计算框架,包括准备数据、运行MapReduce任务、查看任务日志,并启动HistoryServer服务以便于日志查看。
31 0
|
2月前
|
SQL 弹性计算 资源调度
云服务器 ECS产品使用问题之bin/spark-sql --master yarn如何进行集群模式运行
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
1月前
|
资源调度 Oracle Java
实时计算 Flink版产品使用问题之在YARN集群上运行时,如何查看每个并行度的详细处理数据情况
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
17天前
|
资源调度 分布式计算 Hadoop
YARN(Hadoop操作系统)的架构
本文详细解释了YARN(Hadoop操作系统)的架构,包括其主要组件如ResourceManager、NodeManager和ApplicationMaster的作用以及它们如何协同工作来管理Hadoop集群中的资源和调度作业。
33 3
YARN(Hadoop操作系统)的架构
|
17天前
|
资源调度 分布式计算 Hadoop
使用YARN命令管理Hadoop作业
本文介绍了如何使用YARN命令来管理Hadoop作业,包括查看作业列表、检查作业状态、杀死作业、获取作业日志以及检查节点和队列状态等操作。
21 1
使用YARN命令管理Hadoop作业
|
27天前
|
资源调度 分布式计算 算法
【揭秘Yarn调度秘籍】打破资源分配的枷锁,Hadoop Yarn权重调度全攻略!
【8月更文挑战第24天】在大数据处理领域,Hadoop Yarn 是一种关键的作业调度与集群资源管理工具。它支持多种调度器以适应不同需求,默认采用FIFO调度器,但可通过引入基于权重的调度算法来提高资源利用率。该算法根据作业或用户的权重值决定资源分配比例,权重高的可获得更多计算资源,特别适合多用户共享环境。管理员需在Yarn配置文件中启用特定调度器(如CapacityScheduler),并通过设置队列权重来实现资源的动态调整。合理配置权重有助于避免资源浪费,确保集群高效运行,满足不同用户需求。
32 3
|
4月前
|
资源调度 分布式计算 Hadoop
Hadoop Yarn 核心调优参数
这是一个关于测试集群环境的配置说明,包括3台服务器(master, slave1, slave2)运行CentOS 7.5,每台有4核CPU和4GB内存。集群使用Hadoop 3.1.3,JDK1.8。Yarn核心配置涉及调度器选择、ResourceManager线程数、节点检测、逻辑处理器使用、核心转换乘数、NodeManager内存和CPU设置,以及容器的内存和CPU限制。配置完成后,需要重启Hadoop并检查yarn配置。

相关实验场景

更多