Hadoop模式架构是怎么样的

68次阅读
没有评论

共计 8270 个字符,预计需要花费 21 分钟才能阅读完成。

这篇文章主要介绍 Hadoop 模式架构是怎么样的,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、Hadoop 1.0 的模型:

  |

split 0- map-[sort]- [1,3..]|  /merge

| == reducer– part 0= HDFS replication

split 1- map-[sort]- [2,6..]|—————————————

| == reducre— part 1  = HDFS replication

split 2- map-[sort]- [4,2..]|

|

|

//INPUT HDFS|  //output HDFS

// 启动有 3 个 map,reducer 只启动了 2 个,sort: 本地排序后发送给 reducer

相同的 key 发送到同一个 reducer

//merge: 把多个数据流整合为一个数据流

工作流程:

Client— Job— Hadoop MapReduce master

 |

 |

 V

  /      \

Job parts  Job parts

   |  |

   VV

[Input]– map1reduceA—- [Output][Data]—map2 =》reduceB—- [Data]

   \__map3 

// 其中 map1,2,3 和 reduceA,B 是交叉使用的。也就是说 map1 可以同时对应 reduceA 和 reduceB,其他的也都可以

//MapReduce 将需要处理的任务分成两个部分,Map 和 Reduce

Client App

(MapReduce Client)—-  Job Tracker

     |

____________________|_____________________________

[task tracker1]  [task tracker1]   [task tracker1] 

map  reduce reduce reduce map      map reduce map 

JobTracker: 有任务列表,以及状态信息

JobA—- [map task1]

JobB[map task2]

JobC[map task3]

…[reduce task 1][reduce task 2]

// 任何一个 task tracker 能够运行的任务数量是有限的,可以进行定义

// 任务槽:决定可以运行多少个 job

Jobtracker:

1. 负责任务分发

2. 检查 Task tracker 状态,tracker 故障重启等

3. 监控任务的状态

Job tracker 存在单点故障的问题,在 hadoop2.0 后这几个功能分别实现了

Mapreduce 2.0 之后切割为两部分

二、HadooP 1.0 和 2.0

1.0: pig:data flow,Hive:sql , 

2.0: MR:batch 批处理,Pig:data flow,Hive:sql

RT:stream graph: 实时流式图形处理

Tez:execution engine// 执行引擎

MRv1:cluster resouce manager,Data procession

MRV2:

1.YARN:Cluster resource manager

Yet Another Resource Negotiator,另一种资源协调者

2.MRv2:Data procession

MR:batch 作业

Tez:execution engine // 提供运行时环境

可以直接在 YARN 之上的程序有:

MapReduce:Batch,Tez,HBase,Streaming,Graph,SPark,HPC MPI[高性能],Weave

Hadoop2.0

clinet– RM— node1/node2/node n…

Resouce Manager: RM 是独立的

node 上运行的有 [node manager+App Master+ Container]

Node manager:NM,运行在各 node 上,周期向 RM 报告 node 信息,

clinet 请求作业:node 上的 Application master 决定要启动几个 mapper 几个 reducer

mapper 和 reducer 称为 Container // 作业都在容器内运行。

Application master 只有一个,且同一个任务的 APP M 只在一个节点上,但是 Container 会分别运行在多个节点上,并周期向 APP M 报告其处理状态

APP M 向 RM 报告任务运行状况,在任务执行完毕后,RM 会把 APP M 关闭

某一个任务故障后,由 App M 进行管理,而不是 RM 管理

2.0 工作模型

A   【NM/Container 1/APP M(B)】

 \/

【RM】 —  【NM/Container 2/APP M(A)】

 /\

B   【NM/Container 3    /A A 】

// 任务 A 运行了 3 个 container, 在两个节点上

// 任务 B 运行了 1 个 container,在一个节点上

Mapreduce status:container 向 APP M 报告 //container 包括 map 和 reducer 任务

Job submission:

node status:NM 周期向 RM 报告

Resouce Request:由 App M 向 RM 申请,然后 APP M 就可以使用其他 node 的 container

client 请求 – RM 查找空闲 node,空闲 node 上运行 APP M– APP M 向 RM 申请运行 container 资源,RM 向 NM 提请 container,RM 分配好 coantainer 后,告诉给 APP M

APP M 使用 container 运行任务。Container 在运行过程中,不断向 APP M 反馈自己的状态和进度,APP M 向 RM 报告运行状态。

APP M 报告运行完成,RM 收回 container 和关闭 APP M

RM:resource manager

NM:node manager

AM:application master

container:mr 任务运行

Hadoop 发展路线:

2003 nutch // 蜘蛛程序

2004-2006:Mapreduce + GFS, 论文

2011:hadoop 1.0.0

2013:hadoop 2.0

http://hadoop.apache.org/

可以直接在 YARN 之上的程序有:

MapReduce:Batch,Tez,HBase,Streaming,Graph,SPark,HPC MPI[高性能],Weave

三、Hadoop 2.0 生态系统与基本组件

// 在 YARN 之上是依赖于 YARN 的,其他的都是可以独立使用的

2、HDFS(Hadoop 分布式文件系统)

源自于 Google 的 GFS 论文,发表于 2003 年 10 月,HDFS 是 GFS 克隆版。

HDFS 是 Hadoop 体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。

HDFS 简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。

它提供了一次写入多次读取的机制,数据以块的形式,同时分布在集群不同物理机器上。

3、Mapreduce(分布式计算框架)

源自于 google 的 MapReduce 论文,发表于 2004 年 12 月,Hadoop MapReduce 是 google MapReduce 克隆版。

MapReduce 是一种分布式计算模型,用以进行大数据量的计算。它屏蔽了分布式计算框架细节,将计算抽象成 map 和 reduce 两部分,

其中 Map 对数据集上的独立元素进行指定的操作,生成键 - 值对形式中间结果。Reduce 则对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。

MapReduce 非常适合在大量计算机组成的分布式并行环境里进行数据处理。

4. HBASE(分布式列存数据库)

源自 Google 的 Bigtable 论文,发表于 2006 年 11 月,HBase 是 Google Bigtable 克隆版

HBase 是一个建立在 HDFS 之上,面向列的针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。

HBase 采用了 BigTable 的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。

HBase 提供了对大规模数据的随机、实时读写访问,同时,HBase 中保存的数据可以使用 MapReduce 来处理,它将数据存储和并行计算完美地结合在一起。

HBase: 山寨版的 BitTable, 列式存储,SQL 为行式存储。

列祖:把多个常用的列存放在一个中。

cell: 行和列的交叉位置,每个 cell 在存储时,可以多版本共存,之前的版本不会被删除,可以追溯老版本。

  可以指定保存几个版本。每个 cell 都是键值对,任何一个行多一个字段或者少一个字段,都是可以的,没有强 schema 约束

HBASE 是工作在 HDFS 之上,转化为 chunk 的

需要用到大数据块时,读取到 HBase 中,进行读取和修改,然后覆盖或者写入 HDFS

从而实现随机读写。HDFS 是不支持随机读写的

HBase 接口:

HBase 基于分布式实现:需要另起一套集群,严重依赖于 ZooKeeper 解决脑裂

HDFS 本身就有冗余功能,每个 chunk 存储为了多个副本

HBase 作为面向列的数据库运行在 HDFS 之上,HDFS 缺乏随即读写操作,HBase 正是为此而出现。

HBase 以 Google BigTable 为蓝本,以键值对的形式存储。项目的目标就是快速在主机内数十亿行数据中定位所需的数据并访问它。

HBase 是一个数据库,一个 NoSql 的数据库,像其他数据库一样提供随即读写功能,Hadoop 不能满足实时需要,HBase 正可以满足。

如果你需要实时访问一些数据,就把它存入 HBase。

你可以用 Hadoop 作为静态数据仓库,HBase 作为数据存储,放那些进行一些操作会改变的数据

5. Zookeeper(分布式协作服务)

源自 Google 的 Chubby 论文,发表于 2006 年 11 月,Zookeeper 是 Chubby 克隆版

解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。

Hadoop 的许多组件依赖于 Zookeeper,它运行在计算机集群上面,用于管理 Hadoop 操作。

6. HIVE(数据仓库)小蜜蜂

由 facebook 开源,最初用于解决海量结构化的日志数据统计问题。

Hive 定义了一种类似 SQL 的查询语言 (HQL), 将 SQL 转化为 MapReduce 任务在 Hadoop 上执行。通常用于离线分析。

HQL 用于运行存储在 Hadoop 上的查询语句,Hive 让不熟悉 MapReduce 开发人员也能编写数据查询语句,然后这些语句被翻译为 Hadoop 上面的 MapReduce 任务。

 Hive:帮忙转换成 MapReduce 任务 //MapReduce: 是 bat 程序,速度较慢

 HQ 与 SQl 语句接近,适合在离线下进行数据的操作,在真实的生产环境中进行实时的在线查询或操作很“慢”

Hive 在 Hadoop 中扮演数据仓库的角色。

你可以用 HiveQL 进行 select,join, 等等操作。

如果你有数据仓库的需求并且你擅长写 SQL 并且不想写 MapReduce jobs 就可以用 Hive 代替。

熟悉 SQL 的朋友可以使用 Hive 对离线的进行数据处理与分析工作

7.Pig(ad-hoc 脚本)

由 yahoo! 开源,设计动机是提供一种基于 MapReduce 的 ad-hoc(计算在 query 时发生) 数据分析工具

Pig 定义了一种数据流语言—Pig Latin,它是 MapReduce 编程的复杂性的抽象,Pig 平台包括运行环境和用于分析 Hadoop 数据集的脚本语言 (Pig Latin)。

其编译器将 Pig Latin 翻译成 MapReduce 程序序列将脚本转换为 MapReduce 任务在 Hadoop 上执行。通常用于进行离线分析。

Pig: 脚本编程语言接口 一种操作 hadoop 的轻量级脚本语言,最初又雅虎公司推出,不过现在正在走下坡路了。

不过个人推荐使用 Hive

8.Sqoop(数据 ETL/ 同步工具)

Sqoop 是 SQL-to-Hadoop 的缩写,主要用于传统数据库和 Hadoop 之前传输数据。数据的导入和导出本质上是 Mapreduce 程序,充分利用了 MR 的并行化和容错性。

Sqoop 利用数据库技术描述数据架构,用于在关系数据库、数据仓库和 Hadoop 之间转移数据。

9.Flume(日志收集工具)

Cloudera 开源的日志收集系统,具有分布式、高可靠、高容错、易于定制和扩展的特点。

它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在 Flume 中定制数据发送方,从而支持收集各种不同协议数据。

同时,Flume 数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume 还具有能够将日志写往各种数据目标(可定制)的能力。

总的来说,Flume 是一个可扩展、适合复杂环境的海量日志收集系统。当然也可以用于收集其他类型数据

10.Mahout(数据挖掘算法库)

Mahout 起源于 2008 年,最初是 Apache Lucent 的子项目,它在极短的时间内取得了长足的发展,现在是 Apache 的顶级项目。

Mahout 的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。

Mahout 现在已经包含了聚类、分类、推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。

除了算法,Mahout 还包含数据的输入 / 输出工具、与其他存储系统(如数据库、MongoDB 或 Cassandra)集成等数据挖掘支持架构。

11. Oozie(工作流调度器)

Oozie 是一个可扩展的工作体系,集成于 Hadoop 的堆栈,用于协调多个 MapReduce 作业的执行。它能够管理一个复杂的系统,基于外部事件来执行,外部事件包括数据的定时和数据的出现。

Oozie 工作流是放置在控制依赖 DAG(有向无环图 Direct Acyclic Graph)中的一组动作(例如,Hadoop 的 Map/Reduce 作业、Pig 作业等),其中指定了动作执行的顺序。

Oozie 使用 hPDL(一种 XML 流程定义语言)来描述这个图。

12. Yarn(分布式资源管理器)

YARN 是下一代 MapReduce,即 MRv2,是在第一代 MapReduce 基础上演变而来的,主要是为了解决原始 Hadoop 扩展性较差,不支持多计算框架而提出的。Yarn 是下一代 Hadoop 计算平台,yarn 是一个通用的运行时框架,用户可以编写自己的计算框架,在该运行环境中运行。用于自己编写的框架作为客户端的一个 lib,在运用提交作业时打包即可。该框架为提供了以下几个组件:

  – 资源管理:包括应用程序管理和机器资源管理

  – 资源双层调度

  – 容错性:各个组件均有考虑容错性

  – 扩展性:可扩展到上万个节点

13. Mesos(分布式资源管理器)

  Mesos 诞生于 UC Berkeley 的一个研究项目,现已成为 Apache 项目,当前有一些公司使用 Mesos 管理集群资源,比如 Twitter。

  与 yarn 类似,Mesos 是一个资源统一管理和调度的平台,同样支持比如 MR、steaming 等多种运算框架。

14. Tachyon(分布式内存文件系统)

Tachyon(/ tki:n/ 意为超光速粒子)是以内存为中心的分布式文件系统,拥有高性能和容错能力,

能够为集群框架(如 Spark、MapReduce)提供可靠的内存级速度的文件共享服务。

Tachyon 诞生于 UC Berkeley 的 AMPLab。

15. Tez(DAG 计算模型)

Tez 是 Apache 最新开源的支持 DAG 作业的计算框架,它直接源于 MapReduce 框架,核心思想是将 Map 和 Reduce 两个操作进一步拆分,

即 Map 被拆分成 Input、Processor、Sort、Merge 和 Output,Reduce 被拆分成 Input、Shuffle、Sort、Merge、Processor 和 Output 等,

这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的 DAG 作业。

目前 hive 支持 mr、tez 计算模型,tez 能完美二进制 mr 程序,提升运算性能。

16. Spark(内存 DAG 计算模型)

Spark 是一个 Apache 项目,它被标榜为“快如闪电的集群计算”。它拥有一个繁荣的开源社区,并且是目前最活跃的 Apache 项目。

最早 Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用的并行计算框架。

Spark 提供了一个更快、更通用的数据处理平台。和 Hadoop 相比,Spark 可以让你的程序在内存中运行时速度提升 100 倍,或者在磁盘上运行时速度提升 10 倍

17. Giraph(图计算模型)

Apache Giraph 是一个可伸缩的分布式迭代图处理系统,基于 Hadoop 平台,灵感来自 BSP (bulk synchronous parallel) 和 Google 的 Pregel。

最早出自雅虎。雅虎在开发 Giraph 时采用了 Google 工程师 2010 年发表的论文《Pregel:大规模图表处理系统》中的原理。后来,雅虎将 Giraph 捐赠给 Apache 软件基金会。

目前所有人都可以下载 Giraph,它已经成为 Apache 软件基金会的开源项目,并得到 Facebook 的支持,获得多方面的改进。

18. GraphX(图计算模型)

Spark GraphX 最先是伯克利 AMPLAB 的一个分布式图计算框架项目,目前整合在 spark 运行框架中,为其提供 BSP 大规模并行图计算能力。

19. MLib(机器学习库)

Spark MLlib 是一个机器学习库,它提供了各种各样的算法,这些算法用来在集群上针对分类、回归、聚类、协同过滤等。

20. Streaming(流计算模型)

Spark Streaming 支持对流数据的实时处理,以微批的方式对实时数据进行计算

21. Kafka(分布式消息队列)

Kafka 是 Linkedin 于 2010 年 12 月份开源的消息系统,它主要用于处理活跃的流式数据。

活跃的流式数据在 web 网站应用中非常常见,这些数据包括网站的 pv、用户访问了什么内容,搜索了什么内容等。

这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计处理。

22. Phoenix(hbase sql 接口)

Apache Phoenix 是 HBase 的 SQL 驱动,Phoenix 使得 Hbase 支持通过 JDBC 的方式进行访问,并将你的 SQL 查询转换成 Hbase 的扫描和相应的动作。

23. ranger(安全管理工具)

Apache ranger 是一个 hadoop 集群权限框架,提供操作、监控、管理复杂的数据权限,它提供一个集中的管理机制,管理基于 yarn 的 hadoop 生态圈的所有数据权限。

24. knox(hadoop 安全网关)

Apache knox 是一个访问 hadoop 集群的 restapi 网关,它为所有 rest 访问提供了一个简单的访问接口点,能完成 3A 认证(Authentication,Authorization,Auditing)和 SSO(单点登录)等

25. falcon(数据生命周期管理工具)

Apache Falcon 是一个面向 Hadoop 的、新的数据处理和管理平台,设计用于数据移动、数据管道协调、生命周期管理和数据发现。它使终端用户可以快速地将他们的数据及其相关的处理和管理任务“上载(onboard)”到 Hadoop 集群。

26.Ambari(安装部署配置管理工具)

Apache Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,是为了让 Hadoop 以及相关的大数据软件更容易使用的一个 web 工具。

注意:Hadoop 尽量不要运行在虚拟机上,因为对 IO 影响比较大

Hadoop Distribution:

  社区版:Apache Hadoop

    第三方发行版:   

 Cloudera:hadoop 源创始人:CDH //iso 镜像,最成型的

Hortonworks: 原有的 hadoop 人员:HDP //iso 镜像,非开源

Intel:IDH

MapR:

 Amazon Elastic Map Reduce(EMR)

  推荐使用 Apache hadoop 或者 CDH

以上是“Hadoop 模式架构是怎么样的”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-19发表,共计8270字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)