首页 > 编程知识 正文

hadoop生态架构,hadoop生态圈分类

时间:2023-05-05 18:41:13 阅读:56989 作者:4480

大数据Hadoop生态圈-组件介绍Hadoop是目前应用最广泛的分布式大数据处理框架,具有可靠性、效率、可伸缩性等特点。

Hadoop的核心组件是HDFS、MapReduce。 随着处理任务的不同,各种组件层出不穷,丰富了Hadoop生态圈。 现在生态圈的结构大致如图所示。

根据服务的对象和层次结构,可以分为数据源层、数据传输层、数据存储层、资源管理层、数据计算层、任务调度层和业务模型层。 接下来,我们将简要介绍Hadoop生态圈中出现的相关组件。

1、HDFS (分布式文件系统) HDFS是整个hadoop系统的基础,负责数据的存储和管理。 HDFS具有容错能力强的特点,旨在部署在廉价的(低成本)硬件上。 它还提供了高吞吐量(high throughput )以访问APP应用程序中的数据,非常适合具有大数据集(large data set )的APP应用程序。

客户端:在隔离文件和访问HDFS时,首先与NameNode交互,获取目标文件的位置信息,然后与DataNode交互,读写数据

NameNode:master节点,每个HDFS群集一个,管理HDFS命名空间和块映射信息,配置相关拷贝信息,处理客户端请求。

数据节点:从属节点。 保存实际数据,并向NameNode报告状态信息。 默认文件备份在三个不同的DataNode中,以提供高可靠性和容错能力。

辅助命名:辅助命名,实现高可靠性,定期集成fsimage和fsedits,推送至命名; 紧急情况下辅助NameNode进行恢复,但不是NameNode的热备份。

Hadoop 2为HDFS引入了两个重要的新功能 ——Federation和高可用(HA):

在Federation中,集群中出现多个NameNode,它们相互独立,并且不需要相互协调,各自可以分工管理自己的区域。 DataNode用作通用的块存储设备。 每个DataNode向群集中的所有NameNode注册,发送心跳报告,然后运行所有NameNode命令。

HDFS的高可用性消除了Hadoop 1中存在的单点故障,NameNode故障导致群集关闭。 HDFS的高可用性提供了故障切换功能,备用节点可以从出现故障的主NameNode接管工作,从而实现自动化。

2、MapReduce (分布式计算框架) MapReduce是一种基于磁盘的分布式并行批处理计算模型,用于处理大数据量的计算。 其中,Map根据数据集上的独立元素执行指定操作,生成键-值对格式的中间,Reduce对中间结果中同一键的所有值进行规约化,得到最终结果。Jobtracker:master节点,仅一个,管理所有工作、任务/工作监视、错误处理等,将任务分解为一系列任务,分配给Tasktracker。

Tacktracker:slave节点,运行映射任务和完成任务; 与Jobtracker交互并报告任务状态。

Map task:分析每个数据记录,将其传递给用户创建的map (传递给函数运行,并将输出结果写入本地磁盘;对于map—only作业,直接写入HDFS )。

从3358www.Sina.com/map深入运行的结果是,远程读取输入数据,对数据进行排序,并将数据包传递给用户创建的Reduce ()函数后执行。

3、分布式计算框架(Spark ) Spark是目前最流行的开源大数据内存计算框架,可以基于Hadoop中存储的大数据进行计算。 与MapReduce不同,作业中间输出结果可以保存在内存中,因此不需要读写HDFS。 因此,Spark适用于需要迭代的MapReduce算法,如数据挖掘和机器学习。 Spark将数据抽象为灵活的分布式数据集(RDD ),内部提供了大量库,包括Spark Core、Spark SQL、Spark Streaming、MLlib和GraphX。 开发者可以在同一APP应用程序中无缝组合使用这些库。 在33558www.Sina.com/Standalone模式下,它是主节点,控制整个群集并监视工作器。 在YARN模式下为资源管理器

Reduce task:负责从节点、计算节点的控制、执行程序或驱动程序的启动。

运行http://www.Sina.com/APP的main ()函数

Cluster Manager:致动器是针对某个APP在工作节点上运行的过程

包括3358www.Sina.com/spark的基本功能; 特别是定义RDD在API、操作和两者中的行为。 其他Spark库构建在RDD和Spark Core上

Worker节点:

>Spark SQL: 提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作。

Spark Streaming: 对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据,通过短时批处理实现的伪流处理。

MLlib: 一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。

GraphX: 控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作

4、Flink(分布式计算框架)

Flink是一个基于内存的分布式并行处理框架,类似于Spark,但在部分设计思想有较大出入。对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。

Spark中,RDD在运行时是表现为Java Object,而Flink主要表现为logical plan。所以在Flink中使用的类Dataframe api是被作为第一优先级来优化的。但是相对来说在spark RDD中就没有了这块的优化了。

Spark中,对于批处理有RDD,对于流式有DStream,不过内部实际还是RDD抽象;在Flink中,对于批处理有DataSet,对于流式我们有DataStreams,但是是同一个公用的引擎之上两个独立的抽象,并且Spark是伪流处理,而Flink是真流处理。

5、Yarn/Mesos(分布式资源管理器)

YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基础上演变而来的,主要是为了解决原始Hadoop扩展性较差,不支持多计算框架而提出的。

Mesos诞生于UC Berkeley的一个研究项目,现已成为Apache项目,当前有一些公司使用Mesos管理集群资源,比如Twitter。与yarn类似,Mesos是一个资源统一管理和调度的平台,同样支持比如MR、steaming等多种运算框架。

6、Zookeeper(分布式协作服务) Zookeeper是Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、 分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。 7、Sqoop(数据同步工具) Sqoop是一款开源的工具,主要用于在Hadoop、Hive与传统的数据库(MySql)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中Sqoop是SQL-to-Hadoop的缩写。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。Sqoop利用数据库技术描述数据架构,用于在关系数据库、数据仓库和Hadoop之间转移数据。 8、Hive/Impala(基于Hadoop的数据仓库)

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。

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

Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C ++和Java编写的开源软件。 与Apache Hive不同,Impala不基于MapReduce算法。 它实现了一个基于守护进程的分布式架构,它负责在同一台机器上运行的查询执行的所有方面。因此执行效率高于Apache Hive。

9、HBase(分布式列存储数据库)

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

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

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

10、Flume(日志收集工具) Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制各类数据发送方,并写到各种数据接受方(可定制)的能力,从而支持收集各种不同协议数据。Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。Flume具有能够将日志写往各种数据目标(可定制)的能力。Flume以Agent为最小的独立运行单位,一个Agent就是一个JVM。单个Agent由Source、Sink和Channel三大组件构成

Source: 从客户端收集数据,并传递给Channel。

Channel: 缓存区,将Source传输的数据暂时存放。

Sink: 从Channel收集数据,并写入到指定地址。

Event: 日志文件、avro对象等源文件。

11、Kafka(分布式消息队列) Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。实现了主题、分区及其队列模式以及生产者、消费者架构模式。生产者组件和消费者组件均可以连接到KafKa集群,而KafKa被认为是组件通信之间所使用的一种消息中间件。KafKa内部氛围很多Topic(一种高度抽象的数据结构),每个Topic又被分为很多分区(partition),每个分区中的数据按队列模式进行编号存储。被编号的日志数据称为此日志数据块在队列中的偏移量(offest),偏移量越大的数据块越新,即越靠近当前时间。生产环境中的最佳实践架构是Flume+KafKa+Spark Streaming。

特征:

通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。持通过Kafka服务器和消费机集群来分区消息。支持Hadoop并行数据加载。 12、Oozie(工作流调度器)

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

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

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

13、Storm(分布式实时大数据处理) Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop。用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。

特征:

适用场景广泛: storm可以实时处理消息和更新DB,对一个数据量进行持续的查询并返回客户端(持续计算),对一个耗资源的查询作实时并行化的处理(分布式方法调用,即DRPC)。

可伸缩性高: Storm的可伸缩性可以让storm每秒可以处理的消息量达到很高。扩展一个实时计算任务,你所需要做的就是加机器并且提高这个计算任务的并行度 。Storm使用ZooKeeper来协调集群内的各种配置使得Storm的集群可以很容易的扩展。

保证无数据丢失: 实时系统必须保证所有的数据被成功的处理。

异常健壮: storm集群非常容易管理,轮流重启节点不影响应用。

容错性好:在消息处理过程中出现异常时storm会进行重试

语言无关性: Storm的topology和消息处理组件(Bolt)可以用任何语言来定义。

14、R语言(统计分析软件) R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。 15、Mahout(算法库) Apache Mahout是个可扩展的机器学习和数据挖掘库。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘,可以有效地扩展到Hadoop集群。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。