大数据主流开源计算框架

时间:2024-03-30 08:30:21

    大数据的存储常用HDFS(大数据存储的事实标准),计算分析用Spark(一站式大数据计算的事实标准),集群中的资源管理用Yarn或mesos。

    本文主要内容如题,适合有一定基础的人查看(关于大数据big data是什么,由何而来,指导思想、3V~5V特性,环境搭建、挖掘分析及编程等,本文不涉及),,有些描述可能不是很准确,欢迎大家一起讨论交流。

目录

1. 大数据计算的分类

Batch(离线分析)

Interactive(交互查询/即席查询)

Streaming(流式分析/实时分析)

2. 主流开源计算框架

2.1 概览

2. 主要模块(module)

Apache Hadoop(依托磁盘计算,版本2.x+)

Apache Spark(依托内存计算,大数据计算的准事实标准,版本2.x)

3. Apache Hadoop和Apache Spark在BDAS中的演变

附-1:一些参考资料

附-2:一些资源的下载地址


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
      • 机器学习库
  • Apache Spark(依托内存计算大数据计算的准事实标准,版本2.x

    • Spark Core
      • 核心模块
      • 通常用于做离线分析,
    • Spark Stream

      • 流式处理框架,通常用于做实时分析
      • 实时分析框架(下文有解释
      • 类似于hadoop生态中的Storm(Storm是实时的)
    • Spark SQL

      • 通常用于对结构化/半结构化数据的计算分析
    • Spark MLib

      • 机器学习库
    • Spark GraphX

      • 图分析库(注意【不是图片】的分析)

通过查看各自的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/