Hadoop剖析之HDFS

标签: hadoop hdfs | 发表时间:2014-05-23 06:53 | 作者:zhaojida
出处:http://blog.csdn.net

Hadoop的分布式文件系统(HDFS)是Hadoop的很重要的一部分,本文先简单介绍HDFS的几个特点,然后再分析背后的原理,即怎样实现这种特点的。

HDFS特点

1、高容错性。这是HDFS最核心的特性了,把大量数据部署在便宜的硬件上,即使其中某些磁盘出现故障,HDFS也能很快恢复丢失的数据。
2、简单一致性。这个的意思是HDFS适合一次写入,多次读取的程序,文件写入后,就不需要修改了。像MapReduce程序或者网络爬虫程序都是完美适合这个特点。
3、移动计算而不是移动数据。这个好解释,数据太大了,不好移动,HDFS提供了接口,让程序自己移动到离数据近的位置。
4、平台兼容性。平台差异应该能解决,这才能让HDFS使用更广泛。

HDFS架构

1、HDFS是一个典型的主从关系,主是NameNode节点,从是DataNode节点。
NameNode节点是管理者,主要管理系统名字空间,当程序需要读取数据时,先要想NameNode询问数据块的存放位置。
DataNode节点有很多,通常以机架形式组织,机架再通过交换机连接起来。DataNode的主要功能就是保存数据块,同时还要向NameNode报告数据块的信息,没3秒发送一次“心跳”,如果10分钟没有收到心跳,那么就认为这个DataNode坏掉了,此时就需要进行数据恢复了。
2、下面介绍DataNode备份的原理,这也是HDFS有高容错性的原因之一。
在HDFS上的数据都不只是保存一下就可以了,每个文件都会被复制几次(默认3次),然后放在不同地方,以免数据丢失。
那是怎样保存的呢?每个数据块有三个副本,第一个就是数据本身,第二个保存在同一机架(可以理解为同一个硬盘)下的不同DataNode的下,最后一个保存在不同机架上的DataNode上。
3、除了Namenode和DataNode,还有个SecondaryNameNode,他的作用主要是周期性的合并NameNode中保存的关于数据块存放位置的文件,同时NameNode损坏后,可以人工从SecondaryNameNode中恢复一部分,但不是全部。
4、SecondaryNameNode并不能解决单一NameNode的问题,为了提高容错性,HDFS还有HA(high availability)机制:两个NameNode。还有Federation机制:多个NameNode。
5、数据块(block),像Linux系统每个磁盘有数据读和写的最小单位:512字节, 而HDFS也有同样的概念,只不过大小变成了64M,这是因为HDFS需要多次读取,而读取是要不断寻道的,我们要尽量让寻道时间相比数据传输时间最小,如果寻道时间为传输时间百分之一,寻道时间为10ms,传输速度100MB/s,那么块大小就是100MB。以后硬盘传输速度快后,块大小可能会增加。但块太大也不好,一个任务处理一个块,任务会比较慢。当文件小于64MB时,系统同意会分配一个Block给这个文件,但对于实际磁盘资源是没有浪费的。
6、对于大量小文件,HDFS提供了两种容器,将文件统一管理:SequenceFile和MapFile。
7、压缩。压缩能减少空间,主要有三种:gzip,LZO,Snappy。gzip压缩率最高,但耗费CPU,速度也慢。Snappy压缩率最低,但速度快。LZO居中。

HDFS操作

最后介绍一些常用的HDFS操作命令
1、hadoop fs -  这里是一些基本的操作:
hadoop fs -mkdir (路径) 建文件夹
hadoop fs -ls(路径)列出文件及目录
hadoop fs -put  文件 路径  上传
hadoop fs -get 文件 路径 下载
hadoop fs -text  文件  查看
hadoop fs -rm 文件 删除
2、hadoop namenode -formate 格式化NameNode
3、 hadoop job -submit 提交作业
hadoo job -kill 杀死作业
4、hadoop fsck -blocks 打印出块信息报告
hadoop fsck -racks 打印DataNode网络拓扑结构

总结

本文介绍了HDFS的几个特性,并对其一些关键原理及功能给予解释,最后给出常用的HDFS操作命令。读完本文可以对HDFS有个基本的了解,具体原理细节还是要看书,除此之外就是还有会用Java进行HDFS操作了。

作者:zhaojida 发表于2014-5-22 22:53:40 原文链接
阅读:48 评论:0 查看评论

相关 [hadoop hdfs] 推荐:

Hadoop剖析之HDFS

- - CSDN博客数据库推荐文章
Hadoop的分布式文件系统(HDFS)是Hadoop的很重要的一部分,本文先简单介绍HDFS的几个特点,然后再分析背后的原理,即怎样实现这种特点的. 这是HDFS最核心的特性了,把大量数据部署在便宜的硬件上,即使其中某些磁盘出现故障,HDFS也能很快恢复丢失的数据. 这个的意思是HDFS适合一次写入,多次读取的程序,文件写入后,就不需要修改了.

Hadoop之HDFS子框架

- - CSDN博客云计算推荐文章
由图片可以看到HDFS主要包含这样几个功能组件. Namenode:存储文档的元数据信息,还有整个文件系统的目录结构. DataNode:存储文档块信息,并且文档块之间是有冗余备份的. 这里面提到了文档块的概念,同本地文件系统一样,HDFS也是按块存储的,只不过块的大小设置的相对大一些,默认为64M.

hadoop深入研究:(一)——hdfs介绍

- - CSDN博客云计算推荐文章
转载请注明出处: http://blog.csdn.net/lastsweetop/article/details/8992505. 这里的非常大是指几百MB,GB,TB.雅虎的hadoop集群已经可以存储PB级别的数据.  hdfs的高可用是用软件来解决,因此不需要昂贵的硬件来保障高可用性,各个生产商售卖的pc或者虚拟机即可.

Hadoop优化 第一篇 : HDFS/MapReduce - leocook

- - 博客园_首页
比较惭愧,博客很久(半年)没更新了. 最近也自己搭了个博客,wordpress玩的还不是很熟,感兴趣的朋友可以多多交流哈. 地址是:http://www.leocook.org/. 另外,我建了个QQ群:305994766,希望对大数据、算法研发、系统架构感兴趣的朋友能够加入进来,大家一起学习,共同进步(进群请说明自己的公司-职业-昵称).

flume写入hadoop hdfs报错 Too many open files

- - CSDN博客云计算推荐文章
网络搜索,怀疑linux nofile超过最大限制,当前设置大小1024,默认值. 而查看flume进程打开的文件数量为2932(这个比较奇怪,怎么超过1024了呢. 1.修改nfile配置文件,手工增加nofile的大小. 2.重启flume进程,也就是进程29828,问题解决. 作者:hijk139 发表于2013-2-17 16:37:34 原文链接.

Apache Hadoop 1.0.0支持Kerberos验证,支持Apache HBase,提供针对HDFS的RESTful API

- - InfoQ中文站
海量数据框架Apache Hadoop怀胎六年终于瓜熟蒂落发布1.0.0版本. 本次发布的核心特性包括支持Kerberos身份验证,支持Apache HBase,以及针对HDFS的RESTful API. InfoQ就此次发布请Apache Hadoop项目的VP——Arun Murthy回答了几个问题.

Hadoop分布式文件系统HDFS和OpenStack对象存储系统Swift有何不同?

- - ITeye博客
HDFS使用 集中式单一节点架构(NameNode)来维护文件系统元数据,而在Swift中,元数据 分布在整个集群中并拥有多个副本. 注意:集中式元数据存储使HDFS存在单点故障和扩展性问题,因此规模越大就性能越低,就越难扩展甚至不能扩展,所幸的是HDFS2使用NameNode HA和HDFS Federation解决了这两个问题.

HDFS-压缩

- - Java - 编程语言 - ITeye博客
文件压缩带来了两大益处1)减少存贮空间2)加速网络(磁盘)传输. 基于大数据的传输,都需要经过压缩处理. 压缩格式 工具 算法 文件扩展名 可分块. Java代码 复制代码 收藏代码. 24.        // io.compression.codecs 定义列表中的一个 . Native gzip 库减少解压缩时间在50%,压缩时间在10%(同java实现的压缩算法).

HDFS架构

- - 数据库 - ITeye博客
       在阅读了GFS的论文之后,对GFS的框架有了基本的了解,进一步学习自然是对HDFS的解析,不得不说,之前对GFS的一些了解,对理解HDFS还是很有帮助的,毕竟后者是建立在前者之上的分布式文件系统,二者在框架上可以找到很多的共同点,建议初次接触HFDS的技术人员可以先把GFS的那篇论文啃个两三遍,毕竟磨刀不砍柴工.

Hoop:Hadoop HDFS的RESTFul封装

- Vent - NoSQLFan
Hoop是对Hadoop HDFS Proxy 的改良重写,为Hadoop HDFS提供了HTTP(S)的访问接口. 通过标准的HTTP协议访问你的HDFS系统. 在运行不同版本的HDFS之间进行数据交换(这克服了一些RPC方式因版本不同而产生的兼容性问题). 将对HDFS的操作置于防火墙的保护下.