运维系列:05、Spark on Yarn

Spark 0.6.0开始支持此功能

准备:

运行Spark-on-YARN需要Spark的二进制发布包。参考编译

配置:

环境变量:

SPARK_YARN_USER_ENV

用户可以在这个参数中设置Spark on YARN的环境变量,可以省略。

例如:SPARK_YARN_USER_ENV="JAVA_HOME=/jdk64,FOO=bar"。

// TODO 具体可配置项

SPARK_JAR

设置Spark jar在HDFS的位置。

例如:export SPARK_JAR=hdfs:///some/path.

在每台Hadoop NodeManager节点上设置变量

启动:

确保HADOOP_CONF_DIR或YARN_CONF_DIR所指向的目录包含Hadoop集群的配置文件。这些配置文件用来连接YARN的ResourceManager并写数据到DFS。

此为提交任务的Spark安装,为了使用spark-submit工具。因此,只在此机器上配置便可。

有两种模式:

yarn-cluster:Spark的driver运行YARN集群启动的一个application master进程中,client在初始化application后可以消失。 生产环境

yarn-client:Spark的driver运行在client进程中,而application master只用来向YARN申请资源。测试使用?//TODO 做验证

不像Spark standalon和mesos模式,在那儿master地址使用指定的master参数;在YARN模式中,ResourceManager的地址从Hadoop配置文件中获取。因此,YARN模式中master参数简单的为“yarn-client”或“yarn-cluster”。

在yarn-cluster模式中启动一个application:

./bin/spark-submit --class path.to.your.Class --master yarn-cluster [options] <app jar> [app options]

例如:

SPARK_JAR=hdfs://hansight/libs/spark-assembly-1.0.2-hadoop2.4.0.2.1.4.0-632.jar \

./bin/spark-submit --class org.apache.spark.examples.SparkPI \

    --master yarn-cluster \

    --num-executors 3 \

    --driver-memory 4g \

    --executor-memory 2g \

    --executor-cores 1 \

    lib/spark-examples*.jar \

    10

注:上面启动一个YARN客户端,该客户端启动默认的Application Master。SparkPI将作为一个子线程运行在Application Master中。client将定期的读取Application Master获取状态更新并把更新显示在控制台中。一旦你的application运行完成client会结束。

在yarn-client模式中启动一个application:

./bin/spark-submit --master yarn-client  [options] <app jar> [app options]

只是把--master的参数值改为yarn-client,其它都与yarn-cluster相同。

添加其它JAR依赖

在yarn-cluster模式中,driver与client运行在不同的机器上。因此,SparkContext.addJar方法不会像client在本地模式那样开箱即用。为了使SparkContext.addJar可用,需要在启动命令参数--jars后面添加这些jar。

例如:

$ ./bin/spark-submit --class my.main.Class \

--master yarn-cluster \

--jars my-other-jar.jar,my-other-other-jar.jar

my-main-jar.jar

app_arg1 app_arg2

时间: 2024-07-30 10:13:39

运维系列:05、Spark on Yarn的相关文章

自动化运维系列之Ansible的简介与安装【持续更新···】

自动化运维系列之Ansible的简介与安装 自动化运维工具简介 由于互联网的快速发展导致产品更新换代的速度逐渐加快,这就导致运维人员的日常工作会大大增加,如果还是按照传统方式进行维护工作会使工作效率低下.此时,就需要部署自动化运维了,自动化运维会尽可能安全.高效的完成运维人员的日常工作. 自动化运维工具划分为两类:一类是需要使用代理工具的,也就是基于专用的Agent程序来完成管理功能,如:Puppet.Func.Zabbix等:另一类是不需要配置代理工具的,可以直接基于SSH服务来完成管理功能,

自动化运维系列之Ansible命令应用基础(模块的应用)【持续更新中···】

自动化运维系列之Ansible命令应用基础(模块的应用) 模块简介 Ansible可以使用命令行方式进行自动化管理,基本语法如下: ansible <host-pattern> [-m module_name] [-a args] <host-pattern> 对哪些主机生效 [-m module_name] 需要使用的模块 [-a args] 模块特有的参数,这里在使用时需加单引号哦! Ansible的命令行管理工具都是由一系列模块.参数所支持的,可以在命令行后加上-h或--he

自动化运维系列之Ansible的YAML、基础元素介绍

自动化运维系列之Ansible的YAML.基础元素介绍 YAML简介 YAML是一种用来表达资料序列的格式.YAML是YAML Ain't Markup Lanaguage的缩写,即YAML不是XML. 特点 1.具有很好的可读性,易于实现: 2.表达能力强,扩展性好: 3.和脚本语言的交互性好: 4.有一个一致的信息模型: 5.可以基于流来处理. YAML语法 YAML的语法和其他语言类似,也可以表达散列表.标量等数据结构. YAML结构通过空格来展示:序列里的项用"-"来代表:Ma

自动化运维系列之SaltStack批量部署Apache服务

自动化运维系列之SaltStack批量部署Apache服务 saltstack原理 SalStack由master和minion构成,master是服务端,表示一台服务器:minion是客户端,表示多台服务器.在Master上发送命令给符合条件的minion,Minion就会执行相应的命令.Master和Minion之间是通过ZeroMQ(消息队列)进行通信的. SaltStack的Master端的监听端口是4505和4506,4505端口是Master和Minion认证通信端口:4506端口是

运维系列:01、Spark编译与打包

1.SBT编译 vi project/SparkBuild.scala 修改仓库: "Maven Repository"     at "http://172.16.219.120:8080/nexus/content/groups/public/" SPARK_HADOOP_VERSION=2.4.0.2.1.2.0-402 SPARK_YARN=true sbt/sbt clean assembly 2.MAVEN编译 export MAVEN_OPTS=&qu

运维系列:04、Spark Standalone运行

安装配置 hosts配置: 用户: useradd spark 1.SSH无密码登录 2.JDK 3.安装Scala 2.10.4 4.安装配置Spark 4.1.解压与权限 chown -R spark:spark /opt/spark 4.2.配置worker vi conf/slaves ES122 ES123 ES124 4.3.配置spark-env.sh cp conf/spark-env.sh.template conf/spark-env.sh vi conf/spark-env

Azure运维系列 3:善用Azure捕获功能事半功倍

在使用虚拟机的过程中,肯定会使用到虚拟机模板,从而简化我们的日常操作.如果没有虚拟机模板可能需要花费很多的时间来创建多个相同环境的虚拟机,所以在使用Azure的时候我们会发现Azure本身已经有不少的虚拟机操作系统版本和日期进行选择,但这最多也只是简单的包含操作系统和补丁更新,并没有包含我们需要的应用环境. 那么既然Azure并没有我们需要的应用环境,那我们可以通过捕获自定义映像的方式,来创建我们自己适用的虚拟机模板映像.首先,我们需要在虚拟机在搭建好我们需要的环境,然后通过运行sysprep来

Python自动化运维系列之Django Form表单验证

Form表单验证 Django核心功能组件之一,虽然也可以在前端使用JS对表单验证, 但是Django中已经为我们准备好的Form功能还算是很强大的,有时候比较适合运维,为我们简化了很多前端开发工作. Django最主要的几个功能有4个     ·  生成HTML标签     ·  验证数据(表单错误信息提示)     ·  HTML 表单保留上次提交数据     ·  初始化页面表单内容 Django的Form内容还是挺多的,我们可以从一个简单的登陆验证例子来看看Form的基本功能使用 1)新

运维杂记-05

运维技术学习的2个方向 开源和底层 现在有出现托管云,供应商帮你做私有云租用给你 DAS DELL MD系统 块存储 直连式存储 {数据库 一般不用于文件和日志}SAN 存储光纤连接IBM DS系统 DS5300 官方报价100多万控制器+笼子 光纤+到光纤交换机 服务器有HBA卡 pci-e 两个高可用,可以用于Oracle RACIBM DS5300 iSCSI硬盘 DAS 直连 SAN 存储区域网 iSCSI 硬盘格式化成文件系统 就成了 文件存储硬盘不格式也可以用, mysql和Orac