赞
踩
目录
Apache Spark是一个通用的、基于内存的分布式计算引擎,用于大规模数据处理。它的核心原理是将数据分散到多台计算机上并在这些计算机上并行执行计算任务,从而实现高效的数据处理和分析。
Spark 框架的核心是一个分布式计算引擎,它采用了标准 master-slave 的结构。如下图所示,它展示了一个 Spark 执行时的基本结构。图形中的 Driver 表示 master,负责管理整个集群中的作业任务调度。图形中的 Executor 则是 slave,负责实际执行任务。
所谓的 Local 模式,就是不需要其他任何节点资源就可以在本地执行 Spark 代码的环境,解压即可使用。
Local 本地模只适用于练习环境,生产环境中还是需要到集群中去执行任务。Spark 的 Standalone 模式是经典的 master-slave 模式。
Standalone 模式具体部署步骤请参考:搭建环境05:部署Spark-Standalone模式-CSDN博客
Standalone模式由 Spark 自身提供计算资源,无需其他框架提供资源。Spark是计算框架,资源管理不是它的强项,可由更专业的Yarn框架负责资源管理。
Yarn 模式具体部署部署请参考:部署Spark-YARN模式-CSDN博客
Spark程序一般可包含以下几个部分构成:
1.初始化SparkContext对象
2.加载数据源
3.对数据进行加工
4.输出加工后的数据
5.停止SparkContext
- package com.yichenkeji.demo.sparkjava;
-
- import org.apache.spark.SparkConf;
- import org.apache.spark.api.java.JavaRDD;
- import org.apache.spark.api.java.JavaSparkContext;
- import org.apache.spark.api.java.function.Function;
-
- import java.util.Arrays;
- import java.util.List;
-
- public class SparkApp {
- public static void main(String[] args) {
- //1.初始化SparkContext对象
- SparkConf sparkConf = new SparkConf().setAppName("Spark Java").setMaster("local[*]");
- JavaSparkContext sc = new JavaSparkContext(sparkConf);
- //2.加载数据源:员工工资
- List<Integer> salary = Arrays.asList(1000,2000,3000,4000,4000);
- JavaRDD<Integer> salaryRDD = sc.parallelize(salary);
- //3.对数据进行加工:全部员工工资翻倍
- JavaRDD<Integer> salaryMap = salaryRDD.map(new Function<Integer, Integer>() {
- @Override
- public Integer call(Integer s) throws Exception {
- return s * 2;
- }
- });
- //4.输出加工后的数据:直接打印到控制台
- salaryMap.collect().forEach(s->System.out.println(s));
- //5.停止SparkContext
- sc.stop();
- }
- }
- package com.yichenkeji.demo.sparkscala
-
- import org.apache.spark.{SparkConf, SparkContext}
-
- object SparkApp {
- def main(args: Array[String]): Unit = {
- //1.初始化SparkContext对象
- val sparkConf = new SparkConf().setAppName("Spark Scala").setMaster("local[*]")
- val sc = new SparkContext(sparkConf)
- //2.加载数据源:员工工资
- val salary = Array(1000,2000,3000,4000,5000)
- val salaryRDD = sc.parallelize(salary)
- //3.对数据进行加工:全部员工工资翻倍
- val salaryMap = salaryRDD.map(s=>{
- s*2
- })
- //4.输出加工后的数据:直接打印到控制台
- salaryMap.collect().foreach(s => println(s))
- //5.停止SparkContext
- sc.stop()
- }
- }
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://01.weisx.com:7077 ./examples/jars/spark-examples_2.12-3.2.3.jar 10
1) --class 表示要执行程序的主类
2) --master spark://01.weisx.com:7077 独立部署模式,连接到 Spark 集群
3) spark-examples_2.12-3.2.3.jar 运行类所在的 jar 包
4) 数字 10 表示程序的入口参数,用于设定当前应用的任务数量
spark-submit常用参数说明
参数名称 | 参数说明 |
---|---|
master | 设置主节点 URL 的参数。支持: local: 本地机器。 spark://host:port:远程 Spark 单机集群。 yarn:yarn 集群 |
deploy-mode | 允许选择是否在本地(使用 client 选项)启动 Spark 驱动程序,或者在集群内(使用 cluster 选项)的其中一台工作机器上启动。默认值是 client。 |
num-executors | 配置 Executor 的数量 |
executor-memory | 配置每个 Executor 的内存大小 |
executor-cores | 配置每个 Executor 的虚拟 CPU core 数量 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。