Spark Core:第二章 执行spark程序
—>Spark知识点总结导航<—
一、运行模式
1. local
-
master和worker在同一台机器
(1) spark运行基本流程(本地运行)
① 创建val conf = new SpakrConf().setMaster(“xxx”).setAppName(“xxx”)
② 创建SparkContext val sc = new SparkContext(conf)
③ 得到RDD val rdd = sc.textFile…
④ 对得到的RDD使用Transformation类算子进行数据转换
⑤ 要使用Action算子对Transformation类算子触发执行
⑥ sc.stop()
(2) spark上执行
本地模式:不需要启动Hadoop集群,只要有一台机器安装了JDK、Scala、spark即可运行
/home/duck/software/spark/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://Cloud01:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
/home/duck/software/spark/examples/jars/spark-examples_2.11-2.1.1.jar \
2. standalone
- 需要启动Hadoop集群和spark集群
(1) standalone-client
a. 执行原理:
① worker向master汇报
② master掌握集群资源
③ 客户端:在客户端提交任务,Driver会在客户端启动
④ Driver向master申请资源
⑤ master在worker上找到满足资源的节点
⑥ Driver向worker发送task,监控task,并回收结果
b. 执行命令、结果
./spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://Cloud01:7077 \
--deploy-mode client \
--executor-memory 1G \
--total-executor-cores 2 \
~/software/spark/examples/jars/spark-examples_2.11-2.1.1.jar 5
c. 总结:
Standalone-client模式提交任务,会在客户端看到task的执行情况和结果。当在客户端提交多个application时,每个Application都会启动自己的Driver,Driver与集群worker有大量的通信,会造成客户端网卡流量激增问题。这种模式适用于程序测试,不适用于生产环境。