CDH 在YARN上运行Spark应用程序 - 简书


本站和网页 https://www.jianshu.com/p/cb6113f21cf7 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

CDH 在YARN上运行Spark应用程序 - 简书登录注册写文章首页下载APP会员IT技术CDH 在YARN上运行Spark应用程序金刚_30bf关注赞赏支持CDH 在YARN上运行Spark应用程序翻译: https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_ig_running_spark_on_yarn.html
版本: 5.14.2
在YARN上运行Spark应用程序
当Spark应用程序在YARN集群管理器上运行时,资源管理,调度和安全性由YARN控制。
继续阅读:
部署模式
配置环境
在YARN上运行Spark Shell应用程序
将Spark应用程序提交给YARN
监视和调试Spark应用程序
例如:在YARN上运行SparkPi
在YARN应用程序上配置Spark
动态分配
优化CDH部署中的YARN模式
部署模式
在YARN中,每个应用程序实例都有一个ApplicationMaster进程,该进程是为该应用程序启动的第一个容器。应用程序负责从ResourceManager请求资源。一旦分配了资源,应用程序将指示NodeManagers代表它启动容器。ApplicationMasters消除了对活动客户端的需求:客户端上启动应用程序的进程可以终止,YARN进行协作管理的进程继续进行。
有关指定部署模式的选项,请参阅spark-submit选项。
群集部署模式
在集群模式下,Spark驱动程序在集群主机上的ApplicationMaster中运行。YARN容器中的单个进程负责驱动应用程序并向YARN请求资源。启动应用程序的客户端不需要在应用程序的生命周期中运行。
图片.png
集群模式不太适合交互式使用Spark。需要用户输入的Spark应用程序,例如 spark-shell and pyspark,需要Spark驱动程序在启动Spark应用程序的客户端进程中运行。
客户端部署模式
在客户端模式下,Spark驱动程序在提交作业的主机上运行。ApplicationMaster仅负责从YARN请求执行程序容器。容器启动后,客户端与容器通信以安排工作。
图片.png
Deployment Mode Summary
Mode
YARN客户端模式
YARN集群模式
Driver runs in
客户
ApplicationMaster
Requests resources
ApplicationMaster
ApplicationMaster
Starts executor processes
YARN NodeManager
YARN NodeManager
Persistent services
YARN ResourceManager和NodeManagers
YARN ResourceManager和NodeManagers
Supports Spark Shell
YES
No
配置环境
Spark要求客户端配置文件包含 HADOOP_CONF_DIR or YARN_CONF_DIR 环境变量,指向集群目录。这些配置用于写入HDFS并连接到YARN ResourceManager。如果您使用Cloudera Manager部署,则会自动配置这些变量。如果您使用的是非托管部署,请确保按照在YARN上运行Spark中所述设置变量。
在YARN上运行Spark Shell应用程序
在YARN上使用运行spark-shell or pyspark ,使用 --master yarn --deploy-mode client 启动应用程序。
如果您正在使用Cloudera Manager部署,则会自动配置这些属性。
将Spark应用程序提交给YARN
要向YARN提交应用,请使用spark-submit,指定--master yarn 选项,请参阅spark-submit参数。
监视和调试Spark应用程序
要获取有关Spark应用程序行为的信息,可以参考YARN日志和Spark Web应用程序UI。这两种方法提供补充信息。有关如何查看由Spark应用程序和Spark Web应用程序UI创建的日志的信息,请参阅监控Spark应用程序。
例如:在YARN上运行SparkPi
这些例子演示了如何使用 spark-submit 用各种选项提交SparkPi Spark示例应用程序。在这些例子中,在JAR控制了逼近应该与pi接近多少之后通过的参数。
在CDH部署中,SPARK_HOME 默认为/usr/lib/spark 在包装安装和 </opt/cloudera/parcels/CDH/lib/spark在包裹安装中。在Cloudera Manager部署中,shell也可从 /usr/bin。
在YARN集群模式下运行SparkPi
在集群模式下运行SparkPi:
CDH 5.2和更低
spark-submit --class org.apache.spark.examples.SparkPi --master yarn \
--deploy-mode cluster SPARK_HOME/examples/lib/spark-examples.jar 10
CDH 5.3和更高
spark-submit --class org.apache.spark.examples.SparkPi --master yarn \
--deploy-mode cluster SPARK_HOME/lib/spark-examples.jar 10
该命令会打印状态,直到作业完成或您按下control-C。终止spark-submit 集群模式下的进程不会像在客户端模式下那样终止Spark应用程序。要监视正在运行的应用程序的状态,请运行yarn application -list.
在YARN客户端模式下运行SparkPi
在客户端模式下run SparkPi:
CDH 5.2和更低
spark-submit --class org.apache.spark.examples.SparkPi --master yarn \
--deploy-mode client SPARK_HOME/examples/lib/spark-examples.jar 10
CDH 5.3和更高
spark-submit --class org.apache.spark.examples.SparkPi --master yarn \
--deploy-mode client SPARK_HOME/lib/spark-examples.jar 10
在YARN集群模式下运行Python SparkPi
解压缩Python示例存档:
sudo su gunzip SPARK_HOME/lib/python.tar.gz
sudo su tar xvf SPARK_HOME/lib/python.tar
run pi.py 文件:
spark-submit --master yarn --deploy-mode cluster SPARK_HOME/lib/pi.py 10
在YARN应用程序上配置Spark
除了spark-submit选项之外,在YARN上运行spark-submit的其他选项。
spark-submit on YARN Options
选项
描述
archives
逗号分隔的archives列表,被提取到每个执行者的工作目录中。对于 客户端部署模式,路径必须指向本地文件。对于集群部署模式,路径可以是本地文件,也可以是集群内全局可见的URL; 请参阅高级依赖关系管理。
executor-cores
每个执行器上分配的处理器内核数量。或者,您可以使用 spark.executor.cores 属性。
executor-memory
分配给每个执行程序的最大堆大小。或者,您可以使用spark.executor.memory 属性。
num-executors
为此应用程序分配的YARN容器总数。或者,您可以使用spark.executor.instances 属性。
queue
提交作业的YARN队列。有关更多信息,请参阅将应用程序和查询分配给资源池。默认: default。
在初始安装期间,Cloudera Manager根据您的群集环境调整属性。
除了命令行选项外,还提供以下属性:
属性
描述
spark.yarn.driver.memoryOverhead
每个驱动程序可以从YARN请求的额外off-heap 存储量。结合spark.driver.memory,这是YARN可用于为驱动程序进程创建JVM的总内存。
spark.yarn.executor.memoryOverhead
每个执行程序进程可从YARN请求的额外堆外存量。结合spark.executor.memory,这是YARN可用于为执行程序进程创建JVM的总内存。
动态分配
动态分配允许Spark根据工作负载动态扩展分配给应用程序的集群资源。当启用动态分配并且Spark应用程序有待处理任务的积压时,它可以请求执行程序。当应用程序空闲时,其执行程序将被释放并可被其他应用程序获取。
从CDH 5.5开始,默认启用动态分配。动态分配属性描述了控制动态分配的属性。
如果你设置spark.dynamicAllocation.enabled 为false 或使用 --num-executors 命令行参数或设置 spark.executor.instances 时,动态分配被禁用。有关动态分配如何工作的更多信息,请参阅资源分配策略。
当启用Spark动态资源分配时,所有资源都会分配给第一个可用的作业,导致后续应用程序排队。为了允许应用程序并行获取资源,将资源分配给池,在池中运行应用程序,并允许池中运行的应用程序被抢占。请参阅动态资源池。
如果您正在使用Spark Streaming,请参阅Spark Streaming和Dynamic Allocation中的建议。
动态分配属性
图片.png
优化非 CM 部署CDH中的YARN模式
在不由Cloudera Manager管理的CDH部署中,Spark每次(spark-submit)运行时都会将Spark程序集JAR文件复制到HDFS 。您可以通过执行以下任一操作来避免此复制:
设置 spark.yarn.jar 为 JAR的本地路径:local:/usr/lib/spark/lib/spark-assembly.jar. 。
上传JAR并配置JAR位置:
手动将Spark程序集JAR文件上传到HDFS:
$ hdfs dfs -mkdir -p /user/spark/share/lib
$ hdfs dfs -put SPARK_HOME/assembly/lib/spark-assembly_*.jar /user/spark/share/lib/spark-assembly.jar
每次将Spark升级到新的 CDH版本时,您都必须手动上载JAR。
2. 设置spark.yarn.jar 为 HDFS路径:
spark.yarn.jar=hdfs://namenode:8020/user/spark/share/lib/spark-assembly.jar
推荐阅读更多精彩内容spark集群部署1. spark三种分布式部署模式 Spark支持的主要的三种分布式部署方式分别是standalone、spark...ZPPenny阅读 9,440评论 0赞 5yarn应用场景基本架构和资源调度YarnYarn产生背景:Yarn直接来自于MR1.0MR1.0 问题:采用的是master slave结构,ma...时待吾阅读 4,934评论 2赞 23Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames...Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...Joyyx阅读 7,864评论 0赞 16CDH 运行Spark 应用程序翻译: https://www.cloudera.com/documentation/enterprise/la...金刚_30bf阅读 2,171评论 1赞 0Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames...Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...草里有只羊阅读 17,783评论 0赞 852017-08-28今天早上6:00多我们终于踏上了帕劳的国土因为行程已经压缩成三停了所以我们没有休息的时间吃过早饭就在导游索尼和马克...jsabc阅读 69评论 0赞 1培养一个淘宝好客服上两个月搬仓库,累 的个半死,更不巧的是客服方面又出了状况,更是雪上加霜,痛定思痛, 还是需要自己来培养客服,在网...船长辛巴达阅读 724评论 4赞 12征文|马娃子,天空一直都是圆的。“死了!已经被打死了!” 窗子外面的鹅毛大雪已经下了几个时辰,连同照壁下面的碾盘上也已经被大雪覆盖,高高凸起的地方...林素九阅读 602评论 5赞 60最美的表情叫做羞涩,最美的感觉叫做怦然心动我记得前句话是听我高二的语文老师说的,我自己是很认同这个答案。其实之前从来就没去思考过这个问题,我相信大家一开始都...夏木xiamu阅读 624评论 0赞 0评论0赞33赞4赞赞赏更多好文