热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

YARN回顾(七)——Spark在YARN上的运行模式

SparkOnYarn在YARN上启动Spark应用有两种模式。在cluster模式下,Spark驱动器(driver)在YARNApp

Spark On Yarn

在YARN上启动Spark应用有两种模式。在cluster模式下,Spark驱动器(driver)在YARN Application Master中运行(运行于集群中),因此客户端可以在Spark应用启动之后关闭退出。而client模式下,Spark驱动器在客户端进程中,这时的YARN Application Master只用于向YARN申请资源。

1 cluster运行

运行命令

$ ./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode cluster [options] [app options]# 示例
$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi \--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--executor-memory 2g \
--executor-cores 1 \
--queue thequeue \
--jars my-other-jar.jar,my-other-other-jar.jar \
lib/spark-examples*.jar \app_arg1 app_arg212345678910111213

执行步骤

Spark On Yarn

3.2.2 client运行

执行命令

$ ./bin/spark-shell --master yarn --deploy-mode client1

优化

基于两方面优化:调度器和内存配置。

调度器

根据业务需要选择fair或capacity调度器。同时根据节点物理资源(性能)的高低,可以打标签,例如高配置节点、低配置节点和一般节点。

内存优化

依照以下属性计算推荐的配置

  • RAM(Amount of memory)总内存数
  • CORES(Number of CPU cores)CPU内核数
  • DISKS(Number of disks)硬盘数

每个节点的总内存系统内存HBase内存
4G1G1G
8G2G1G
16G2G2G
24G4G4G
48G6G8G
64G8G8G
72G8G8G
96G12G16G
128G24G24G
256G32G32G
512G64G64G

Container的最大数计算方式:

min (2*CORES, 1.8*DISKS, (Total available RAM) / MIN_CONTAINER_SIZE)1

其中MIN_CONTAINER_SIZE是容器的最小内存,可以根据下表获得

每个节点的总内存容器最小内存的推荐值
小于4G256M
4~8G512M
8~24G1024M
大于24G2048M

最终容器的内存由下式计算获得:

RAM-per-Container = max (MIN_CONTAINER_SIZE, (Total Available RAM) / Containers))1

最后YARN和MR的配置为:

配置文件属性
yarn-site.xmlyarn.nodemanager.resource.memory-mbContainers * RAM-per-Container
yarn-site.xmlyarn.scheduler.minimum-allocation-mbRAM-per-Container
yarn-site.xmlyarn.scheduler.maximum-allocation-mbcontainers * RAM-per-Container
mapred-site.xmlmapreduce.map.memory.mbRAM-per-Container
mapred-site.xmlmapreduce.reduce.memory.mb2 * RAM-per-Container
mapred-site.xmlmapreduce.map.java.opts0.8 * RAM-per-Container
mapred-site.xmlmapreduce.reduce.java.opts0.8 * 2 * RAM-per-Container
yarn-site.xml (check)yarn.app.mapreduce.am.resource.mb2 * RAM-per-Container
yarn-site.xml (check)yarn.app.mapreduce.am.command-opts0.8 * 2 * RAM-per-Container

例如:

集群节点是12核CPU、48G和12块硬盘

保留内存 = 6 GB 系统使用 + (如果有HBase) 8 GB HBase使用
容器最小内存 = 2 GB

无HBase

容器数 = min (2 * 12, 1.8 * 12, (48-6)/2) = min (24, 21.6, 21) = 21
每个容器的内存 = max (2, (48-6)/21) = max (2, 2) = 2

属性
yarn.nodemanager.resource.memory-mb= 21 * 2 = 42 * 1024 MB
yarn.scheduler.minimum-allocation-mb= 2 * 1024 MB
yarn.scheduler.maximum-allocation-mb= 21 * 2 = 42 * 1024 MB
mapreduce.map.memory.mb= 2 * 1024 MB
mapreduce.reduce.memory.mb= 2 * 2 = 4 * 1024 MB
mapreduce.map.java.opts= 0.8 * 2 = 1.6 * 1024 MB
mapreduce.reduce.java.opts= 0.8 * 2 * 2 = 3.2 * 1024 MB
yarn.app.mapreduce.am.resource.mb= 2 * 2 = 4 * 1024 MB
yarn.app.mapreduce.am.command-opts= 0.8 * 2 * 2 = 3.2 * 1024 MB

有HBase

容器数 = min (2 * 12, 1.8 * 12, (48-6-8)/2) = min (24, 21.6, 17) = 17
每个容器的内存 = max (2, (48-6-8)/17) = max (2, 2) = 2

属性
yarn.nodemanager.resource.memory-mb= 17 * 2 = 34 * 1024 MB
yarn.scheduler.minimum-allocation-mb= 2 * 1024 MB
yarn.scheduler.maximum-allocation-mb= 17 * 2 = 34 * 1024 MB
mapreduce.map.memory.mb= 2 * 1024 MB
mapreduce.reduce.memory.mb= 2 * 2 = 4 * 1024 MB
mapreduce.map.java.opts= 0.8 * 2 = 1.6 * 1024 MB
mapreduce.reduce.java.opts= 0.8 * 2 * 2 = 3.2 * 1024 MB
yarn.app.mapreduce.am.resource.mb= 2 * 2 = 4 * 1024 MB
yarn.app.mapreduce.am.command-opts= 0.8 * 2 * 2 = 3.2 * 1024 MB


推荐阅读
  • 深入解析Hadoop的核心组件与工作原理
    本文详细介绍了Hadoop的三大核心组件:分布式文件系统HDFS、资源管理器YARN和分布式计算框架MapReduce。通过分析这些组件的工作机制,帮助读者更好地理解Hadoop的架构及其在大数据处理中的应用。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • Kubernetes 持久化存储与数据卷详解
    本文深入探讨 Kubernetes 中持久化存储的使用场景、PV/PVC/StorageClass 的基本操作及其实现原理,旨在帮助读者理解如何高效管理容器化应用的数据持久化需求。 ... [详细]
  • 离线安装Grafana Cloudera Manager插件并监控CDH集群
    本文详细介绍如何离线安装Cloudera Manager (CM) 插件,并通过Grafana监控CDH集群的健康状况和资源使用情况。该插件利用CM提供的API接口进行数据获取和展示。 ... [详细]
  • 深入解析Spark核心架构与部署策略
    本文详细探讨了Spark的核心架构,包括其运行机制、任务调度和内存管理等方面,以及四种主要的部署模式:Standalone、Apache Mesos、Hadoop YARN和Kubernetes。通过本文,读者可以深入了解Spark的工作原理及其在不同环境下的部署方式。 ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文探讨了高质量C/C++编程的最佳实践,并详细分析了常见的内存错误及其解决方案。通过深入理解内存管理和故障排除技巧,开发者可以编写更健壮的程序。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文介绍了一种在 MySQL 客户端执行 NOW() 函数时出现时间偏差的问题,并详细描述了如何通过配置文件调整时区设置来解决该问题。演示场景中,假设当前北京时间为2023年2月17日19:31:37,而查询结果显示的时间比实际时间晚8小时。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 本文详细介绍了 Java 中的 org.apache.hadoop.registry.client.impl.zk.ZKPathDumper 类,提供了丰富的代码示例和使用指南。通过这些示例,读者可以更好地理解如何在实际项目中利用 ZKPathDumper 类进行注册表树的转储操作。 ... [详细]
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • Hadoop发行版本选择指南:技术解析与应用实践
    本文详细介绍了Hadoop的不同发行版本及其特点,帮助读者根据实际需求选择最合适的Hadoop版本。内容涵盖Apache Hadoop、Cloudera CDH等主流版本的特性及应用场景。 ... [详细]
  • Ubuntu GamePack:专为游戏爱好者打造的Linux发行版
    随着Linux系统在游戏领域的应用越来越广泛,许多Linux用户开始寻求在自己的系统上畅玩游戏的方法。UALinux,一家致力于推广GNU/Linux使用的乌克兰公司,推出了基于Ubuntu 16.04的Ubuntu GamePack,旨在为Linux用户提供一个游戏友好型的操作环境。 ... [详细]
author-avatar
辞骸
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有