大家好,今天给各位分享全面剖析大数据处理系统核心架构层次的一些知识,其中也会对进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
1、数据存储层
从广义上讲,分布式数据存储策略根据一致性要求的强弱,可以分为ACID和BASE两大阵营。
ACID是指数据库事务的四个特性:原子性、一致性、隔离性和持久性。 ACID中的一致性要求比较强,事务执行的结果必须是使数据库从一种一致性状态改变到另一种一致性状态。
BASE 的一致性要求较弱。它的三个特点是:基本可用、软状态(即状态可以在一段时间内不同步)、最终一致性。 )。 BASE进一步细分为基于键值、基于文档和基于列和图——细分的基础取决于底层架构和支持的数据结构(注:BASE与ACID模型完全不同,后者牺牲了强大的性能)一致性,获得基本可用性和灵活可靠性,并要求最终一致性)。在数据存储层,有很多类似的系统以及某些系统的变体。这里我只列举几个比较有名的。如果遗漏了一些重要的系统,请见谅。
1. 基地
(1)键值存储
Dynamo:这是亚马逊工程师设计的基于键值的高可用分布式存储系统(注:Dynamo放弃了对数据进行建模的能力,所有的数据对象都使用最简单的Key-value模型进行存储,可以简单地将Dynamo理解为一个巨大的Map(Dynamo牺牲部分一致性来换取整个系统的高可用性)。
Cassandra:这是Facebook工程师设计的离散分布式结构化存储系统。受亚马逊Dynamo的启发,Cassandra采用多维键值或面向列的数据存储格式(注:Cassandra可用于管理分布在大量廉价服务器上的海量结构化数据,同时提供高可用性服务)无单点故障)。
Voldemort:这是另一款受亚马逊Dynamo启发的分布式存储作品,由全球最大的职业社交网络LinkedIn的工程师开发。
(2) 列式存储
BigTable:Bigtable是一个基于Google文件系统的分布式数据存储系统。是谷歌争创世界的“三驾马车”之一。另外两个是分布式锁服务系统Chubby和MapReduce,下面会提到。
HBase:HBase是一个分布式、面向列的开源数据库。其设计理念源自Google的BigTable,采用Java语言编写。
Hypertable:Hypertable也是一个开源、高性能、可扩展的数据库,使用与Google的Bigtable类似的模型。
(3) 面向文档的存储
CouchDB:这是一个面向文档的开源数据存储管理系统。
MongoDB:它是一种非常流行的非关系型(NoSQL)数据库。
(4) 面向图的存储
Neo4j:Neo4j是目前最流行的高性能NoSQL图数据库。它使用图来描述数据模型,并将数据保存为图中的节点以及节点之间的关系。这是最流行的图数据库。
Titan:Titan是Apache许可框架下的分布式开源图数据库。它专门针对存储和处理大规模图形进行了优化。
2. 酸性
Megastore:这是一个基于BigTable构建的高可用分布式存储系统。
Spanner:这是Google开发的一个可扩展、全球分布、同步复制的数据库,支持SQL查询访问。
MESA:同样由Google 开发,它是一个地理复制、高可用、容错且可扩展的近实时数据仓库系统。
CockroachDB:该系统是由前Google工程师Spencer Kimball开发的Spanner的开源版本。
2. 资源管理器
第一代Hadoop生态系统的资源管理是从单个总体调度器开始的,其代表作品是YARN。目前的调度器正在向分层调度的方向发展(Mesos是这个方向的代表作品)。这种分层调度方法可以管理不同类型的计算工作负载,从而实现更高的资源利用率。速率和调度效率。
YARN:这是新一代MapReduce计算框架,简称MRv2。它是在第一代MapReduce的基础上演变而来的(注:MRv2的设计初衷是为了解决第一代Hadoop系统中可扩展性差、无法支持多个Hadoop系统的计算框架等问题。
Mesos:这是一个开源计算框架,可以灵活管理多个集群中的资源。
这些计算框架和调度程序是松散耦合的。调度器的主要功能是根据一定的调度策略和调度配置完成作业调度,以实现工作负载均衡,实现有限资源的更高利用率。
3. 调度程序
(1)作业调度器,通常作为插件加载在计算框架上。有4 种常见的作业调度程序:
计算功率调度器
公平调度器
延迟调度
公平与能力调度器
(2)协调
在分布式数据系统中,协调器主要用于协调服务和进行状态管理。
Paxos:Google的Chubby和Apache的Zookeeper都是以Paxos为理论基础实现的。
Chubby:本质上是上面提到的Paxos的一个实现版本,主要用于Google分布式锁服务。
Zookeeper:这是Apache Hadoop框架下Chubby的开源版本。它不仅提供了简单的锁定服务,事实上,它是一个通用的分布式协调器,其设计灵感来自于Google的Chubby。
4. 计算框架
(0)运行时计算框架
它可以为不同类型的计算提供运行时环境。最常用的运行时计算框架是Spark和Flink。
Spark:Spark是一个基于内存计算的开源集群计算系统。其目的是使数据分析更快。 Spark 是由加州大学伯克利分校的AMP 实验室使用Scala 语言开发的。 Spark的内存计算框架适用于各种迭代算法和交互式数据分析,可以提高大数据处理的实时性和准确性。逐渐获得了多家公司的支持,如阿里巴巴、百度、网易、英特尔等公司。是它的用户。
Flink:这是一个与Spark非常相似的计算框架,但在迭代数据处理方面比Spark更强大(注:目前的大数据分析引擎Flink已经升级为顶级Apache项目)。
Spark和Flink都是基础的大数据处理引擎。具体的计算框架,一般可以根据使用的模型和延迟处理的不同进行分类。
(1)批量处理
映射减少
(2) 迭代公式(BSP)
Pregel:Pregel是一个面向图算法的分布式编程框架,采用迭代计算模型。被称为后Hadoop时代Google的新“三驾马车”之一。另外两辆马车是:“互动”大数据分析系统Dremel和互联网搜索引擎Caffeine。
Giraph:这个系统是仿照Google的Pregel设计的,可以看作是Pregel的开源版本。它是一个基于Hadoop架构的可扩展的分布式迭代图处理系统。
GraphX:这是一个同时使用图并行计算和数据并行的计算框架。 GraphX最初是加州大学伯克利分校AMPLab实验室的分布式图计算框架项目,后来集成到Spark中,成为其核心组件之一。 GraphX最大的贡献在于它提供了Spark之上的单栈数据解决方案,可以轻松高效地完成图计算的一整套流水线操作。
Hama:它是一个基于Hadoop 之上构建的BSP 模型的分布式计算引擎。 Hama的运行环境需要关联Zookeeper、HBase、HDFS组件。 Hama中最关键的技术是BSP模型(Bulk Synchronous Parallel,也称为整体同步并行计算模型,也称为大同步模型)的使用。
(3)流媒体
Storm:Storm 在实时处理领域有时也称为Hadoop。它极大地简化了大规模数据流的处理机制,从而在实时处理领域发挥着重要作用。
Samza:这是Linkedin开发的分布式流式数据处理框架(注:所谓流式数据是指处理单元内部要获取的数据,这种方式更注重实时性。流式数据有时也称为快速数据)。
Spark Streaming:Spark Streaming 是Spark 核心API 的扩展。它不像Storm那样对数据流进行一一处理。而是在处理前按照时间间隔预先将其分成许多小批量处理作业。
(4)互动
Dremel这篇论文是几个基于Hadoop的开源SQL系统的理论基础。
Impala:这是一个大规模并行处理(MPP)SQL大数据分析引擎。与Dremel 一样,Impala 借鉴了MPP(大规模并行处理)并行数据库的思想,并放弃了不适合进行SQL 查询的MapReduce 范式,从而使Hadoop 能够支持交互式工作负载。
Drill:这是Google Dremel 的开源版本。 Drill是一个低延迟的分布式数据引擎,可以对海量数据(包括结构化、半结构化和嵌套数据)进行交互式查询。
鲨鱼:鲨鱼的意思是“火花上的蜂巢”。它本质上是通过Hive的HQL分析,将HQL转化为Spark上的RDD操作。然后通过Hive的元数据获取数据库中的表信息。 HDFS上的数据和文件最终会被Shark拿到并放到Spark上进行计算。 Shark基于Scala语言的算子推导,可以实现良好的容错机制,对于执行失败的长/短任务可以快速从之前的“快照”中恢复。
Dryad:Dryad是一个通用的粗粒度分布式计算和资源调度引擎。其核心功能之一是允许用户构建自己的DAG调度拓扑。
Tez:它的核心思想来自于Dryad,可以看作是Dryad使用Yarn(即MRv2)的开源实现。 Apache Tez 是一个基于Hadoop Yarn 的DAG 计算框架。
BlinkDB:可以对采样数据实现交互式查询,呈现的查询结果带有错误标志。 BlinkDB 是一个大规模并行查询引擎,用于对海量数据运行交互式SQL 查询。 BlinkDB允许用户先采样数据,然后通过适当降低数据精度来计算。通过其独特的优化技术,BlinkDB实现了比Hive快一百倍的交互式查询速度,而查询进度误差仅降低了2~10%。
(5)实时系统(RealTime)
Druid:这是一个开源的分布式实时数据分析和存储系统,旨在快速处理大规模数据并实现快速查询和分析。
Pinot:这是LinkedIn出品的开源、实时分布式OLAP数据分析存储系统。和上面提到的德鲁伊非常相似。 LinkedIn 使用它来实现低延迟和可扩展的实时分析。
5.数据分析层(Data Analysis)
数据分析层的工具涵盖面很广,从SQL等声明式编程语言到Pig等过程式编程语言。另一方面,数据分析层的库也非常丰富,可以支持常见的数据挖掘和机器学习算法。这些库可以开箱即用,非常方便。
(1)工具
Pig:Pig Latin 最初是一种儿童俚语,是一种英语游戏。形式是在英语中添加一些规则,改变发音,使成人无法理解,从而完成只有孩子才能理解的交流。雅虎工程师2008年在SIGMOD上发表了一篇论文,论文的标题是《Pig Latin:一种不太洋气的数据语言》。言外之意是,他们发明了一种用于数据处理的“俚语”,——Pig Latin。一开始你可能不太理解,但是当你熟悉了之后,你就会发现这种数据查询语言的乐趣。
Hive:Hive 是基于Hadoop 构建的数据仓库基础设施。它用于提取、转换和加载数据(即Extract-Transform-Load,ETL)。它是一种可以存储、查询和分析Hadoop中存储的大规模数据的机制。
Phoenix:是HBase的SQL驱动。 Phoenix 可以将SQL 查询转换为HBase 扫描和相应的操作。
(2)图书馆
MLlib:这是Spark计算框架中常用机器学习算法的实现库。该库还包括相关的测试和数据生成器。
SparkR:这是AMPLab发布的R开发包,为Apache Spark提供轻量级前端。
Mahout:这是一个强大的数据挖掘工具,也是一个基于传统MapReduce的分布式机器学习框架。 Mahout的中文意思是“控制大象的人”,Hadoop的标志是一头小黄象。显然,这个库是为了帮助用户用好Hadoop这头难象。
6.数据集成层(Data Integration)
数据集成框架提供了良好的机制来协助大数据系统之间有效地摄取和输出数据。从业务流程线到元数据框架,数据集成层涵盖了一切,从而提供了数据整个生命周期的全面管理和治理。
(1) 摄取/消息传递
Flume:这是Apache下的一个分布式、高可靠、高可用的服务框架,可以辅助从分布式或集中式数据源收集、聚合和传输海量日志。
Sqoop:该系统主要用于传输Hadoop和关系数据库中的数据。 Sqoop 已成为Apache 的顶级项目之一。
Kafka:这是一个由LinkedIn 开发并用Scala 编写的分布式消息系统。由于其水平可扩展性和高吞吐率而得到广泛应用。
(2)ETL/工作流程
ETL是数据抽取、清洗、转换、加载的过程,是构建数据仓库的重要组成部分。
Crunch:这是Apache下的一组Java API函数库,可以大大简化编写、测试和运行MapReduce处理工作流程的过程。
Falcon:这是Apache下的Falcon大数据管理框架,可以帮助用户自动迁移和处理大数据集合。
Cascading:这是一个基于Hadoop 构建的API 函数库,用于创建复杂的容错数据处理工作流程。
Oozie:它是一个工作流引擎,用于辅助Hadoop 作业管理。 Oozie 的字面意思是驯服大象的人。它的意义和Mahout一样,帮助用户更好地处理Hadoop这头大象。
(3)元数据
HCatalog:为Apache Hadoop提供数据表和存储管理服务。 Apache HCatalog 提供共享模式和数据类型机制。它将表进行抽象,使用户不必关心数据如何存储,并提供可操作的跨数据处理工具。
(4)系列化
Protocol Buffers:一种独立于语言的机制,用于序列化和反序列化结构化数据,由Google 推广。
Avro:这是Hadoop 生态系统中以Protocol Buffers 为模型的子项目。 Avro本身既是一个序列化框架,也实现了RPC功能。
7. 运作框架
最后,我们还需要一个可操作的框架来构建一套衡量标准和测试基准来评估各种计算框架的性能。该操作框架还需要包括性能优化工具来平衡工作负载。
(1)监控框架
OpenTSDB:这是一个基于HBase构建的实时性能评估系统。
Ambari:这是一个基于Web 的系统,支持Apache Hadoop 集群的配置、管理和监控。
(2)标杆管理
YCSB:YCSB 是雅虎的缩写!云服务基准。顾名思义,它是雅虎出品的通用云服务性能测试工具。
GridMix:该系统通过运行大量合成作业来对Hadoop系统进行基准测试,以获得性能评估指标。
结论
感谢您的观看。如有不足之处,敬请批评指正。
如果您有对大数据感兴趣的朋友或者从事大数据有经验的司机,可以加入群:
658558542(点击加入群聊)
文章分享结束,全面剖析大数据处理系统核心架构层次和的答案你都知道了吗?欢迎再次光临本站哦!
【全面剖析大数据处理系统核心架构层次】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
这篇文章讲得挺深入的,希望能详细解释各个层次的功能和具体实现方法。
有10位网友表示赞同!
我对大数据处理系统的架构一直很感兴趣,这篇文章刚好能满足我的需求
有10位网友表示赞同!
我一直觉得大数据处理非常复杂,看完这篇文章感觉架构还挺清晰的啊!
有7位网友表示赞同!
学习学习,现在很多行业都需要用到大数据分析,了解系统架构对我很有帮助
有19位网友表示赞同!
想以后也开发大数据处理系统,从这篇文章可以先了解一下基本的结构模型。
有13位网友表示赞同!
作者把层次架构解释得非常清晰易懂,很容易理解不同的模块之间是如何相互作用的。
有14位网友表示赞同!
最近在研究大数据的应用场景,了解系统架构能帮助我更好地把握整体思路。
有12位网友表示赞同!
这篇文章让我对大数据处理系统有了更深入的认识,原来它包含这么多个层次和功能!
有20位网友表示赞同!
期待文章能详细介绍每个层次具体的技术实现方案!
有17位网友表示赞同!
我觉得架构图画得很好,一目了然!可以看得出作者很用心在阐述系统结构。
有15位网友表示赞同!
学习知识不容易啊,感谢作者分享这么好的文章!
有12位网友表示赞同!
这篇文章对理解大数据处理系统很有帮助,以前只是粗略了解了一下。
有5位网友表示赞同!
希望能有更详细的解析和案例分析,能更好地理解这些层次结构在实践中的应用。
有16位网友表示赞同!
现在做开发的朋友都应该关注大数据技术的发展趋势吧?
有16位网友表示赞同!
学习了这个架构模型之后,我觉得自己对大数据的理解又前进了一步!
有14位网友表示赞同!
文章的语言非常通俗易懂,能让非专业人士也能理解系统结构的基本概念。
有15位网友表示赞同!
希望这篇文章能吸引更多人关注大数据技术的强大力量!
有13位网友表示赞同!
我觉得这个架构设计非常合理,各层次之间相互协作才能实现高效率的大数据处理!
有6位网友表示赞同!
读完这篇文章,感觉大数据系统内部的运作机制真的非常复杂...
有6位网友表示赞同!