(7)在集群上运行Spark

7.2 Spark运行时架构

Spark集群采用的是主/从结构。在一个Spark集群中,有一个节点负责中央协调,调度各个分布式工作节点。这个中央协调节点被称为驱动器节点,与之对应的工作节点被称为执行器节点。驱动器节点可以和大量的执行器节点进行通信,他们也都作为独立的Java程序运行。

7.2.1 驱动器节点

Spark驱动器节点是执行你的程序中main方法的进程。其实,当你启动Spark Shell时,你就启动了一个Spark驱动器程序,驱动器程序一旦终止,Spark应用也就结束了。驱动器程序在Spark应用中有下述两个职责:

  • 把用户程序转换为任务。
  • 为执行器节点调度任务。

7.2.2 执行器节点

Spark执行器节点是一种工作进程,负责在Spark作业中运行任务,任务间相互独立。执行器进程有两大作用,第一:他们负责运行组成Spark应用的任务,并将结果返回给驱动器进行;第二,他们通过自身的块管理器为用户程序中要求缓存的RDD提供内存式存储。

7.2.3 集群管理器

Spark依赖于集群管理器来启动执行器节点,而在某些特殊的情况下,也依赖集群管理器来启动驱动器节点。

7.3 使用spark-submit部署应用

提交Python应用

bin/spark-submit my_script.py

如果在调用时,除了脚本或JAR没有别的参数,那么这个spark程序只会在本地执行。当我们希望将应用提交到Spark独立集群上的时候,可以将独立集群的地址和希望启动的每一个执行器进程的大小作为附加标记提供。

提交应用时添加附加参数

bin/spark-submit --master spark://host:7077 --executor-memory 10g my_script.py

--master标记指定要连接的集群URL,下面是master标记可以接收的值:

spark://host:port #连接到指定端口他和Spark独立集群上。默认使用7077端口
spark://host:port #连接到指定端口的Mesos集群上,默认使用5050端口
yarn              #连接到一个YARN集群
local             #运行本地模式,使用单核
local[N]          #运行本地模式,使用N核心
local[*]          #运行本地模式,使用所有核心

spark-submit的一般格式

bin/spark-submit [options] <app jar | python file> [app options]

7.4 打包代码与依赖

7.5 Spark应用内与应用间调度

7.6 集群管理器

时间: 2024-10-14 04:35:20

(7)在集群上运行Spark的相关文章

在集群上运行Spark应用的详细过程

在集群上运行Spark应用的详细过程: (1)用户通过spark-submit脚本提交应用 (2)spark-submit脚本启动驱动器程序,调用用户定义的main()方法 (3)驱动器程序与集群管理器通信,申请资源以启动执行器节点 (4)集群管理器为驱动器程序启动执行器节点 (5)驱动器进程执行用户应用中的操作.根据程序中所定义的对RDD的转换操作和行动操作,驱动器节点把动作以任务的形式发送到执行器进程 (6)任务在执行器程序中进行计算并保存结果 (7)如果驱动器程序的main()方法退出,或

Spark学习笔记——在集群上运行Spark

Spark运行的时候,采用的是主从结构,有一个节点负责中央协调, 调度各个分布式工作节点.这个中央协调节点被称为驱动器( Driver) 节点.与之对应的工作节点被称为执行器( executor) 节点. 所有的 Spark 程序都遵循同样的结构:程序从输入数据创建一系列 RDD, 再使用转化操作派生出新的 RDD,最后使用行动操作收集或存储结果 RDD 中的数据. 驱动器程序在 Spark 应用中有下述两个职责:1.把用户程序转为任务 2.为执行器节点调度任务 执行器进程有两大作用: 第一,它

将java开发的wordcount程序部署到spark集群上运行

1 package cn.spark.study.core; 2 3 import java.util.Arrays; 4 5 import org.apache.spark.SparkConf; 6 import org.apache.spark.api.java.JavaPairRDD; 7 import org.apache.spark.api.java.JavaRDD; 8 import org.apache.spark.api.java.JavaSparkContext; 9 impo

将java开发的wordcount程序提交到spark集群上运行

今天来分享下将java开发的wordcount程序提交到spark集群上运行的步骤. 第一个步骤之前,先上传文本文件,spark.txt,然用命令hadoop fs -put spark.txt /spark.txt,即可. 第一:看整个代码视图 打开WordCountCluster.java源文件,修改此处代码: 第二步: 打好jar包,步骤是右击项目文件----RunAs--Run Configurations 照图填写,然后开始拷贝工程下的jar包,如图,注意是拷贝那个依赖jar包,不是第

06、部署Spark程序到集群上运行

06.部署Spark程序到集群上运行 6.1 修改程序代码 修改文件加载路径 在spark集群上执行程序时,如果加载文件需要确保路径是所有节点能否访问到的路径,因此通常是hdfs路径地址.所以需要修改代码中文件加载路径为hdfs路径: ... //指定hdfs路径 sc.textFile("hdfs://mycluster/user/centos/1.txt") ... ? 修改master地址 SparkConf中需要指定master地址,如果是集群上运行,也可以不指定,运行时可以通

用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控

写在前面 前文:用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试 为了方便,这篇文章里的例子均为伪分布式运行,一般来说只要集群配置得当,在伪分布式下能够运行的程序,在真实集群上也不会有什么问题. 为了更好地模拟集群环境,我们可以在mapred-site.xml中增设reducer和mapper的最大数目(默认为2,实际可用数目大约是CPU核数-1). 假设你为Hadoop安装路径添加的环境变量叫$HADOOP_HOME(如果是$HAD

【转】Twitter Storm: 在生产集群上运行topology

Twitter Storm: 在生产集群上运行topology 发表于 2011 年 10 月 07 日 由 xumingming 作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://xumingming.sinaapp.com/185/twitter-storm-在生产集群上运行topology/ 本文翻译自: https://github.com/nathanmarz/storm/wiki/Running-topologi

storm学习之-在生产集群上运行topology

https://storm.apache.org/documentation/Setting-up-a-Storm-cluster.html -官方文档 http://xumingming.sinaapp.com/185/twitter-storm-在生产集群上运行topology/ --徐明明 http://blog.cheyo.net/84.html   --运行一个

在集群上运行caffe程序时如何避免Out of Memory

不少同学抱怨,在集群的GPU节点上运行caffe程序时,经常出现"Out of Memory"的情况.实际上,如果我们在提交caffe程序到某个GPU节点的同时,指定该节点某个比较空闲的gpu id,便可以避免"Out of Memory"的情况.步骤如下: 1. 在提交任务前,制作一个带有“nvidia-smi”命令的run_gpu.sh文件 #!/bin/bash #$ -V #$ -cwd #$ -j y #$ -S /bin/bash nvidia-smi