系列文章目录
(一)算法工程师遇上大数据-Scala
(二)算法工程师遇上大数据-Hadoop
(三)算法工程师遇上大数据-Hive
(四)算法工程师遇上大数据-Zookeepr
(五)算法工程师遇上大数据-Flume
(六)算法工程师遇上大数据-Strom
(七)算法工程师遇上大数据-Kafka
(八)算法工程师遇上大数据-Spark
(九)算法工程师遇上大数据-Flink
前言
本文介绍一下微批次处理框架Spark。一、介绍
Spark,其实就是数据处理框架,就是基于内存计算的通用大规模数据处理框架。Spark的出现是因为要弥补Hadoop的不足,那Hadoop又有什么不足呢? Hadoop中的MapReduce的表达能力弱:不是所有的数据分析模型都可以表达成map和reduce两阶段的。Hadoop中的MapReduce短板问题:必须等待所有的Map都执行完才能执行reduce。写入磁盘耗时:Hadoop中间处理的时候需要写入磁盘,虽然每次写入时间很短,可能也就几秒,但是扛不住数量多啊,数量非常大的时候,写入时间问题就被放大啦~ 基于以上问题,Spark横空出世!!!表达能力强:提供Java、Scala、Python和R几种语言的API,支持SQL、机器学习和图计算,覆盖了绝大多数大数据计算的场景。不存在短板问题:因为没有MapReduce,采用函数式编程方法。写入内存省时:中间计算过程写入内存,不要反复读取磁盘。二、快速入门
1.主要应用
Spark powers a stack of libraries including SQL and DataFrames, MLlib for machine learning, GraphX, and Spark Streaming. You can combine these libraries seamlessly in the same application.
Write applications quickly in Java, Scala, Python, R, and SQL.
2.Spark Streaming
(1)计算框架
Spark Streaming是核心Spark API的扩展,可实现实时数据流的可伸缩,高吞吐量,容错流处理。数据可以从像卡夫卡,室壁运动,或TCP套接字许多来源摄入,并且可以使用与像高级别功能表达复杂的算法来处理map,reduce,join和window。最后,可以将处理后的数据推送到文件系统,数据库和实时仪表板。可以在数据流上应用Spark的 机器学习和 图形处理算法。
(2)例子
3.RDD/Accumulators/Broadcasts Vars
4.部署
三、总结
Apache Spark是用于大规模数据处理的统一分析引擎。它提供Java,Scala,Python和R中的高级API,以及支持常规执行图的优化引擎。它还支持一组丰富的更高级别的工具,包括SparkSQL用于SQL和结构化数据的处理,MLlib机器学习,GraphX用于图形处理,以及结构化流的增量计算和流处理。