基于YARN HA集群的Spark HA集群

前言

  在前面的《基于hadoop3.1.2分布式平台上部署spark HA集群》,这篇是基于非HA模式下hadoop集群的spark集群HA配置,而本文将给出基于HA模式下hadoop集群的spark集群HA配置,并将yarn HA集群映入到spark中,做资源管理。为何要做些环境的配置呢?因为到本篇文章为止,已经完成hadoop HA集群、hbaseHA集群,hive集群(非HA)、sparkHA集群、flumeHA集群、kafka HA集群,实现实时数据流动,接下的文章重点探讨spark streaming、spark以及pyspark相关知识,这将涉及多个计算任务以及相关计算资源的分配,因此需要借助yarn HA集群强大的资源管理服务来管理spark的计算任务,从而实现完整的、接近生产环境的、HA模式下的大数据实时分析项目的架构。
服务器资源分配表(仅列出yarn和spark):

节点 yarn 角色 spark 角色
nn ResourceManager, NodeManager Master,Worker
dn1 NodeManager Worker
dn2 ResourceManager, NodeManager Master,Worker

  这里再提下yarn管理大数据集群计算中对资源有效管理(主要指CPU、物理内存以及虚拟内存)的重要性:

  整个集群的计算任务由ResourceManager和NodeManager共同完成,其中,ResourceManager中的调度器负责资源的分配,而NodeManager则负责资源的供给和隔离。ResourceManager将某个NodeManager上资源分配给任务(这就是所谓的“资源调度”)后,NodeManager需按照要求为计算任务提供相应的资源,甚至保证这些资源应具有独占性,为任务运行提供基础的保证,这就是所谓的资源隔离。

因为spark就是负责计算,有大量计算任务要运行,每个任务总得分配cpu和内存给它用,否则某些计算任务会被“饿死”(巧妇难为无米之炊),这种比喻比较形象。

1、yarn HA模式的配置

yarn HA模式的运行是于hadoop HA模式运行的,关于hadoop HA部署和测试可以参考本博客文章《基于Hadoop HA集群部署HBase HA集群(详细版)》的第6章内容,考虑到后面文章将会给出各种spark计算任务,结合测试服务器本身cpu和内存资源有限,这里主要重点介绍yarn-site.xml和mapred-site.xml配置文件说明。

1.1 完整 yarn-site.xml配置

yarn-site的配置其实分为两大块:第一部分为yarn HA集群的配置,第二部分为根据现有测试服务器资源来优化yarn配置。
yarn-site.xml在三个节点上都使用相同配置,无需更改
第一部分:yarn HA集群的配置
(注意这里仅给出property,若复制该配置内容,需在xml文件里面加入<configuration></configuration>

  <!-- 启用yarn HA高可用性 -->
  <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
  </property>

  <!-- 指定resourcemanager的名字,自行命名,跟服务器hostname无关 -->
  <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>hayarn</value>
  </property>

  <!-- 使用了2个resourcemanager,分别指定Resourcemanager的地址 -->
  <property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
  </property>
  
  <!-- 指定nn节点为rm1 -->
  <property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>nn</value>
  </property>
  
  <!-- 指定dn2节点为rm2  -->
  <property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>dn2</value>
  </property>
  
  <!-- 指定当前机器nn作为主rm1 -->
  <property>
    <name>yarn.resourcemanager.ha.id</name>
    <value>rm1</value>
  </property>
  
  <!-- 指定zookeeper集群机器 -->
  <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>nn:2181,dn1:2181,dn2:2181</value>
  </property>
  
  <!-- NodeManager上运行的附属服务,默认是mapreduce_shuffle -->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>


以上将nn和dn2作为yarn集群主备节点,对应的id为rm1、rm2

第二部分:yarn的优化配置
A、禁止检查每个任务正使用的物理内存量、虚拟内存量是否可用
若任务超出分配值,则将其杀掉。考虑到作为测试环境,希望看到每个job都能正常运行,以便记录其他观测事项,这里将其关闭。

  <property>
   	<name>
### Spark HA 集群部署教程 #### 1. 前提条件 为了成功部署 Spark 的高可用性(HA集群,需满足以下前提条件: - 已经搭建并正常运行 Hadoop 集群,并完成 SSH 免密登录配置[^4]。 - Java 运行环境已正确安装。 #### 2. 启用 Standby Master 节点 Spark 支持通过 ZooKeeper 实现 Master 节点的高可用性。以下是具体操作方法: ##### 2.1 安装 ZooKeeper ZooKeeper 是实现 Spark HA 所必需的服务组件。确保在所有节点上都安装了最新版本的 ZooKeeper 并启动服务。 ##### 2.2 修改 `spark-env.sh` 文件 编辑 `$SPARK_HOME/conf/spark-env.sh` 文件,在其中设置如下参数以启用 ZooKeeper: ```bash export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181" ``` 上述命令中的 `zookeeper1`, `zookeeper2`, 和 `zookeeper3` 应替换为实际的 ZooKeeper 主机名或 IP 地址[^1]。 #### 3. 配置日志记录功能 如果希望保存事件日志以便后续分析,则可以按照以下方式修改配置文件: ```properties spark.master yarn spark.eventLog.enabled true spark.eventLog.dir hdfs://fate-cluster/tmp/spark/event spark.yarn.jars hdfs://fate-cluster/tmp/spark/jars/*.jar ``` 这些属性可以通过提交作业时指定或者直接写入 `conf/spark-defaults.conf` 中来生效[^2]。 #### 4. 数据库驱动支持 当需要访问外部数据库如 MySQL 时,应将对应的 JDBC 驱动程序复制至 Spark 的 JAR 目录下: ```bash cp /path/to/mysql-connector-java-5.1.27-bin.jar $SPARK_HOME/jars/ ``` 此步骤可参照 Hive 使用场景下的说明执行[^3]。 #### 5. 测试输入路径是否存在 最后一步是在正式运行之前验证数据源是否可达。例如创建测试目录 `/test/input` 可按如下指令完成: ```bash hdfs dfs -mkdir -p /test/input ``` 该命令会递归建立所需层次结构[^5]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值