Hadoop与Spark开源大数据技术栈概述

随着大数据技术的快速发展,目前开源社区已经积累了比较完整的大数据技术栈,目前市场上应用最广泛的是以Hadoop与Spark为核心的生态系统。该生态系统分为5个层级分别是:数据收集,数据存储,资源管理与服务协调,计算引擎和数据分析。下面分别对这5个层级进行介绍


1.数据收集层:

该层主要对关系型数据以及非关系型数据进行收集,以及分布式消息的收集

Sqoop/canal:关系型数据收集和导入工具,是连接关系型数据库(MySQL)和Hadoop(HDFS)的桥梁,Sqoop可将关系型数据库中的数据全量导入Hadhoop,与此同时也可将Hadhoop中的数据导入到关系型数据库当中。而Canal可以用于数据的增量导入。

Flume :非关系型数据库收集工具,主要是流式日志数据,可近实时收集,经过滤,聚集后加载到HDFS等存储系统

Kafka:分布式消息队列,一般作为数据总线使用,它允许多个数据消费订阅并获取其感兴趣的数据,相对于其他MQ,它具有分布式高容错设计,更适用大数据应用场景


2.数据存储层:

主要由分布式文件系统(面向文件的存储)和分布式数据库(面向行/列的存储)构成。

HDFS:Hadhoop分布式文件系统,是谷歌GFS的开源实现,具有良好的扩展性与容错性等优点,尤其是出色的容错机制设计,使得它适合构建在廉价的机器上,很大程度上降低了大数据存储成本,其支持的文件存储格式有SSTable(sorted String Table) ,文本文件,二进制key/value格式Sequence File等

Hbase:构建在HDFS之上的分布式数据库,是Google BigTable 的开源实现,允许用户存储结构化和半结构化数据。支持行列无限扩展以及书记的随即查找与删除。

Kudu:分布式列式存储数据库,允许用户存储结构化数据,支持随即查找与更新。


3.资源管理与服务调度

包含YARN和ZooKeeper

YARN:统一资源管理与调度系统,他能够管理集群中的各种资源比如CPU和内存等。并按照一定策略分配给上层的各类应用。YARN内置了多种多租户资源调度器,允许用户按照队列的方式组织和管理资源,每个队列的调度机制可独立定制。

Zookeeper:基于简化的Paxos协议实现的服务协调系统,它提供了类似于文件系统的数据模型允许用户通过简单的API实现leader选举,服务命名,分布式队列与分布式锁等复杂的分布式通用模块。


4.计算引擎层

包含批处理,交互式处理和流式实时处理三种引擎

MapReduce/Tez:MapReduce是一个经典的批处理计算引擎,具有良好的扩展性和容错性,允许用户通过简单的API编写分布式程序;Tez是基于MapReduce开发的通用DAG既有向无环图计算引擎,能够高效的实现复杂的数据处理逻辑,被广泛应用在Hive,Pig等数据分析系统中。
Spark:通用的DAG计算引擎,它提供了基于RDD的数据抽象表示,允许用户充分的利用内存进行快速的数据挖掘和分析。
Impala/Presto:允许用户使用标准SQL处理Hadhoop中的数据。他们采用了并行数据库架构,内置了查询优化器,查询下推,代码生成等优化机制。
Storm/Spark Streaming:分布式流式实时计算引擎,具有良好的扩展性和容错性。能够高效的处理流式数据。对外提供简单的接口。

5.数据分析层

为解决大数据问题而提供的各种分析工具

Hive/Pig/SparkSQL:在计算引擎之上构建的支持SQL或简本语言的分析系统。其中Hive是基于MapReduce/Tez实现的SQL引擎,Pig是基于MapReduce/Tez实现的工作流引擎,SparkSQL
是基于Spark实现的SQL引擎。

Mahout/MLlib:在计算引擎之上构建的机器学习库实现了常用的机器学习和数据挖掘算法。

Apache Beam/Cascading:基于各类计算框架而封装的高级API,方便用户构建复杂的流水线,Apache Beam统一了批处理和流式处理计算两类计算框架;Cascading内置了查询优化器能够自动化用户实现数据流,采用了tuple数据模型对结构性数据的支持较好
大数据应用架构图