目录
I. Yarn Cluster
II. yarn-client
首页 数据库 mysql教程 纱线上的火花

纱线上的火花

Jun 07, 2016 pm 04:39 PM
spark yarn

Spark在YARN中有yarn-cluster和yarn-client两种运行模式: I. Yarn Cluster Spark Driver首先作为一个ApplicationMaster在YARN集群中启动,客户端提交给ResourceManager的每一个job都会在集群的worker节点上分配一个唯一的ApplicationMaster,由该Application

Spark在YARN中有yarn-cluster和yarn-client两种运行模式:

I. Yarn Cluster

Spark Driver首先作为一个ApplicationMaster在YARN集群中启动,客户端提交给ResourceManager的每一个job都会在集群的worker节点上分配一个唯一的ApplicationMaster,由该ApplicationMaster管理全生命周期的应用。因为Driver程序在YARN中运行,所以事先不用启动Spark Master/Client,应用的运行结果不能在客户端显示(可以在history server中查看),所以最好将结果保存在HDFS而非stdout输出,客户端的终端显示的是作为YARN的job的简单运行状况。
纱线上的火花
by @Sandy Ryza
纱线上的火花
by 明风@taobao
从terminal的output中看到任务初始化更详细的四个步骤:

14/09/28 11:24:52 INFO RMProxy: Connecting to ResourceManager at hdp01/172.19.1.231:8032
14/09/28 11:24:52 INFO Client: Got Cluster metric info from ApplicationsManager (ASM), number of NodeManagers: 4
14/09/28 11:24:52 INFO Client: Queue info ... queueName: root.default, queueCurrentCapacity: 0.0, queueMaxCapacity: -1.0,
      queueApplicationCount = 0, queueChildQueueCount = 0
14/09/28 11:24:52 INFO Client: Max mem capabililty of a single resource in this cluster 8192
14/09/28 11:24:53 INFO Client: Uploading file:/usr/lib/spark/examples/lib/spark-examples_2.10-1.0.0-cdh5.1.0.jar to hdfs://hdp01:8020/user/spark/.sparkStaging/application_1411874193696_0003/spark-examples_2.10-1.0.0-cdh5.1.0.jar
14/09/28 11:24:54 INFO Client: Uploading file:/usr/lib/spark/assembly/lib/spark-assembly-1.0.0-cdh5.1.0-hadoop2.3.0-cdh5.1.0.jar to hdfs://hdp01:8020/user/spark/.sparkStaging/application_1411874193696_0003/spark-assembly-1.0.0-cdh5.1.0-hadoop2.3.0-cdh5.1.0.jar
14/09/28 11:24:55 INFO Client: Setting up the launch environment
14/09/28 11:24:55 INFO Client: Setting up container launch context
14/09/28 11:24:55 INFO Client: Command for starting the Spark ApplicationMaster: List($JAVA_HOME/bin/java, -server, -Xmx512m, -Djava.io.tmpdir=$PWD/tmp, -Dspark.master=\"spark://hdp01:7077\", -Dspark.app.name=\"org.apache.spark.examples.SparkPi\", -Dspark.eventLog.enabled=\"true\", -Dspark.eventLog.dir=\"/user/spark/applicationHistory\",  -Dlog4j.configuration=log4j-spark-container.properties, org.apache.spark.deploy.yarn.ApplicationMaster, --class, org.apache.spark.examples.SparkPi, --jar , file:/usr/lib/spark/examples/lib/spark-examples_2.10-1.0.0-cdh5.1.0.jar, , --executor-memory, 1024, --executor-cores, 1, --num-executors , 2, 1>, /stdout, 2>, /stderr)
14/09/28 11:24:55 INFO Client: Submitting application to ASM
14/09/28 11:24:55 INFO YarnClientImpl: Submitted application application_1411874193696_0003
14/09/28 11:24:56 INFO Client: Application report from ASM:
application identifier: application_1411874193696_0003
     appId: 3
     clientToAMToken: null
     appDiagnostics: 
     appMasterHost: N/A
     appQueue: root.spark
     appMasterRpcPort: -1
     appStartTime: 1411874695327
     yarnAppState: ACCEPTED
     distributedFinalState: UNDEFINED
     appTrackingUrl: http://hdp01:8088/proxy/application_1411874193696_0003/
     appUser: spark
登录后复制

1. 由client向ResourceManager提交请求,并上传jar到HDFS上
这期间包括四个步骤:
a). 连接到RM
b). 从RM ASM(ApplicationsManager )中获得metric、queue和resource等信息。
c). upload app jar and spark-assembly jar
d). 设置运行环境和container上下文(launch-container.sh等脚本)
2. ResouceManager向NodeManager申请资源,创建Spark ApplicationMaster(每个SparkContext都有一个ApplicationMaster)
3. NodeManager启动Spark App Master,并向ResourceManager AsM注册
4. Spark ApplicationMaster从HDFS中找到jar文件,启动DAGscheduler和YARN Cluster Scheduler
5. ResourceManager向ResourceManager AsM注册申请container资源(INFO YarnClientImpl: Submitted application)
6. ResourceManager通知NodeManager分配Container,这时可以收到来自ASM关于container的报告。(每个container的对应一个executor)
7. Spark ApplicationMaster直接和container(executor)进行交互,完成这个分布式任务。
需要注意的是:
a). Spark中的localdir会被yarn.nodemanager.local-dirs替换
b). 允许失败的节点数(spark.yarn.max.worker.failures)为executor数量的两倍数量,最小为3.
c). SPARK_YARN_USER_ENV传递给spark进程的环境变量
d). 传递给app的参数应该通过–args指定。
部署:
环境介绍:
hdp0[1-4]四台主机
hadoop使用CDH 5.1版本: hadoop-2.3.0 cdh5.1.0 795-1.cdh5.1.0.p0.58.el6.x86_64
直接下载对应2.3.0的pre-build版本http://spark.apache.org/downloads.html
下载完毕后解压,检查spark-assembly目录:
file /home/spark/spark-1.1.0-bin-hadoop2.3/lib/spark-assembly-1.1.0-hadoop2.3.0.jar
/home/spark/spark-1.1.0-bin-hadoop2.3/lib/spark-assembly-1.1.0-hadoop2.3.0.jar: Zip archive data, at least v2.0 to extract
然后输出环境变量HADOOP_CONF_DIR/YARN_CONF_DIR和SPARK_JAR(可以设置到spark-env.sh中)
export HADOOP_CONF_DIR=/etc/hadoop/etc
export SPARK_JAR=/home/spark/spark-1.1.0-bin-hadoop2.3/lib/spark-assembly-1.1.0-hadoop2.3.0.jar
如果使用cloudera manager 5,在Spark Service的操作中可以找到Upload Spark Jar将spark-assembly上传到HDFS上。
纱线上的火花

Spark Jar 位置 (HDFS) 
spark_jar_hdfs_path

/user/spark/share/lib/spark- assembly.jar

默认值

Spark jar 在 HDFS 中的位置

Spark 历史记录位置 (HDFS) 
spark.eventLog.dir

/user/spark/applicationHistory

默认值

Spark 应用程序历史日志在 HDFS 中的位置。更改此值不会将现有日志移动到新位置。

提交任务,此时在YARN的web UI和history Server上就可以看到运行状态信息。

spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster /usr/lib/spark/examples/lib/spark-examples_2.10-1.0.0-cdh5.1.0.jar
登录后复制

II. yarn-client

(YarnClientClusterScheduler)查看对应类的文件
在yarn-client模式下,Driver运行在Client上,通过ApplicationMaster向RM获取资源。本地Driver负责与所有的executor container进行交互,并将最后的结果汇总。结束掉终端,相当于kill掉这个spark应用。一般来说,如果运行的结果仅仅返回到terminal上时需要配置这个。
纱线上的火花
客户端的Driver将应用提交给Yarn后,Yarn会先后启动ApplicationMaster和executor,另外ApplicationMaster和executor都 是装载在container里运行,container默认的内存是1G,ApplicationMaster分配的内存是driver- memory,executor分配的内存是executor-memory。同时,因为Driver在客户端,所以程序的运行结果可以在客户端显 示,Driver以进程名为SparkSubmit的形式存在。
配置YARN-Client模式同样需要HADOOP_CONF_DIR/YARN_CONF_DIR和SPARK_JAR变量。
提交任务测试:

spark-submit --class org.apache.spark.examples.SparkPi --deploy-mode client /usr/lib/spark/examples/lib/spark-examples_2.10-1.0.0-cdh5.1.0.jar
terminal output:
14/09/28 11:18:34 INFO Client: Command for starting the Spark ApplicationMaster: List($JAVA_HOME/bin/java, -server, -Xmx512m, -Djava.io.tmpdir=$PWD/tmp, -Dspark.tachyonStore.folderName=\"spark-9287f0f2-2e72-4617-a418-e0198626829b\", -Dspark.eventLog.enabled=\"true\", -Dspark.yarn.secondary.jars=\"\", -Dspark.driver.host=\"hdp01\", -Dspark.driver.appUIHistoryAddress=\"\", -Dspark.app.name=\"Spark Pi\", -Dspark.jars=\"file:/usr/lib/spark/examples/lib/spark-examples_2.10-1.0.0-cdh5.1.0.jar\", -Dspark.fileserver.uri=\"http://172.19.17.231:53558\", -Dspark.eventLog.dir=\"/user/spark/applicationHistory\", -Dspark.master=\"yarn-client\", -Dspark.driver.port=\"35938\", -Dspark.httpBroadcast.uri=\"http://172.19.17.231:43804\",  -Dlog4j.configuration=log4j-spark-container.properties, org.apache.spark.deploy.yarn.ExecutorLauncher, --class, notused, --jar , null,  --args  'hdp01:35938' , --executor-memory, 1024, --executor-cores, 1, --num-executors , 2, 1>, /stdout, 2>, /stderr)
14/09/28 11:18:34 INFO Client: Submitting application to ASM
14/09/28 11:18:34 INFO YarnClientSchedulerBackend: Application report from ASM: 
     appMasterRpcPort: -1
     appStartTime: 1411874314198
     yarnAppState: ACCEPTED
......
登录后复制

##最后将结果输出到terminal中
Pi is roughly 3.14528

^^

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

JavaScript包管理器比较:Npm vs Yarn vs Pnpm JavaScript包管理器比较:Npm vs Yarn vs Pnpm Aug 09, 2022 pm 04:22 PM

本篇文章带大家了解一下三种JavaScript包管理器(npm、yarn、pnpm),并将这三种包管理器进行对比,聊聊npm、yarn、pnpm三者的区别和关联,希望对大家有所帮助,如有问题欢迎指出!

一文浅析JS包管理工具:yarn 一文浅析JS包管理工具:yarn Aug 09, 2022 pm 03:49 PM

yarn 和 npm 一样也是 JavaScript 包管理工具,下面本篇文章就来带大家了解一下yarn包管理工具,希望对大家有所帮助!

十个AI算法常用库Java版 十个AI算法常用库Java版 Jun 13, 2023 pm 04:33 PM

今年ChatGPT火了半年多,热度丝毫没有降下来。深度学习和NLP也重新回到了大家的视线中。公司里有一些小伙伴都在问我,作为一名Java开发人员,如何入门人工智能,是时候拿出压箱底的私藏的学习AI的Java库来介绍给大家。这些库和框架为机器学习、深度学习、自然语言处理等提供了广泛的工具和算法。根据AI项目的具体需求,可以选择最合适的库或框架,并开始尝试使用不同的算法来构建AI解决方案。1.Deeplearning4j它是一个用于Java和Scala的开源分布式深度学习库。Deeplearning

在Go语言中使用Spark实现高效的数据处理 在Go语言中使用Spark实现高效的数据处理 Jun 16, 2023 am 08:30 AM

随着大数据时代的到来,数据处理变得越来越重要。对于各种不同的数据处理任务,不同的技术也应运而生。其中,Spark作为一种适用于大规模数据处理的技术,已经被广泛地应用于各个领域。此外,Go语言作为一种高效的编程语言,也在近年来得到了越来越多的关注。在本文中,我们将探讨如何在Go语言中使用Spark实现高效的数据处理。我们将首先介绍Spark的一些基本概念和原理

探索Java在大数据领域的应用:Hadoop、Spark、Kafka等技术栈的了解 探索Java在大数据领域的应用:Hadoop、Spark、Kafka等技术栈的了解 Dec 26, 2023 pm 02:57 PM

Java大数据技术栈:了解Java在大数据领域的应用,如Hadoop、Spark、Kafka等随着数据量不断增加,大数据技术成为了当今互联网时代的热门话题。在大数据领域,我们常常听到Hadoop、Spark、Kafka等技术的名字。这些技术起到了至关重要的作用,而Java作为一门广泛应用的编程语言,也在大数据领域发挥着巨大的作用。本文将重点介绍Java在大

PHP入门指南:PHP和Spark PHP入门指南:PHP和Spark May 20, 2023 am 08:41 AM

PHP是一种非常流行的服务器端编程语言,因为它简单易学、开放源代码和跨平台。目前,很多大企业都采用PHP语言来构建应用程序,例如Facebook和WordPress等。Spark是一种快速且轻量级的开发框架,可用于构建Web应用程序。它基于Java虚拟机(JVM)并且与PHP结合使用。本文将介绍如何使用PHP和Spark构建Web应用程序。什么是PHP?PH

react安装yarn一直报不是内部命令怎么办 react安装yarn一直报不是内部命令怎么办 Jan 04, 2023 am 09:24 AM

react安装yarn一直报不是内部命令的解决办法:1、通过命令“pm uninstall yarn -g”卸载yarn;2、使用“npm install yarn”重新安装yarn;3、在系统变量path中添加“C:\WINDOWS\system32\node_modules\yarn\bin”;4、重新打开cmd执行“yarn -v”命令即可。

利用PHP实现大规模数据处理:Hadoop、Spark、Flink等 利用PHP实现大规模数据处理:Hadoop、Spark、Flink等 May 11, 2023 pm 04:13 PM

随着数据量的不断增加,大规模数据处理已经成为了企业必须面对和解决的问题。传统的关系型数据库已经无法满足这种需求,而对于大规模数据的存储和分析,Hadoop、Spark、Flink等分布式计算平台成为了最佳选择。在数据处理工具的选择过程中,PHP作为一种易于开发和维护的语言,越来越受到开发者的欢迎。在本文中,我们将探讨如何利用PHP来实现大规模数据处理,以及如

See all articles