1.2 Spark 组件
Spark由多个专用组件组成。 这些是Spark Core,Spark SQL,Spark Streaming,Spark GraphX和Spark MLlib,如图1.2所示。 这些组件使Spark成为一个功能齐全的统一平台:它可以用于以前必须使用几个不同框架完成的许多任务。 以下是每个Spark组件的简要说明。
1.2.1 Spark 核心
Spark Core包含运行作业所需的其他组件所需的基本Spark功能。 其中最重要的是弹性分布式数据集(RDD),这是Spark API的主要元素。 它是具有适用于数据集的操作和转换的项目的分布式集合的抽象。 它具有弹性,因为它能够在节点故障的情况下重建数据集。
图1.2 主要Spark组件和各种运行时交互和存储选项
Spark Core包含用于访问各种文件系统的逻辑,例如HDFS,GlusterFS,Amazon S3等。 它还提供了具有广播变量和累加器的计算节点之间的信息共享的手段。 其他基本功能,如网络,安全,调度和数据混排,也是Spark Core的一部分。
本文http://www.paymoon.com:8001/index.php/2016/12/27/spark-components/ 如果转载请联系 龙遥Yol i@paymoon.com
1.2.2 Spark SQL
Spark SQL提供了使用Spark和Hive SQL(HiveQL)支持的SQL子集操作大型分布式结构化数据集的功能。 通过在Spark 1.3中引入数据框架,并在Spark 1.6中引入了DataSets,简化了结构化数据的处理并实现了激进的性能优化,Spark SQL成为了最重要的Spark组件之一。 Spark SQL还可以用于从各种结构化格式和数据源读取和写入数据,例如JavaScript对象符号(JSON)文件,Parquet文件(允许与数据一起存储模式的越来越流行的文件格式) ,关系数据库,Hive等。
DataFrames和DataSet在某些时候的操作转换为对RDDs的操作,并作为普通Spark作业执行。 Spark SQL提供了一个称为Catalyst的查询优化框架,可以通过自定义优化规则进行扩展。 Spark SQL还包括Thrift服务器,外部系统(如商业智能工具)可以使用Thrift服务器通过Spark SQL使用传统的JDBC和ODBC协议查询数据。
1.2.3 Spark 流
Spark Streaming是一个从各种来源获取实时流数据的框架。 支持的流媒体源包括HDFS,Kafka,Flume,Twitter,ZeroMQ和自定义。 Spark Streaming操作从故障自动恢复,这对于在线数据处理很重要。 Spark Streaming表示使用离散流(DStreams)的流数据,它周期性地创建包含在上一个时间窗口期间进入的数据的RDD。 Spark Streaming可以与单个程序中的其他Spark组件组合,通过机器学习,SQL和图形操作实现统一的实时处理。 这在Hadoop生态系统中是独一无二的。 从Spark 2.0开始,新的结构化流API使Spark流程序更类似于Spark批处理程序。
1.2.4 Spark MLlib
Spark MLlib是从加州大学伯克利分校的MLbase项目开发的机器学习算法库。 支持的算法包括逻辑回归,朴素贝叶斯分类,支持向量机(SVM),决策树,随机森林,线性回归和k均值聚类。 Apache Mahout是一个现有的开源项目,提供在Hadoop上运行的分布式机器学习算法的实现。 虽然Apache Mahout更成熟,但Spark MLlib和Mahout都包含一组类似的机器学习算法。 但是Mahout从MapReduce迁移到Spark,他们必须在未来合并。 Spark MLlib处理用于转换数据集的机器学习模型,表示为RDD或DataFrames。
1.2.5 Spark GraphX
图形是包括顶点和连接它们的边的数据结构。 GraphX提供了用于构建图形的功能,表示为图形RDD:EdgeRDD和VertexRDD。 GraphX包含最重要的图论理论的实现,例如页面排名,连接组件,最短路径,SVD ++等。 它还提供了Pregel消息传递API,用于由Apache Giraph实现的大规模图处理的相同API,这是一个具有图算法实现和运行在Hadoop上的项目。
Spark 实战更多文章:[翻译]Spark In Action – PayMoon贝明实验室 http://www.paymoon.com:8001/index.php/2016/12/27/spark-in-action-foreword/