定义:spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎;采用scala编写。支持迭代式计算和图计算,计算比MR快的原因,是因为他的中间结果不落盘,只有发生shuffer的时候才会进行落盘
内置模块
特点:
运行模式:简单分为单机模式和集群模式
yarn模式安装:
1、解压spark安装包,确保hadoop环境能正常使用
2、配置yarn-site.xml
yarn.nodemanager.pmem-check-enabled
false
yarn.nodemanager.vmem-check-enabled
false
3、修改/opt/module/spark/conf/spark-env.sh,添加YARN_CONF_DIR配置,保证后续运行任务的路径都变成集群路径
YARN_CONF_DIR=/opt/module/hadoop-2.7.2/etc/hadoop
##确保directory目录已在hdfs中创建完成
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory
-Dspark.history.retainedApplications=30"
4、修改spark-default.conf文件,配置日志存储路径
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop102:8020/directory
spark.yarn.historyServer.address=hadoop102:18080
spark.history.ui.port=18080
5、运行模式:客户端模式(driver在客户端)和集群模式(driver不在客户端,位置由集群决定)
服务启动:
使用方式:
master和slave:
driver和executor:
通用运行流程:Master和Worker是Spark的守护进程,即Spark在特定模式下正常运行所必须的进程。Driver和Executor是临时程序,当有具体任务提交到Spark集群才会开启的程序
集群模式运行流程:
集中模式对比:
模式 |
Spark安装机器数 |
需启动的进程 |
所属者 |
Local |
1 |
无 |
Spark |
Standalone |
3 |
Master及Worker |
Spark |
Yarn |
1 |
Yarn及HDFS |
Hadoop |
常用端口号:
1)Spark历史服务器端口号:18080 (类比于Hadoop历史服务器端口号:19888)
2)Spark Master Web端口号:8080(类比于Hadoop的NameNode Web端口号:9870(50070))
3)Spark Master内部通信服务端口号:7077 (类比于Hadoop的8020(9000)端口)
4)Spark查看当前Spark-shell运行任务情况端口号:4040
5)Hadoop YARN任务运行情况查看端口号:8088
val conf = new SparkConf().setMaster("local[*]").setAppName("WoedCount")
val sc = new SparkContext(conf)
val value: RDD[String] = sc.textFile("")
sc.textFile(args(0))
.flatMap(_.split(" "))
.map((_, 1))
.reduceByKey(_ + _)
.saveAsTextFile(args(1))
sc.stop()
SparkConf conf = new SparkConf().setMaster("local[*]").setAppName("WoedCount");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD javaRDD = sc.textFile("D:\\ideaWorkspace\\scala0105\\spark-0105\\input");
JavaRDD words = javaRDD.flatMap(new FlatMapFunction() {
@Override
public Iterator call(String s) throws Exception {
return Arrays.asList(s.split(" ")).iterator();
}
});
JavaPairRDD pairs = words.mapToPair(new PairFunction() {
@Override
public Tuple2 call(String s) throws Exception {
return new Tuple2<>(s, 1);
}
});
JavaPairRDD reduceBykey = pairs.reduceByKey(new Function2() {
@Override
public Integer call(Integer v1, Integer v2) throws Exception {
return v1 + v2;
}
});
reduceBykey.foreach(new VoidFunction>() {
@Override
public void call(Tuple2 stringIntegerTuple2) throws Exception {
System.out.println(stringIntegerTuple2._1 + "\t" + stringIntegerTuple2._2);
}
});
sc.close();
pom文件:
org.apache.spark
spark-core_2.11
2.1.1