Learning Spark: lightning-fast big data analysis (2)


1. driver进程始终对应用中所有的executor进程有完整的记录。每个executor进程代表一个能够处理任务和存储RDD 数据的进程。


2.Spark driver程序会根据当前的executor节点集合,尝试把所有任务基于数据所在位置分配给合适的executor进程。当任务执行时,executor进程会把缓存数据存储起来,而driver进程同样会跟踪这些缓存数据的位置,并且利用这些位置信息来调度以后的任务,以尽量减少数据的网络传输。executor进程有两大作用:第一,它们负责运行组成Spark 应用的任务,并将结果返回给driver进程;第二,它们通过自身的块管理器(Block Manager),为用户程序中要求缓存的RDD 提供内存式存储。RDD 是直接缓存在executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。


3.在本地模式下,Spark driver程序和各executor程序在同一个Java 进程中运行。这是一个特例;executor程序通常都运行在专用的进程中。


4.集群上运行Spark 应用的详细过程:

  (1) client用户通过spark-submit 脚本提交应用。
  (2) spark-submit 脚本启动driver程序,driver调用用户定义的main() 方法。
  (3) driver与集群管理器通信,申请资源以启动executor节点。
  (4) 集群管理器(eg,Spark自身的cluster manager或Yarn的resource manager等)为driver程序启动executor节点。

  (5) driver进程执行用户应用中的操作。根据程序中所定义的对RDD 的转化操作和行动操作,driver节点把工作以任务的形式发送到executor进程。
  (6) 任务在executor程序中进行计算并保存结果。
  (7) 如果driver程序的main() 方法退出,或者调用了SparkContext.stop(),driver程序会终止executor进程,并且通过集群管理器释放资源。


5.使用spark-submit部署应用

# 使用独立集群模式提交Java应用
$ ./bin/spark-submit \
--master spark://hostname:7077 \
--deploy-mode cluster \
--class com.databricks.examples.SparkExample \
--name "Example Program" \
--jars dep1.jar,dep2.jar,dep3.jar \
--total-executor-cores 300 \
--executor-memory 10g \
myApp.jar "options" "to your application" "go here"


# 使用YARN客户端模式提交Python应用
$ export HADOP_CONF_DIR=/opt/hadoop/conf
$ ./bin/spark-submit \
--master yarn \
--deploy-mode client \
--name "Example Program" \

--py-files somelib-1.2.egg,otherlib-4.4.zip,other-file.py \

--queue exampleQueue \

--num-executors 40 \
--executor-memory 10g \
my_script.py "options" "to your application" "go here"









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值