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

版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/u011095110/article/details/83865929

一、基本概念

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

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

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

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

用户数据:HDFS存储的大部分都是用户数据,以数据块的形式存放在DataNode上。
Hadoop是一个能够对大量数据进行分布式处理的软件框架,以一种可靠、高效、可伸缩的方式进行数据处理,其有许多元素构成,以下是其组成元素:

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

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

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

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

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

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

    扫描二维码关注公众号,回复: 4112262 查看本文章
  4. HBase :基于Hadoop Distributed File System,是一个开源的,基于列存储模型的可扩展的分布式数据库,支持大型表的存储结构化数据。

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

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

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

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

  9. 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数据块读写到本地文件系统。

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

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

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

  4. 【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读写数据流程

写数据在这里插入图片描述

文件写入:

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

读数据

在这里插入图片描述
文件读取:

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

本文参考:

  1. https://www.cnblogs.com/jager/p/6522172.html
  2. https://www.cnblogs.com/zhangwuji/p/7594725.html
  3. https://blog.csdn.net/zl834205311/article/details/80334346
  4. https://blog.csdn.net/u013063153/article/details/53114678
  5. http://www.cnblogs.com/edisonchou/p/3485135.html

猜你喜欢

转载自blog.csdn.net/u011095110/article/details/83865929