大数据的存储常用HDFS(大数据存储的事实标准),计算分析用Spark(一站式大数据计算的事实标准),集群中的资源管理用Yarn或mesos。
本文主要内容如题,适合有一定基础的人查看(关于大数据big data是什么,由何而来,指导思想、3V~5V特性,环境搭建、挖掘分析及编程等,本文不涉及),,有些描述可能不是很准确,欢迎大家一起讨论交流。
目录
Apache Spark(依托内存计算,大数据计算的准事实标准,版本2.x)
3. Apache Hadoop和Apache Spark在BDAS中的演变
1. 大数据计算的分类
大数据计算主要分为三类:
-
Batch(离线分析)
- 通常用于对数据规模庞大的历史数据进行挖掘分析
- 数据处理比较复杂,通常为即席查询/实时分析做数据预处理,高延迟
- 应用举例:进行异常检测或趋势分析等
-
Interactive(交互查询/即席查询)
- 通常用于对整理后的、结构化的历史数据进行交互式查询
- 数据结构较规范,低延迟
- 应用举例:查看热门板块、热门文章、精准营销(推荐)等
-
Streaming(流式分析/实时分析)
- 通常用于对实时数据(live data)进行分析
- 处理的数据规模相对较小,低延迟
- 应用举例:网络安全监测、交通状况监测、伪基站定位跟踪等。
实际应用中选用何种计算方式,还是将多种计算方式组合使用,这是需求与时间、质量和成本之间的博弈。
2. 主流开源计算框架
本文不讨论商业化的CDH等。
2.1 概览
当前,大数据计算主流开源Project有两个,都是Apache的。
Hadoop的作者Doug cutting就职Yahoo期间开发了Hadoop项目。2005年秋天,作为Lucene的子项目Nutch的一部分正式引入Apache基金会,次年3月MR(MapReduce)和NDFS(Nutch Distributed File System )被纳入Hadoop项目,所以我们通常说Hadoop是2006年开源发布的。Apache Hadoop官网上,最新可下载版本为3.1.2(2019年2月发布),最老的为0.14.1(2007年9月发布)。
Spark是美国加州大学伯克利分校的AMP实验室(主要创始人lester和Matei)开发的通用的大数据处理框架,2009伯克利大学开始编写最初的源代码,次年开放的源代码(还没有形成),2012年2月发布了0.6.0版本,13年进入Apache孵化器项目,经过8个月成为了Apache的*项目,这种发展速度也从一定程度上体现了Spark的潜力。Apache Spark官网上,最新的可下载版本为2.4.3(2019年5月发布),最老的可下载版本为0.8.0(2014年5月发布)。
2. 主要模块(module)
每个Project的主要module如下:
-
Apache Hadoop(依托磁盘计算,版本2.x+)
- Hadoop Common
- 核心模块
- Hadoop Distributed File System (HDFS™)
- 分布式文件系统,当前是大数据存储的事实标准
- Hadoop YARN
- 通用资源管理框架,通常用于集群(Cluster)的资源管理(CPU、内存等)
- 相似的有Apache Mesos等。
- Hadoop MapReduce
- 数据计算框架,通常用于做离线分析
-
Hadoop Submarine
- 机器学习库
- Hadoop Common
-
Apache Spark(依托内存计算,大数据计算的准事实标准,版本2.x)
- Spark Core
- 核心模块
- 通常用于做离线分析,
-
Spark Stream
- 流式处理框架,通常用于做实时分析
- 准实时分析框架(下文有解释)
- 类似于hadoop生态中的Storm(Storm是实时的)
-
Spark SQL
- 通常用于对结构化/半结构化数据的计算分析
-
Spark MLib
- 机器学习库
-
Spark GraphX
- 图分析库(注意【不是图片】的分析)
- Spark Core
通过查看各自的module,我们可以发现Spark中涵盖了大数据计算的所有分类,如果要对数据进行各种各样的分析挖掘,选用Spark能节约部署空间,并且各组件之间的兼容性也好(毕竟都是Spark的)。
实际的数据计算分析中,选择hadoop还是spark会更好一些?通过回顾BDAS的演变过程,我们来找一下灵感。
3. Apache Hadoop和Apache Spark在BDAS中的演变
(本节的图片主要来源于文档《Berkeley-Data-Analytics-Stack-BDAS-Overview-Ion-Stoica-Strata-2013》)
数据分析栈主要涉及三个层次:资源管理(Resource Managerment)、数据管理(Data Management)、数据计算(Data Processing)。
早期BDAS中,数据存储及离线分析是Hadoop的天下(包括Hadoop生态中现在仍然比较火的的Hive、HBase等)。
Spark0.7.0版本发布后,开始被引入到BDAS中,这个版本的Spark是一个类似于MR的集群计算框架(可以理解为只有spark core部分),充当与Hadoop MR类似的角色。
spark 0.7.2中添加了streaming模块(类似于spark core,只不过将数据处理周期缩短到很小,接近于实时处理,所以spark streaming又被称为“准实时”数据处理模块),作用类似于Apache Storm。
spark 0.8.0版本中新增了MLlib (机器学习库)及Shark(Hive on Spark,提供类似于SQL的数据查询方式,可以理解为Spark SQL的早期版本)等,BDAS先引入了Shark。(当时Hive是使用SQL方式查询Hadoop数据的唯一选择https://databricks.com/blog/2014/07/01/shark-spark-sql-hive-on-spark-and-the-future-of-sql-on-spark.html)
spark0.9.0新增模块GraphX 用于图计算(graph processing),GraphLab被引入到BDAS,
随后spark的机器学习模块被引入被引入
经过持续的更新和优化,当前amp实验室的BDAS如下(https://amplab.cs.berkeley.edu/software/)
附-1:一些参考资料
官方文档地址 http://hadoop.apache.org/docs/,最新版本的文档http://hadoop.apache.org/docs/stable/
官方文档地址 https://spark.apache.org/docs/,最新版本的文档https://spark.apache.org/docs/latest/
BDAS, the Berkeley Data Analytics Stack, is an open source software stack that integrates software components being built by the AMPLab to make sense of Big Data. https://amplab.cs.berkeley.edu/software/
附-2:一些资源的下载地址
hadoop下载地址https://hadoop.apache.org/releases.html
spark下载地址https://spark.apache.org/downloads.html
hive下载地址https://www-us.apache.org/dist/hive/
mesos下载地址http://mesos.apache.org/downloads/