您的位置:首页 > 其它

最近看到的spark资料整理

2016-11-07 20:59 190 查看
先分享一个链接http://cacm.acm.org/magazines/2016/11/209116-apache-spark/fulltext#F2这是spark开发团队写的,读完之后会对spark更了解一点。因为现在我也处于开始学习的阶段,不敢说理解。

spark的特点:相比于mapreduce,spark是基于内存的,在分布式环境下,spark将作为转化为有向无环图DAG,并分阶段进行DAG的调度和任务的分布式并行处理。所以spark也支持内存数据共享,所以spark比hadoop快。spark的运行图如下:



在spark运行过程中,driver和worker是重要角色。Driver是应用逻辑的起点,负责作业的调度,即task任务的分发,多个worker负责管理计算节点和创建executor并行执行任务;在执行阶段,driver会将task和task依赖的jar序列化后传输给work机器。

下面介绍spark架构的基本组件:

  ● ClusterManager: 在standalone模式中为master,控制整个集群,监控worker。在yarn中为ResourceManager。

  ● worker: 从节点,负责控制计算资源,启动exector或driver,在yarn中为nodemanager,负责计算节点的控制

  ● driver:运行application的main() 函数并创建sparkcontext

  ● executor: 执行器,在workder 执行任务的组件,用于启动线程池运行任务。每个application拥有独立的一组executor。

  ● sparkcontext: 整个应用的上下文,控制应用的生命周期。

  ● RDD: SPARK的基本计算单元,一组RDD可形成执行的有向无环图RDD Graph。

  ● DAG Scheduler: 根据作业(job) 构建基于Stage的DAG, 并把Stage提交给TaskScheduler.

  ● TaskScheduler: 将任务(Task)分发给executor执行.

  ● MapOutPutTracker: 负责shuffle元信息的存储.

  ● BroadcaseManager: 负责广播变量的控制与元信息的存储.

  ● BlockManager: 负责存储管理·创建和查找块

  ● MetricsSystem: 监控运行时性能指标信息.

  ● SparkConf: 负责存储配置信息.

  ● spark整体流程: client 提交应用,master找到一个worker启动driver,driver向master或资源管理器申请资源,之后将application转换为RDD graph,再由DagSchudeler将RDD graph转换为stage的有向无环图提交给taskschedule,由taskscheduler提交任务给executor执行.

spark还包含许多有用的库,常见的spark库有:
Spark Streaming:

Spark Streaming基于微批量方式的计算和处理,可以用于处理实时的流数据。它使用DStream,简单来说就是一个弹性分布式数据集(RDD)系列,处理实时数据。
Spark SQL:

Spark SQL可以通过JDBC API将Spark数据集暴露出去,而且还可以用传统的BI和可视化工具在Spark数据上执行类似SQL的查询。用户还可以用Spark SQL对不同格式的数据(如JSON,Parquet以及数据库等)执行ETL,将其转化,然后暴露给特定的查询。
Spark MLlib:

MLlib是一个可扩展的Spark机器学习库,由通用的学习算法和工具组成,包括二元分类、线性回归、聚类、协同过滤、梯度下降以及底层优化原语。
Spark GraphX:

GraphX是用于图计算和并行图计算的新的(alpha)Spark API。通过引入弹性分布式属性图(Resilient Distributed Property Graph),一种顶点和边都带有属性的有向多重图,扩展了Spark RDD。为了支持图计算,GraphX暴露了一个基础操作符集合(如subgraph,joinVertices和aggregateMessages)和一个经过优化的Pregel API变体。此外,GraphX还包括一个持续增长的用于简化图分析任务的图算法和构建器集合。

除了这些库以外,还有一些其他的库,如BlinkDB和Tachyon。
BlinkDB是一个近似查询引擎,用于在海量数据上执行交互式SQL查询。BlinkDB可以通过牺牲数据精度来提升查询响应时间。通过在数据样本上执行查询并展示包含有意义的错误线注解的结果,操作大数据集合。
Tachyon是一个以内存为中心的分布式文件系统,能够提供内存级别速度的跨集群框架(如Spark和MapReduce)的可信文件共享。它将工作集文件缓存在内存中,从而避免到磁盘中加载需要经常读取的数据集。通过这一机制,不同的作业/查询和框架可以以内存级的速度访问缓存的文件。

此外,还有一些用于与其他产品集成的适配器,如Cassandra(Spark Cassandra 连接器)和R(SparkR)。Cassandra Connector可用于访问存储在Cassandra数据库中的数据并在这些数据上执行数据分析。

spark的生态系统如下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: