您的位置:首页 > 其它

Spark学习笔记-理论篇-01-Spark系统综述

2020-02-12 20:29 148 查看

文章目录

Spark系统综述

1.1 大数据处理框架

集群环境对编程来说带来了很多挑战,比如并行化,这要求我们以并行化的方式充给应用程序,以利用更大范围的节点运算能力。第二个挑战就是对单点失败的处理,节点宕机以及个别节点计算缓慢在集群环境非常普遍,这会影响程序的性能。最后一个挑战是集群通常是多用户共享,需要动态分配计算资源,这也会干扰程序的执行。

因此针对集群出现了大量的大数据编程框架,比如Google的MapReduce,Storm、Impala和GraphLab。对于大数据处理,应对不同类型的作业,需要一系列不同的处理框架才能很好的完成。这些专有系统各有千秋,也有着各自的不足。

  • 重复工作。这些专有系统在解决同样的问题,比如分布式作业以及容错。
  • 组合问题。在不同系统间进行组合计算是一件费力又不讨好的事。太难了…qAq(卖萌结束)对于特定的大数据应用系统而言,中间数据集非常大,移动的成本也很高。
  • 使用范围的局限性:如果一个新应用不适合一个专有的计算系统,那么只能换一个系统,需要重写一遍。
  • 资源分配:在不同的计算引擎之间进行资源动态共享比较困难。
  • 管理问题:多个专有的系统,当然也就意味着需要更多的时间人力来管理和部署。

1.2 Spark大数据处理框架

伯克利大学推出了全兴的统一大数据处理框架Spark,创新地提出了RDD(Resilient Distributed DataSets)的概念,这是一种抽象的弹性数据集。Spark可以看作是MapReduce的一种扩展,可以实现其不擅长的计算工作,比如迭代式、交互式和流式

1.2.1 RDD的表达能力

RDD能实现很多现有的集群编程模型以及一些以前模型不支持的新应用。体现了Spark良好的兼容性,这主要具体体现在以下几方面。

  • 迭代算法:目前专有系统普遍实现的一种应用场景,比如迭代算法实现机器学习和图处理。RDD能很好得实现这些功能。
  • 关系型查询:对于MapReduce来说最重要的就是运行SQL查询,对比并行数据,MapReduce有着内在的缺点,比如其容错性导致速度很慢。RDD可以实现许多通用的数据库引擎特性。
  • MapReduce批处理: RDD提供的接口是MapReduce的超集,所以RDD可以有效地运行利用MapReduce实现的应用程序,此外RDD还适用更加抽象的基于DAG的应用程序,比如DryadLINQ.
  • 流式处理:目前的流式处理只提供了有限的容错处理,需要消耗系统非常大的拷贝代价,或者非常长的容错时间。利用RDD实现一种新的模型——离散数据流(D-Stream),可以克服这些问题。

1.2.2 Spark子系统

按照目前主流的大数据处理场景,可以将大数据处理划分为三种情况:

分类 时间跨度
复杂的批量数据处理 十分钟到数小时
基于历史数据的交互式查询 数十秒到数分钟
基于实时数据流的数据处理 数百毫秒到数秒

在Spark Core的基础上,衍生出了能同时处理上述三种情况的统一大数据处理平台,如图所示。

Spark CoreShark/Spark SQLSpark StreamingGraph XMLlib
系统 说明
Spark Core 基于RDD提供了丰富的接口,利用DAG进行统一的任务规划,使得Spark能更灵活的处理类似MapReduce的批处理作业
Shark/Spark SQL 兼容Hive的接口HQL,提供比Hive更高速的分布式SQL引擎
GraphX 基于spark的图计算框架,兼容Pregel和GraphLab接口,增强了图构建以及图转换功能。
MLlib Spark Core天然地非常适合迭代式运算,MLlib就是构建在Spark上的机器学习算法库。已支持的有分类算法、聚类算法、推荐算法等

Spark生态系统的目标就是将批处理、交互式处理、流式处理融合到一个软件栈中

此外,Spark生态系统兼容Hadoop生态系统,如下图所示。它能完美兼容Hadoop生态系统中的HDFS和YARN等其它组件。现有的Hadoop用户能很容易迁移到Spark系统中。

本系列学习笔记,参考书为电子工业出版社的《Spark大数据处理技术》

  • 点赞
  • 收藏
  • 分享
  • 文章举报
Chris刘 发布了13 篇原创文章 · 获赞 0 · 访问量 147 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: