1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 大数据晋级之路(4)Hadoop生态系统体系架构及基本概念

大数据晋级之路(4)Hadoop生态系统体系架构及基本概念

时间:2023-01-03 23:54:18

相关推荐

大数据晋级之路(4)Hadoop生态系统体系架构及基本概念

一、基本概念

机架:HDFS集群,由分布在多个机架上的大量DataNode组成,不同机架之间节点通过交换机通信,HDFS通过机架感知策略,使NameNode能够确定每个DataNode所属的机架ID,使用副本存放策略,来改进数据的可靠性、可用性和网络带宽的利用率。

数据块(block):HDFS最基本的存储单元,默认为64M,用户可以自行设置大小。

元数据:指HDFS文件系统中,文件和目录的属性信息。HDFS实现时,采用了 镜像文件(Fsimage) + 日志文件(EditLog)的备份机制。文件的镜像文件中内容包括:修改时间、访问时间、数据块大小、组成文件的数据块的存储位置信息。目录的镜像文件内容包括:修改时间、访问控制权限等信息。日志文件记录的是:HDFS的更新操作。

NameNode启动的时候,会将镜像文件和日志文件的内容在内存中合并。把内存中的元数据更新到最新状态。

用户数据:HDFS存储的大部分都是用户数据,以数据块的形式存放在DataNode上。

Hadoop是一个能够对大量数据进行分布式处理的软件框架,以一种可靠、高效、可伸缩的方式进行数据处理,其有许多元素构成,以下是其组成元素:

Hadoop Common:Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。

HDFS:分布式文件系统,提供高吞吐量的应用程序数据访问,对外部客户机而言,HDFS 就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构是基于一组特定的节点构建的(参见图 1),这是由它自身的特点决定的。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 的一个缺点(单点失败)。

存储在 HDFS 中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。这与传统的 RAID 架构大不相同。块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。HDFS 内部的所有通信都基于标准的 TCP/IP 协议。

MapReduce:一个分布式海量数据处理的软件框架集计算集群。

Avro :doug cutting主持的RPC项目,主要负责数据的序列化。有点类似Google的protobuf和Facebook的thrift。avro用来做以后hadoop的RPC,使hadoop的RPC模块通信速度更快、数据结构更紧凑。

Hive :类似CloudBase,也是基于hadoop分布式计算平台上的提供data warehouse的sql功能的一套软件。使得存储在hadoop里面的海量数据的汇总,即席查询简单化。hive提供了一套QL的查询语言,以sql为基础,使用起来很方便。

HBase :基于Hadoop Distributed File System,是一个开源的,基于列存储模型的可扩展的分布式数据库,支持大型表的存储结构化数据。

Pig :是一个并行计算的高级的数据流语言和执行框架 ,SQL-like语言,是在MapReduce上构建的一种高级查询语言,把一些运算编译进MapReduce模型的Map和Reduce中,并且用户可以定义自己的功能。

ZooKeeper:Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

Chukwa :一个管理大型分布式系统的数据采集系统 由yahoo贡献。

Cassandra:无单点故障的可扩展的多主数据库

Mahout :一个可扩展的机器学习和数据挖掘库

在HDFS中,NameNode 和 DataNode之间使用TCP协议进行通信。DataNode每3s向NameNode发送一个心跳。每10次心跳后,向NameNode发送一个数据块报告自己的信息,通过这些信息,NameNode能够重建元数据,并确保每个数据块有足够的副本。

二、Hadoop2.x体系架构

后台进程:NameNode(名称节点)

1,他是HDFS的守护程序,是HDFS的核心程序,它起到这个分布式文件系统的总控的作用。

2,记录数据是如何分割成数据块的,以及这些数据块被存储在哪些节点上(分布式)。

3,对内存和IO进行集中的管理。当用户跟整个hadoop的集群打交道的时候,一般首先会访问NameNode来获得他要的文件的分布状态的信息,也就是说先找出需要的文件是在哪些数据节点里面,然后用户再跟数据节点打交道,把数据拿到手。所以NameNode在整个Hadoop中起到一个核心的功能。

4,但是,Hadoop一直以来都是把NameNode作为一个单点,也就是整个hadoop中只有一个 NameNode服务器,所以一旦NameNode节点发生故障,将使整个集群崩溃。

后台进程:Secondary NameNode(辅助名称节点)

主要作为NameNode的后备,它可以将NameNode中的元数据信息再多保存一份副本,也就是说NameNode会不断跟Secondary NameNode通讯,不断把它里面的数据往辅助名称节点这边放。一旦NameNode崩溃了,我们可以用Secondary NameNode去代替它。保护集群的运行。但是现在还不能实现二者之间的自动切换,也就是说,现在不能在NameNode倒下以后,自动将Secondary NameNode启动起来,必须手工做。所以在hadoop中,NameNode还是一个事实上的单点。

1,监控HDFS状态的辅助后台程序。

2,每个集群都有一个。

3,与NameNode进行通讯,定期保存HDFS元数据快照。

4,当NameNode故障,可以作为备用NameNode使用。

后台进程:DataNode(数据节点)

运行在各个子节点里面。一般放在从服务器上,负责文件系统的具体的数据块的读写。

1,每个服务器都运行一个。

2,负责把HDFS数据块读写到本地文件系统。

总结

【Active Namenode】:主 Master(只有一个),管理 HDFS 的名称空间,管理数据块映射信息;配置副本策略;处理客户端读写请求

【Secondary NameNode】:NameNode 的热备;定期合并 fsimage 和 fsedits,推送给 NameNode;当 Active NameNode 出现故障时,快速切换为新的 Active NameNode。

【Datanode】:Slave(有多个);存储实际的数据块;执行数据块读 / 写

【Client】:与 NameNode 交互,获取文件位置信息;与 DataNode 交互,读取或者写入数据;管理 HDFS、访问 HDFS。

三、HDFS架构

四、MapReduce架构

MapReduce是一种编程模型,用于大规模数据集的并行运算。Map(映射)和Reduce(化简),采用分而治之思想,先把任务分发到集群多个节点上,并行计算,然后再把计算结果合并,从而得到最终计算结果。多节点计算,所涉及的任务调度、负载均衡、容错处理等,都由MapReduce框架完成,不需要编程人员关心这些内容。

用户提交任务给JobTracer,JobTracer把对应的用户程序中的Map操作和Reduce操作映射至TaskTracer节点中;输入模块负责把输入数据分成小数据块,然后把它们传给Map节点;Map节点得到每一个key/value对,处理后产生一个或多个key/value对,然后写入文件;Reduce节点获取临时文件中的数据,对带有相同key的数据进行迭代计算,然后把终结果写入文件。

如果这样解释还是太抽象,可以通过下面一个具体的处理过程来理解:(WordCount实例)

Hadoop的核心是MapReduce,而MapReduce的核心又在于map和reduce函数。它们是交给用户实现的,这两个函数定义了任务本身。

map函数:接受一个键值对(key-value pair)(例如上图中的Splitting结果),产生一组中间键值对(例如上图中Mapping后的结果)。Map/Reduce框架会将map函数产生的中间键值对里键相同的值传递给一个reduce函数。

reduce函数:接受一个键,以及相关的一组值(例如上图中Shuffling后的结果),将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)(例如上图中Reduce后的结果)

但是,Map/Reduce并不是万能的,适用于Map/Reduce计算有先提条件:

(1)待处理的数据集可以分解成许多小的数据集;

(2)而且每一个小数据集都可以完全并行地进行处理;

若不满足以上两条中的任意一条,则不适合适用Map/Reduce模式。

五、Yarn架构

六、大数据平台架构

七、HDFS读写数据流程

写数据

文件写入:

Client向NameNode发起文件写入的请求NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。Client将文件划分为多个文件块,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

读数据

文件读取:

Client向NameNode发起文件读取的请求NameNode返回文件存储的DataNode的信息。Client读取文件信息。

本文参考:

/jager/p/6522172.html/zhangwuji/p/7594725.html/zl834205311/article/details/80334346/u013063153/article/details/53114678/edisonchou/p/3485135.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。