三 Spark应用提交流程

前置概念:

一、Master 和Worker 分别用于分配资源和管理资源。

从资源维度来看,一个程序运行分为两个阶段。

1、阶段1,先在Master上注册程序,让Master给程序分配资源,分配完之后。

2、阶段2,程序就在Worker上用这些资源。

二、Driver和Executor是对于应用程序(App,即jar包)来说的。

 

如果用的是Yarn或是Mesos这些资源管理框架时,Master和Worker就不存在的,即只有standalone模式才会有Master和Worker,用于分配和管理资源。standalone模式即Spark自己来管理资源。

 

应用提交(deploy-mode)分为client模式和cluster模式。默认是client模式。

client模式:

如果提交应用的时候指定 --deploy-mode是cluster的话,就会使用cluster模式提交这个应用。

cluster模式:

总结,client模式,集群的Master和Worker会在同一网段,网络传输速度比较快。cluster模式下Master和Worker网络可能不在同一网段,传输速度可能比较慢。所以cluster模式下最好提前把jar放到worker相应地目录下。

所以如果Master和Worker网络处于同一网段,用client模式比较方便。如果Master和Worker之间网络速度较慢,就要使用cluster模式,来尽量减少Master和Worker之间网络通信带来的延迟。

 

最后推荐一篇总结得很好地文章:https://blog.youkuaiyun.com/Trigl/article/details/72732241

 

 

Spark任务提交流程通常涉及以下几个步骤: 1. **初始化SparkContext**:首先,你需要创建一个`SparkConf`对象,配置Spark应用程序的基本设置,如主应用服务器、JVM选项等。然后,通过`SparkConf`实例创建`SparkContext`。 ```java SparkConf conf = new SparkConf().setAppName("YourAppName").setMaster("local[*]"); // 或者 "spark://master:port" SparkContext sc = new SparkContext(conf); ``` 2. **加载数据**:根据任务需求,从各种数据源加载数据,例如HDFS、文件系统、数据库等,可以使用Spark提供的RDD API或者DataFrame API。 ```java JavaPairRDD<String, Integer> data = sc.textFile("file:///path/to/data.txt").mapToPair(line -> { String[] parts = line.split(","); return (parts[0], Integer.parseInt(parts[1])); }); ``` 3. **编写并封装操作**:定义处理数据的函数或操作,比如转换、过滤、聚合等,并将其包装成`TransformFunction`或`ActionFunction`。 ```java Function2<JavaPairRDD<String, Integer>, JavaPairRDD<String, Integer>, PairRDD<String, Integer>> mapFunc = (rdd, acc) -> rdd.mapValues(value -> value * 2); // 示例操作 PairRDD<String, Integer> result = data.transform(mapFunc); ``` 4. **调用Action**:最后,使用`action`方法(如`count()`、`collect()`等)触发实际的数据处理,将结果保存到磁盘或者显示出来。 ```java long count = result.count(); // 或 result.collectAsList(); ``` 5. **关闭SparkContext**:当完成所有任务后,记得关闭`SparkContext`释放资源。 ```java sc.stop(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值