博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDFS学习
阅读量:5938 次
发布时间:2019-06-19

本文共 1377 字,大约阅读时间需要 4 分钟。

hot3.png

    HDFS是Hadoop的分布式文件系统,全称为Hadoop DistributedFilesystem,是Hadoop的核心内容。HDFS的设计思想来自于Google的GFS,是GFS其开源实现。

    学习HDFS先要知道其设计的目地。HDFS的设计目标是以流式数据访问来存储超大文件,系统运在商用硬件集群上,总的来说,其设计主要有以下几方面的考虑:(1)存储超大文件,存储的文件为TB,甚至PB级。(2)流式数据读取,一次写入多次读取,是最高效的访问模式。系统主要考虑的是大规模流式读取的效率,HDFS只允许对一个一打开的文件顺序写入,还可以在现有文件的末尾追加数据,他不支持在文件末尾以为的其他位置追加数据。所以已经能够写入的文件就不能再修改,只能删除后重新写入。(3)商用硬件,hadoop设计运行在普通的廉价的商用PC上,组件失效被认为是常态时事件,所以系统必须集成持续的监控、错误侦测、灾难冗余及自动回复机制。(4)数据访问的延迟高,因为HDFS是设计用于大吞吐量数据的,这是以一定的延时为代价的,HDFS是单Master的,所有的文件请求都要经过它,请求较多时延迟增大。(5)文件数受限,NameNode将文件系统的元数据存储在内存中,因此文件系统所能存储的文件总数受限于NameNode的内存容量。还有一个问题就是,因为Map task的数量是由splits来决定的,所以用MR处理大量的小文件时,就会产生过多的Maptask,线程管理开销将会增加作业时间。举个例子,处理10000M的文件,若每个split1M,那就会有10000Maptasks,会有很大的线程开销;若每个split100M,则只有100Maptasks,每个Maptask将会有更多的事情做,而线程的管理开销也将减小很多。(6)不支持多用户写入,也不支持任意修改文件。

    下面介绍HDFS的几个概念:

    (1)数据块:HDFS的块大小默认为64MB。设置这么的数据块,可以最小化寻址开销。

    (2)NameNode:管理文件系统的命名空间,它维护着文件系统树及整棵树内所有的文件和目录,这些信息以两个文件形式永久保存在本地磁盘上,命名空间镜像文件和编辑日志文件。NameNode还记录着每个文件中各个块所在的数据节点信息,但是它不保存块的永久位置信息,这些信息会在系统启动时由数据节点重建。

    (3)DateNode:文件系统的工作点。根据需要存储或是检索数据块。

    单一的NameNode简化了系统的设计,但是这也是系统的瓶颈,没NameNode,系统将无法进行使用,因此对于NameNode的容错非常重要。Hadoop为NameNode容错提供了两种机制,一是备份那些组成文件系统元数据持久状态的文件,将持久状态写入磁盘的同时写入一个远程挂载的网络文件系统。二是运行一个辅助NameNode。要减少对于NameNode的读写等操作,防止NameNode成为系统的瓶颈。

    HDFS的数据流,客户端与HDFS的数据交互过程:

    客户端读取HDFS中的数据过程:

    

    客户端写入数据的过程:

    

    详细过程这里不再多做叙述了。有兴趣的可以自己查阅资料,《Hadoop权威指南》一书有详细描述。

    

转载于:https://my.oschina.net/u/872123/blog/119748

你可能感兴趣的文章
一個典型僵尸網絡淺析
查看>>
vmware克隆Centos6.4虚拟机网卡无法启动问题
查看>>
dba学习
查看>>
asterisk配置
查看>>
GA操作步骤和技巧(二)——用户行为分析
查看>>
shell中while循环里使用ssh的注意事项
查看>>
SHELL获取计算机外网ip的几种写法
查看>>
博客正在搬迁中
查看>>
触发器与存储过程的区别
查看>>
我的友情链接
查看>>
centos搭建supervisor
查看>>
linux日志分割
查看>>
Samba再报安全漏洞
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Spring学习资料之 依赖注入(一)
查看>>
安装win7提示安装程序无法创建新的系统分区和定位现有系统分区
查看>>
那些年,我跳过的坑(一)
查看>>
快递查询接口的调用与解析案例
查看>>
我的友情链接
查看>>