大数据处理系统关键层次架构

在数据存储层,还有很多类似的系统和某些系统的变种,这里,我仅仅列出较为出名的几个。如漏掉某些重要系统,还请谅解。


以下是对上图中各层次架构的说明

一、数据存储层

宽泛地讲,据对一致性(consistency)要求的强弱不同,分布式数据存储策略,可分为ACID和BASE两大阵营。

ACID是指数据库事务具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。ACID中的一致性要求比较强,事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。

BASE对一致性要求较弱,它的三个特征分别是:基本可用(Basically Available), 软状态/柔性事务(Soft-state,即状态可以有一段时间的不同步), 最终一致性(Eventual consistency)。BASE还进一步细分基于键值的,基于文档的和基于列和图形的 – 细分的依据取决于底层架构和所支持的数据结构(注:BASE完全不同于ACID模型,它以牺牲强一致性,获得基本可用性和柔性可靠性,并要求达到最终一致性)。

在数据存储层,还有很多类似的系统和某些系统的变种,这里,我仅仅列出较为出名的几个。如漏掉某些重要系统,还请谅解。

1、BASE

(1)键值存储(Key Value Stores)

Dynamo:这是由亚马逊工程师们设计的基于键值的高可用的分布式存储系统(注:Dynamo放弃了数据建模的能力,所有的数据对象采用最简单的Key-value模型存储,可简单地将Dynamo理解为一个巨大的Map。Dynamo是牺牲了部分一致性,来换取整个系统的高可用性)。

Cassandra:这是由Facebook工程师设计的一个离散的分布式结构化存储系统,受亚马逊的Dynamo启发,Cassandra采用的是面向多维的键值或面向列的数据存储格式(注:Cassandra可用来管理分布在大量廉价服务器上的巨量结构化数据,并同时提供没有单点故障的高可用服务)。

Voldemort:这又是一个受亚马逊的Dynamo启发的分布式存储作品,由全球最大的职业社交网站LinkedIn的工程师们开发而成。

(2)面向列的存储(Column Oriented Stores)

BigTable:Bigtable是一个基于Google文件系统的分布式数据存储系统,是为谷歌打拼天下的“三驾马车”之一,另外两驾马车分别是分布式锁服务系统Chubby和下文将提到的MapReduce。

HBase:Hbase是一个分布式的、面向列的开源数据库。其设计理念源自谷歌的 BigTable,用Java语言编写而成。

Hypertable:Hypertable也是一个开源、高性能、可伸缩的数据库,它采用与Google的Bigtable类似的模型。

(3)面向文档的存储(Document Oriented Stores)

CouchDB:这是一款面向文档的、开源数据存储管理系统。

MongoDB:是目前非常流行的一种非关系型(NoSQL)数据库。

(4)面向图(Graph)的存储

Neo4j:Neo4j是一款目前最为流行的高性能NoSQL 图数据库,它使用图来描述数据模型,把数据保存为图中的节点以及节点之间的关系。这是最流行的图数据库。

Titan:Titan是一款Apache许可证框架下的分布式的开源图数据库,特别为存储和处理大规模图而做了大量优化。

2、ACID

Megastore:这是一个构建于BigTable之上的、高可用的分布式存储系统。

Spanner:这是由谷歌研发的、可扩展的、全球分布式的、同步复制数据库,支持SQL查询访问。

MESA:亦是由谷歌研发的、跨地域复制(geo-replicated)、高可用的、可容错的、可扩展的近实时数据仓库系统。

CockroachDB:该系统是由Google前工程师Spencer Kimball领导开发的Spanner 的开源版本。

二、资源管理器层(Resource Managers)

第一代Hadoop的生态系统,其资源管理是以整体单一的调度器起家的,其代表作品为YARN。而当前的调度器则是朝着分层调度的方向演进(Mesos则是这个方向的代表作),这种分层的调度方式,可以管理不同类型的计算工作负载,从而可获取更高的资源利用率和调度效率。

YARN:这是新一代的MapReduce计算框架,简称MRv2,它是在第一代MapReduce的基础上演变而来的(注:MRv2的设计初衷是,为了解决第一代Hadoop系统扩展性差、不支持多计算框架等问题。

Mesos:这是一个开源的计算框架,可对多集群中的资源做弹性管理。

这些计算框架和调度器之间是松散耦合的,调度器的主要功能就是基于一定的调度策略和调度配置,完成作业调度,以达到工作负载均衡,使有限的资源有较高的利用率。

三、调度器(Schedulers)

(1)作业调度器,通常以插件的方式加载于计算框架之上,常见的作业调度器有4种:

  1. 计算能力调度器
  2. 公平调度器
  3. 延迟调度
  4. 公平与能力调度器

(2)协调器(Coordination)

在分布式数据系统中,协调器主要用于协调服务和进行状态管理。

Paxos:Google的Chubby和Apache的Zookeeper,都是用Paxos作为其理论基础实现的。

Chubby:本质上就是前文提到的Paxos的一个实现版本,主要用于谷歌分布式锁服务。

Zookeeper:这是Apache Hadoop框架下的Chubby开源版本。它不仅仅提供简单地上锁服务,而事实上,它还是一个通用的分布式协调器,其设计灵感来自谷歌的Chubby。

在数据存储层,还有很多类似的系统和某些系统的变种,这里,我仅仅列出较为出名的几个。如漏掉某些重要系统,还请谅解。

四、计算框架(Computational Frameworks)

(0)运行时计算框架

可为不同种类的计算,提供运行时(runtime)环境。最常用的是运行时计算框架是Spark和Flink。

Spark:Spark是一个基于内存计算的开源的集群计算系统,其目的在于,让数据分析更加快速。Spark是由加州大学伯克利分校的AMP实验室采用Scala语言开发而成。Spark的内存计算框架,适合各种迭代算法和交互式数据分析,能够提升大数据处理的实时性和准确性,现已逐渐获得很多企业的支持,如阿里巴巴、百度、网易、英特尔等公司均是其用户。

Flink:这是一个非常类似于Spark的计算框架,但在迭代式数据处理上,比Spark更给力(注:目前大数据分析引擎Flink,已升级成为Apache顶级项目)。

Spark和Flink都属于基础性的大数据处理引擎。具体的计算框架,大体上,可根据采用的模型及延迟的处理不同,来进行分门别类。

(1)批处理(Batch)

MapReduce

(2)迭代式(BSP)

Pregel:Pregel是一种面向图算法的分布式编程框架,其采用的是迭代式的计算模型。它被称之为Google后Hadoop时代的新“三驾马车”之一。另外两驾马车分别是:“交互式”大数据分析系统Dremel和网络搜索引擎Caffeine。

Giraph:该系统建模于谷歌的Pregel,可视为Pregel的开源版本,它是一个基于 Hadoop架构的、可扩展的分布式迭代图处理系统。

GraphX:这是一个同时采用图并行计算和数据并行的计算框架,GraphX最先是加州大学伯克利分校AMPLab实验室的一个分布式图计算框架项目,后来整合到Spark中,成为其中的一个核心组件。GraphX最大的贡献在于,在Spark之上提供一栈式数据解决方案,可方便高效地完成图计算的一整套流水作业。

Hama:是一个构建Hadoop之上的基于BSP模型的分布式计算引擎,Hama的运行环境需要关联 Zookeeper、HBase、HDFS 组件。Hama中最关键的技术,就是采用了BSP模型(Bulk Synchronous Parallel,即整体同步并行计算模型,又名大同步模型)。

(3)流式(Streaming)

Storm:Storm有时也被人们称为实时处理领域的Hadoop,它大大简化了面向庞大规模数据流的处理机制,从而在实时处理领域扮演着重要角色。

Samza:这是一款由Linkedin公司开发的分布式的流式数据处理框架(注:所谓流式数据,是指要在处理单位内得到的数据,这种方式更注重于实时性,流式数据有时也称为快数据)。

Spark流:Spark Streaming是Spark 核心API的一个扩展,它并不会像Storm那样逐个处理数据流,而是在处理前,按时间间隔预先将其切分为很多小段的批处理作业。

(4)交互式(Interactive)

Dremel该论文是多个基于Hadoop的开源SQL系统的理论基础。

Impala:这是一个大规模并行处理(MPP)式 SQL 大数据分析引擎,Impala像Dremel一样,其借鉴了MPP(Massively Parallel Processing,大规模并行处理)并行数据库的思想,抛弃了MapReduce这个不太适合做SQL查询的范式,从而让Hadoop支持处理交互式的工作负载。

Drill:这是谷歌 Dremel的开源版本,Drill是一个低延迟的、能对海量数据(包括结构化、半结构化及嵌套数据)实施交互式查询的分布式数据引擎。

Shark:Shark即“Hive on Spark”的含义,本质上是通过Hive的HQL解析,把HQL翻译成Spark上的RDD操作。然后通过Hive的元数据获,取数据库里的表信息。HDFS上的数据和文件,最后会由Shark获取,并放到Spark上运算。Shark基于 Scala语言的算子推导,可实现良好的容错机制,对执行失败的长/短任务,均能从上一个“快照点(Snapshot)”进行快速恢复。

Dryad:Dryad是一个通用的粗颗粒度的分布式计算和资源调度引擎,其核心特性之一,就是允许用户自己构建DAG调度拓扑图。

Tez:其核心思想来源于Dryad,可视为利用Yarn(即MRv2)对Dryad的开源实现。Apache Tez是基于Hadoop Yarn之上的DAG计算框架。

BlinkDB:可在抽样数据上实现交互式查询,其呈现出的查询结果,附带有误差标识。BlinkDB 是一个用于在海量数据上运行交互式 SQL 查询的大规模并行查询引擎。BlinkDB允许用户通过适当降低数据精度,对数据进行先采样后计算,其通过其独特的优化技术,实现了比Hive快百倍的交互式查询速度,而查询进度误差仅降低2~10%。

(5)实时系统(RealTime)

Druid:这是一个开源的分布式实时数据分析和存储系统,旨在快速处理大规模的数据,并能做到快速查询和分析。

Pinot:这是由LinkedIn公司出品的一个开源的、实时分布式的 OLAP数据分析存储系统,非常类似于前面提到的Druid,LinkedIn 使用它实现低延迟可伸缩的实时分析。

五、数据分析层(Data Analysis)

数据分析层中的工具,涵盖范围很广,从诸如SQL的声明式编程语言,到诸如Pig的过程化编程语言,均有涉及。另一方面,数据分析层中的库也很丰富,可支持常见的数据挖掘和机器学习算法,这些类库可拿来即用,甚是方便。

(1)工具(Tools)

Pig:Pig Latin原是一种儿童黑话,属于是一种英语语言游戏,形式是在英语上加上一点规则使发音改变,让大人们听不懂,从而完成孩子们独懂的交流。雅虎的工程师们于2008年发表在SIGMOD的一篇论文,论文的题目是“Pig Latin:并不是太老外的一种数据语言”,言外之意,他们发明了一种数据处理的“黑话”——Pig Latin,一开始你可能不懂,等你熟悉了,就会发现这种数据查询语言的乐趣所在。

Hive:Hive是一个建立于 Hadoop 上的数据仓库基础构架。它用来进行数据的提取、转化和加载(即Extract-Transform-Load ,ETL),它是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。

Phoenix:它是 HBase 的 SQL 驱动,Phoenix可将 SQL 查询转成 HBase 的扫描及相应的动作。

(2)库(Libraires)

MLlib:这是在Spark计算框架中对常用的机器学习算法的实现库,该库还包括相关的测试和数据生成器。

SparkR:这是AMPLab发布的一个R开发包,为Apache Spark提供轻量级的前端。

Mahout:这是一个功能强大的数据挖掘工具,是一个基于传统Map Reduce的分布式机器学习框架,Mahout的中文含义就是“驭象之人”,而Hadoop的Logo正是一头小黄象。很明显,这个库是帮助用户用好Hadoop这头难用的大象。

六、数据集成层(Data Integration)

数据集成框架提供了良好的机制,以协助高效地摄取和输出大数据系统之间的数据。从业务流程线到元数据框架,数据集成层皆有涵盖,从而提供全方位的数据在整个生命周期的管理和治理。

(1)摄入/消息传递(Ingest/Messaging)

Flume:这是Apache旗下的一个分布式的、高可靠的、高可用的服务框架,可协助从分散式或集中式数据源采集、聚合和传输海量日志。

Sqoop:该系统主要用来在Hadoop和关系数据库中传递数据,Sqoop目前已成为Apache的顶级项目之一。

Kafka:这是由LinkedIn开发的一个分布式消息系统,由Scala编写而成。由于可水平扩展、吞吐率高等特性,得到广泛应用。

(2)ETL/工作流

ETL是数据抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)的过程,是构建数据仓库的重要一环。

Crunch:这是Apache旗下的一套Java API函数库,它能够大大简化编写、测试、运行MapReduce 处理工作流的程序。

Falcon:这是Apache旗下的Falcon大数据管理框架,可以帮助用户自动迁移和处理大数据集合。

Cascading:这是一个架构在Hadoop上的API函数库,用来创建复杂的可容错的数据处理工作流。

Oozie:是一个工作流引擎,用来协助Hadoop作业管理,Oozie字面含义是驯象之人,其寓意和Mahout一样,帮助用户更好地搞定Hadoop这头大象。

(3)元数据(Metadata)

HCatalog: 它提供了面向Apache Hadoop的数据表和存储管理服务,Apache HCatalog提供一个共享的模式和数据类型的机制,它抽象出表,使用户不必关心数据怎么存储,并提供了可操作的跨数据处理工具。

(4)序列化(Serialization)

Protocol Buffers:由Google推广的一种与语言无关的、对结构化数据进行序列化和反序列化的机制。

Avro:这是一个建模于Protocol Buffers之上的、Hadoop生态系统中的子项目,Avro本身既是一个序列化框架,同时也实现了RPC的功能。

七、操作框架(Operational Frameworks)

最后,我们还需要一个操作性框架,来构建一套衡量标准和测试基准,从而来评价各种计算框架的性能优劣。在这个操作性框架中,还需要包括性能优化工具,借助它来平衡工作负载。

(1)监测管理框架(Monitoring Frameworks)

OpenTSDB:这是构建于HBase之上的实时性能评测系统。

Ambari:这是一款基于Web的系统,支持Apache Hadoop集群的供应、管理和监控。

(2)基准测试(Benchmarking)

YCSB:YCSB是雅虎云服务基准测试(Yahoo! Cloud Serving Benchmark)的简写。见名知意,它是由雅虎出品的一款通用云服务性能测试工具。

GridMix:该系统通过运行大量合成的作业,对Hadoop系统进行基准测试,从而获得性能评价指标。

本文作者:佚名

来源:51CTO

时间: 2024-11-01 07:45:55

大数据处理系统关键层次架构的相关文章

大数据处理系统是一个IT工具,还是业务系统呢?

对于企业的业务人员,特别是数据科学家人群来说,Informatica的Intelligent Data Platform不仅是一个智能化的大数据预处理工具,而且可以像业务系统一样为企业带来直接的价值. 互联网企业通常会强调细节和微创新,把产品的某一项功能做到极致,借此牢牢吸引大量用户.但是企业级厂商则不同,它们更倾向于将产品平台化.平 台化的好处是可以把尽量多的功能集成在一起,方便部署与管理,而且可以借平台屏蔽底层架构的复杂性.软件厂商尤喜平台化,比如数据保护厂商有数据保护和统 一管理平台,大数

《智能数据时代:企业大数据战略与实战》一1.3 大数据处理的关键——数据类型

1.3 大数据处理的关键--数据类型 体量大只是大数据概念的一部分.人们越来越认识到半结构化数据和非结构化数据也是大数据的重要部分,它们往往含有十分关键的商用信息,因而更加能够满足BI和商业操作的需要.而且我们应该认识到,非结构化的商业数据正在快速增长,并且在可预见的将来还会继续增长.数据可以分为以下三类:结构化数据.半结构化数据和非结构化数据.结构化数据通常适用于传统的SQL语言数据库等,其中数据按照事先定义好的业务规则被写入表中.结构化数据通常被认为是最易处理的数据类型,因为它可以被定义和检

大数据处理的关键技术

在大数据时代,传统的数据处理方法还适用吗? 大数据环境下的数据处理需求 大数据环境下数据来源非常丰富且数据类型多样,存储和分析挖掘的数据量庞大,对数据展现的要求较高,并且很看重数据处理的高效性和可用性. 传统数据处理方法的不足 传统的数据采集来源单一,且存储.管理和分析数据量也相对较小,大多采用关系型数据库和并行数据仓库即可处理.对依靠并行计算提升数据处理速度方面而言,传统的并行数据库技术追求高度一致性和容错性,根据CAP理论,难以保证其可用性和扩展性. 传统的数据处理方法是以处理器为中心,而大

Storm (实时分布式大数据处理系统) 简介

相比Hadoop的批处理,Storm的特点就是实时性. 组件 Storm集群主要由一个主节点和一群工作节点(worker node)组成,通过 Zookeeper进行协调. 主节点 主节点通常运行一个后台程序 -- Nimbus,用于响应分布在集群中的节点,分配任务和监测故障.这个很类似于Hadoop中的Job Tracker. 工作节点 工作节点叫worker,一般就是集群中的一个节点,也就是一个计算机.它同样会运行一个后台程序 --Supervisor,用于收听工作指派并基于要求运行工作进程

用于实时大数据处理的Lambda架构

1.Lambda架构背景介绍Lambda架构是由Storm的作者Nathan Marz提出的一个实时大数据处理框架.Marz在Twitter工作期间开发了著名的实时大数据处理框架Storm,Lambda架构是其根据多年进行分布式大数据系统的经验总结提炼而成.Lambda架构的目标是设计出一个能满足实时大数据系统关键特性的架构,包括有:高容错.低延时和可扩展等.Lambda架构整合离线计算和实时计算,融合不可变性(Immunability),读写分离和复杂性隔离等一系列架构原则,可集成Hadoop

详解Hadoop系统:Hadoop架构、各部分功能及对大数据的意义

如今Apache Hadoop已成为大数据行业发展背后的驱动力.Hive和Pig等技术也经常被提到,但是他们都有什么功能,为什么会需要奇怪的名字(如Oozie,ZooKeeper.Flume). Hadoop带来了廉价的处理大数据(大数据的数据容量通常是10-100GB或更多,同时数据种类多种多样,包括结构化.非结构化等)的能力.但这与之前有什么不同? 现今企业数据仓库和关系型数据库擅长处理结构化数据,并且可以存储大量的数据.但成本上有些昂贵.这种对数据的要求限制了可处理的数据种类,同时这种惯性

独家 | 一文读懂大数据处理框架

前言 说起大数据处理,一切都起源于Google公司的经典论文:<MapReduce:Simplied Data Processing on Large Clusters>.在当时(2000年左右),由于网页数量急剧增加,Google公司内部平时要编写很多的程序来处理大量的原始数据:爬虫爬到的网页.网页请求日志:计算各种类型的派生数据:倒排索引.网页的各种图结构等等.这些计算在概念上很容易理解,但由于输入数据量很大,单机难以处理.所以需要利用分布式的方式完成计算,并且需要考虑如何进行并行计算.分

大数据处理——Hadoop解析(一)

概述 这个时代被称之为大数据时代,各行各业生产的数据量呈现爆发性增长,并且基于这些爆发性增长的数据做深层次的数据挖掘.分析.处理.因此,我们可以很容易的感觉到,在这样一个大数据的时代,我们很多做事情的方法正在发生了改变.例如,基于大数据分析可以做疾病预测控制;基于大数据分析可以做交通流量预测控制;基于大数据分析可以做大型系统故障诊断预测;基于大数据分析可以做客户消费推荐.可以说,大数据时代可以解决很多以前非常难以解决的问题.可以这样讲,在这样一个时代,大数据可以让我们的生活变得更加美好. 突如其

【好书试读】大数据处理之道

开始试读:https://yqfile.alicdn.com/e62f864d518c11f5d19f53d0719de69c.pdf 天猫购买链接:大数据处理之道 近年来,"大数据"已然成为IT界如火如荼的词,与"云计算" 并驾齐驱,成为带动IT行业发展的两列高速火车.尤其是在物联网快速发展的时代,数据已经被称为新的资源,是支撑物联网发展的基石. 那么,如何把"死"的数据变成真正有效的"资源",成为近年来IT界人士共同思考的