a) HDFS是通过读取主节点元数据信息,通过元数据信息寻找到数据块所在的位置,从而再次去子节点位置读取文件内容,这样子能够达到更高效率的写入和读取效率

b) HDFS能够很好的将数据负载均衡分布在集群的各个机器中,因此理论上,无论多大的数据都能完整的存放。

c) HDFS能够保证数据的可靠性,其主动备份3份或以上的数据,并且能够实时监测每一个节点的运行情况,当某一个子节点宕机后能够很快的察觉并进行数据迁移和从新备份。

d) HDFS设计之初就是作为分布式存储,而MapReduce设计初衷也是作为分布式计算,所以HDFS和MapReduce能够很好的结合在一起,完成分布式存储和分布式计算的任务。

e) HDFS有一个很实用的webUI界面负责监控这个HDFS情况。

f) HDFS能够很好的和其它框架相连接[19-22]。比如亚马逊的Amazon S3分布式文件系统,比如传统型数据库Oracle,Mysql都能把数据安全迁移到HDFS上。

理解HDFS存储机制,首先要理解HDFS块的概念,HDFS存储大文件的时候首先是按字节进行切分,每一个块默认切分大小是128MB,如此,一个大文件就会被切分为一个个128MB的块文件,如果文件小于128MB,这个文件是不会被切分的,而是作为一个单独文件存储,而且这个文件不会占据整个块的空间。

在HDFS文件系统中,使用文件块能够解决很多问题,最重要的是,一个大数据文件被分块后能够存放于任何小于块大小的磁盘空间中,而且分块后能够很好的对块文件做备份,提高分布式文件系统的可靠性和容错性。

如图2.1是HDFS的整体架构,HDFS文件系统中负责存储文件的节点都是datanode,负责顶层操作控制这个HDFS运行的节点是Namenode;datanode和namenode是以工作者-管理者的模式运行的,简单的说明,就是一个namenode管理多个datanode,namenode负责监控子节点的运行情况,并随时做出调整。

HDFS整体架构中,Namenode节点负责管理元数据信息,存储了子节点中所有信息的元数据信息,包括HDFS文件系统树结构信息,及树结构下的所有块文件的信息(存储目录,块大小,存储地址,备份信息等),上传新的文件时候,namenode负责分配新的存储地址,并调用子节点datanode进行存储,client下载的时候首先访问namenode寻找所下载文件的元数据信息,然后根据namenode反馈的元数据信息到相应的子节点进行下载,以完成client的读写请求。

 

图 2.1 HDFS整体架构

2.2 分布式计算MapReduce

Hadoop的另外一个底层架构是MapReduce。MapReduce是作为一个计算框架对存放在HBase,HDFS,Hive表中的数据进行分布式计算。开发MapReduce程序不需要深入理解hadoop的底层框架,只需要按开发要求实现mapper函数和reduce函数,mapper函数和reduce函数均是类似于map的<key,value>格式进行传输的。其中map输出的是<k2,v2>,reduce读取map输出的值。然后输出的是<k3,v3>。一个MapReduce的工作流程如图2.2所示。

MapReduce程序详细的执行过程如下所示[19-21]:

第一步:map任务处理

(1)  读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、  value对(一行内容解析成一个key-value)。每一个键值对调用一次map函数。一千行数据调用一千次map函数。

(2)  编写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。

(3)  对输出的key、value进行分区partition。

(4)  对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中。

上一篇:java+mysql网上图书销售系统的设计与实现
下一篇:asp.net培训中心考试系统开发与建设

基于Apriori算法的电影推荐

PHP+IOS的会议管理系统的设计+ER图

数据挖掘在电子商务中的应用

数据挖掘的主题标绘数据获取技术与实现

基于PageRank算法的网络数据分析

基于神经网络的验证码识别算法

基于网络的通用试题库系...

我国风险投资的发展现状问题及对策分析

老年2型糖尿病患者运动疗...

LiMn1-xFexPO4正极材料合成及充放电性能研究

互联网教育”变革路径研究进展【7972字】

网络语言“XX体”研究

ASP.net+sqlserver企业设备管理系统设计与开发

新課改下小學语文洧效阅...

安康汉江网讯

张洁小说《无字》中的女性意识

麦秸秆还田和沼液灌溉对...