`
bearsorry
  • 浏览: 92918 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

解读HDFS

 
阅读更多

是蛮久木有写过关于hadoop的博客了额,虽然最近也看了一些关于linux的基础知识,但似乎把这个东西忘记了,其实时不时回顾一下以前的知识还是蛮有意思的,且行且忆!

 

我们Hadoop 主要由HDFS和MapReduce 引擎两部分组成。最底部是HDFS,它存储Hadoop 集群中所有存储节点上的文件。HDFS 的上一层是MapReduce 引擎,该引擎由JobTrackers 和TaskTrackers组成。

 

这篇博客就主要来讲讲HDFS吧~~~

 

HDFS是Hadoop Distributed File System的简称,既然是分布式文件系统,首先它必须是一个文件系统,那么在hadoop上面的文件系统会不会也像一般的文件系统一样由目录结构和一组文件构成呢?!分布式是不是就是将文件分成几部分分别存储在不同的机器上呢?!HDFS到底有什么优点值得这么小题大作呢?!......

好吧,让我们带着疑问一个个去探索吧!

一、HDFS基本概念

   1、数据块

HDFS默认的最基本的存储单位是64M的数据块,这个数据块可以理解和一般的文件里面的分块是一样的

   2、元数据节点和数据节点

元数据节点(namenode)用来管理文件系统的命名空间,它将所有的文件和文件夹的元数据保存在一个文件系统树中。

数据节点(datanode)就是用来存储数据文件的。

从元数据节点(secondarynamenode)不是我们所想象的元数据节点的备用节点,其实它主要的功能是主要功能就是周期性将元数据节点的命名空间镜像文件和修改日志合并,以防日志文件过大。

这里先来弄清楚这个三种节点的关系吧!其实元数据节点上存储的东西就相当于一般文件系统中的目录,也是有命名空间的映射文件以及修改的日志,只是分布式文件系统就将数据分布在各个机器上进行存储罢了,下面你看看这几张说明图应该就能明白了!

 

 

 

 

 

 

Namenode与secondary namenode之间的进行checkpoint的过程。

 

3、HDFS中的数据流

读文件

客户端(client)用FileSystem的open()函数打开文件,DistributedFileSystem用RPC调用元数据节点,得到文件的数据块信息。对于每一个数据块,元数据节点返回保存数据块的数据节点的地址。DistributedFileSystem返回FSDataInputStream给客户端,用来读取数据。客户端调用stream的read()函数开始读取数据。DFSInputStream连接保存此文件第一个数据块的最近的数据节点。Data从数据节点读到客户端(client),当此数据块读取完毕时,DFSInputStream关闭和此数据节点的连接,然后连接此文件下一个数据块的最近的数据节点。当客户端读取完毕数据的时候,调用FSDataInputStream的close函数。

整个过程就是如图所示:

 

 

 

写文件

客户端调用create()来创建文件,DistributedFileSystem用RPC调用元数据节点,在文件系统的命名空间中创建一个新的文件。元数据节点首先确定文件原来不存在,并且客户端有创建文件的权限,然后创建新文件。DistributedFileSystem返回DFSOutputStream,客户端用于写数据。客户端开始写入数据,DFSOutputStream将数据分成块,写入data queue。Data queue由Data Streamer读取,并通知元数据节点分配数据节点,用来存储数据块(每块默认复制3块)。分配的数据节点放在一个pipeline里。Data Streamer将数据块写入pipeline中的第一个数据节点。第一个数据节点将数据块发送给第二个数据节点。第二个数据节点将数据发送给第三个数据节点。DFSOutputStream为发出去的数据块保存了ack queue,等待pipeline中的数据节点告知数据已经写入成功。如果数据节点在写入的过程中失败:关闭pipeline,将ack queue中的数据块放入data queue的开始。

整个过程如图所示:



 

HDFS构架与设计

    Hadoop也是一个能够分布式处理大规模海量数据的软件框架,这一切都是在可靠、高效、可扩展的基础上。Hadoop的可靠性——因为Hadoop假设计算元素和存储会出现故障,因为它维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理。Hadoop的高效性——在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。Hadoop的可扩展——依赖于部署Hadoop软件框架计算集群的规模,Hadoop的运算是可扩展的,具有处理PB级数据的能力。

      Hadoop 主要由HDFS(Hadoop Distributed File System)和MapReduce 引擎两部分组成。最底部是HDFS,它存储Hadoop 集群中所有存储节点上的文件。HDFS 的上一层是MapReduce 引擎,该引擎由JobTrackers 和TaskTrackers组成

  HDFS 可以执行的操作有创建、删除、移动或重命名文件等,架构类似于传统的分级文件系统。需要注意的是,HDFS 的架构基于一组特定的节点而构建(参见图2),这是它自身的特点。HDFS 包括唯一的NameNode,它在HDFS 内部提供元数据服务;DataNode 为HDFS 提供存储块。由于NameNode 是唯一的,这也是HDFS 的一个弱点(单点失败)。一旦NameNode 故障,后果可想而知。

1、HDFS构架(如图所示)



 

2、HDFS的设计

1)错误检测和快速、自动的恢复是HDFS的核心架构目标。

2)比之关注数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。

3)HDFS应用对文件要求的是write-one-read-many访问模型

4)移动计算的代价比之移动数据的代价低。

 

3、文件系统的namespace

Namenode维护文件系统的namespace,一切对namespace和文件属性进行修改的都会被namenode记录下来,连文件副本的数目称为replication因子,这个也是由namenode记录的。

4、数据复制

Namenode全权管理block的复制,它周期性地从集群中的每个Datanode接收心跳包和一个Blockreport。心跳包的接收表示该Datanode节点正常工作,而Blockreport包括了该Datanode上所有的block组成的列表。HDFS采用一种称为rack-aware的策略来改进数据的可靠性、有效性和网络带宽的利用。完成对副本的存放。

5、文件系统元数据的持久化

Namenode在内存中保存着整个文件系统namespace和文件Blockmap的映像。这个关键的元数据设计得很紧凑,因而一个带有4G内存的 Namenode足够支撑海量的文件和目录。当Namenode启动时,它从硬盘中读取Editlog和FsImage,将所有Editlog中的事务作用(apply)在内存中的FsImage ,并将这个新版本的FsImage从内存中flush到硬盘上,然后再truncate这个旧的Editlog,因为这个旧的Editlog的事务都已经作用在FsImage上了。这个过程称为checkpoint。在当前实现中,checkpoint只发生在Namenode启动时,在不久的将来我们将实现支持周期性的checkpoint。

6、通信协议

所有的HDFS通讯协议都是构建在TCP/IP协议上。客户端通过一个可配置的端口连接到Namenode,通过ClientProtocol与 Namenode交互。而Datanode是使用DatanodeProtocol与Namenode交互。从ClientProtocol和 Datanodeprotocol抽象出一个远程调用(RPC),在设计上,Namenode不会主动发起RPC,而是是响应来自客户端和 Datanode 的RPC请求。

 

   HDFS不是这么简单就能说清楚的,在以后的博客中我还会继续研究hadoop的分布式文件系统,包括HDFS的源码分析等,现由于时间有限,暂时只做了以上一些简单的介绍吧,希望对大家由此对HDFS有一定的了解!

<!--EndFragment-->
  • 大小: 5.1 KB
  • 大小: 3.8 KB
  • 大小: 29 KB
  • 大小: 16.7 KB
  • 大小: 15.6 KB
  • 大小: 23.1 KB
分享到:
评论

相关推荐

    hadoop-hdfs-study:解读hadoop hdfs

    hadoop-hdfs-研究

    大数据与互联网经济解读.pptx

    HDFS为海量的数据提供了存储; MapReduce则为海量的数据提供了并行计算,从而大大提高了计算效率; Spark、Storm、Impala等各种各样的技术进入人们的视野。 海量数据从原始数据源到产生价值,期间会经过存储、清洗...

    Hadoop与大数据-一个数据库学者的解读

    Hadoop2.x由HDFS、MapReduce、和YARN三个分支构成 1、HDFS: NNFederation 、HA 多了这两个部分 2、MapReduce:运行在YARN上的MR 3、YARN:是对应的资源管理系统

    MapReduce计算模型详讲(结合源码深入解读)

    MapReduce计算模型详讲(结合源码深入解读)

    细细品味架构·Hadoop 2015技术发展与2016发展趋势(第10期)

    1.2.1 HDFS 1.2.2 YARN 1.2.3 2016 年发展趋势 1.2.4 现场答疑(Q&A) 1.3 内容之二 1.3.1 新API 接口 1.3.2 多个 Region 副本 1.3.3 Family 粒度的 Flush 1.3.4 RPC 读写队列分离 1.3.5 在线调整配置 1.3.6 ...

    Hadoop 培训笔记 及源码

    Hadoop架构分析之集群结构分析,Hadoop架构分析之HDFS架构分析,Hadoop架构分析之NN和DN原生文档解读,Hadoop MapReduce原理之流程图.Hadoop MapReduce原理之核心类Job和ResourceManager解读.Hadoop MapReduce原理之...

    IT十八掌_Hadoop阶段PPT(原理图与要点解析)

    Hadoop架构分析之集群结构分析,Hadoop架构分析之HDFS架构分析,Hadoop架构分析之NN和DN原生文档解读,Hadoop MapReduce原理之流程图.Hadoop MapReduce原理之核心类Job和ResourceManager解读.Hadoop MapReduce原理之...

    hadoop笔记

    Hadoop架构分析之集群结构分析,Hadoop架构分析之HDFS架构分析,Hadoop架构分析之NN和DN原生文档解读,Hadoop MapReduce原理之流程图.Hadoop MapReduce原理之核心类Job和ResourceManager解读.Hadoop MapReduce原理之...

    IT十八掌_Hadoop阶段学习笔记(课堂笔记与源码流程)

    Hadoop架构分析之集群结构分析,Hadoop架构分析之HDFS架构分析,Hadoop架构分析之NN和DN原生文档解读,Hadoop MapReduce原理之流程图.Hadoop MapReduce原理之核心类Job和ResourceManager解读.Hadoop MapReduce原理之...

    徐老师大数据 Hadoop架构完全分析课程 Hadoop入门学习视频教程

    023.Hadoop架构分析之NN和DN原生文档解读.mp4 024.Hadoop架构分析之启动脚本分析(集群id的兼容处理与start-allcmd解析与批处理命令讲解).mp4 025.Hadoop架构分析之启动脚本分析(start-dfs.cmd与hadoop-conf.cmd)...

    word源码java-mycat-src-1.6.1-RELEASE:源码解读,在代码行间里简洁明白的注释

    HDFS 大数据的 SQL Server。 并且作为一种新型的现代企业数据库产品,MyCAT结合了传统数据库和新型分布式数据仓库。 总之,MyCAT 是一个全新的数据库中间件。 Mycat 的目标是将当前的单机数据库和应用以低成本平滑...

    kafkajava源码-bigdatalearnshare:专注于大数据领域常用技术,如Spark、Hadoop、Hive、HBase、Kaf

    专注于大数据领域常用技术,如Spark、Hadoop、Hive、HBase、Kafka、Zookeeper等的应用、实战技巧、源码解读,语言主要以Java和Scala为主 目录 Java Scala Spark MapReduce HDFS Hive Yarn [不可不知的资源管理调度器...

    Mapreduce 分享

    请结合本资源的《MapReduce计算模型详讲(结合源码深入解读)》一起研究,该ppt 与该文档是一起的

    《程序员》杂志2012年第7期

    《程序员》封面报道:智能算法 智能应用每时每刻都在影响着我们的工作和生活,...(1)云计算基础架构:没有最好,只有最合适——IBM韩忠恒带你解读IDC《中国云计算基础架构建设指南》 (2)云计算基础架构建设一席谈

    大数据架构师的岗位职责.docx

    3、精通常用消息中间件的使用,例如kafka/RocketMQ/Apache Pulsar,有解读相关源码者优先; 4、掌握hadoop、spark生态体系相关产品的使用,掌握MapReduce编程或Spark编程; 5、了解传统数据仓库理论及相关ETL工具,...

Global site tag (gtag.js) - Google Analytics