Haddop:HDFS

HDFS体系结构

HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据。

HDFS允许用户以文件的形式存储数据。从内部来看,文件被分成若干个数据块,而且这若干个数据块存放在一组DataNode上。NameNode执行文件系统的命名空间操作,比如打开关闭、重命名文件或目录等,它也负责数据块到具体DataNode的映射。DataNode负责处理文件系统客户端的文件读写请求,并在NameNode的统一调度下进行数据块的创建、删除和复制工作。
HDFS体系结构

HDFS存储

数据块(Block)
  • HDFS分布式文件系统中的文件在进行存储时,会被分成一个个数据块,块的默认大小为64M,它是文件存储处理的逻辑单元。
  • HDFS作为一个分布式文件系统,设计用来处理大文件的,使用抽象的块,可以存储任意大的文件而不受网络中单节点磁盘的限制,同时数据块作为操作的单元可以简化存储子系统,初次之外,块更有利于分布式文件系统中复制容错的实现。
  • 在HDFS中,为了处理节点故障,默认将文件副本数设定为3份,分别存储在集群的不同节点上。当一个快损坏时,系统会通过NameNode获取源数据系统,在另一个机器上读取一个副本并进行存储。
  • 副本冗余量落通过文件进行配置,在某些应用中可以设置较高的副本以提高集群的吞吐量。
HDFS存储

HDFS中的文件读取

  • 客户端联系NameNode,得到所有数据块信息,以及数据块对应的所有数据服务器的位置信息
  • 尝试从某个数据块对应的一组数据服务器中选出一个,进行连接
  • 数据被一个包一个包发送回客户端,等到整个数据块的数据都被读取完了,就会断开此链接,尝试连接下一个数据块对应的数据服务器,整个流程,依次如此反复,直到所有想读的都读取完了为止

HDFS中的文件写入

  • 客户端通过DistributedFileSystem创建一个文件
  • NameNode验证新的文件不存在文件系统中,并且保证请求客户端拥有创建文件的权限
  • 客户端写入数据时,FSDataOutputStream将文件分割成包,然后放入一个内部队列,我们成为“数据队列”。DataStreamer会将这些小的文件包放入数据流中,并从Namenode中获取合适的Datanode来存放副本,并将文件包推送至各个DataNode中。
  • DFSOutputStream保存一个包的内部队列,等待DataNode的返回信息,只有所有DataNode都返回写入成功时,从队列中删除

HDFS总结

Hadoop适合做什么

存储并管理PB级数据
处理非结构化数据
注重数据处理的吞吐量(latency不敏感)
应用模式为:write-once-read-many存取模式

Hadoop不适合做什么

存储小文件 (不建议使用)
大量的随机读 (不建议使用)
需要对文件的修改 (不支持)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 原文 介绍 Hadoop分布式文件系统( HDFS )是一种分布式文件系统,设计用于在商品硬件上运行。它与现有...
    公子小水阅读 1,148评论 0 0
  • 翻译: http://hadoop.apache.org/docs/stable/hadoop-project-d...
    金刚_30bf阅读 816评论 0 2
  • Apache Hadoop项目为高可用、可扩展、分布式计算开发开源软件。Apache Hadoop软件库是一个平台...
    Kooola大数据阅读 711评论 2 6
  • 1.在info.plist中添加图一中的字段 2.在AppDelegate.m中根据进入app后传入的字段来进行相...
    冬日无恙阅读 156评论 0 0
  • 我一起床就开始写作,写着写着,我就闻到了一股香味儿,我过去一看,原来爸爸和妈妈在炸藕夹。他们做着做着藕夹片就全没了...
    薛阔阅读 219评论 0 0