阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop剖析之HDFS

85次阅读
没有评论

共计 2461 个字符,预计需要花费 7 分钟才能阅读完成。

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

————————————– 分割线 ————————————–

将本地文件拷到 HDFS 中 http://www.linuxidc.com/Linux/2013-05/83866.htm

从 HDFS 下载文件到本地 http://www.linuxidc.com/Linux/2012-11/74214.htm

将本地文件上传至 HDFS http://www.linuxidc.com/Linux/2012-11/74213.htm

HDFS 基本文件常用命令 http://www.linuxidc.com/Linux/2013-09/89658.htm

Hadoop 中 HDFS 和 MapReduce 节点基本简介 http://www.linuxidc.com/Linux/2013-09/89653.htm

《Hadoop 实战》中文版 + 英文文字版 + 源码【PDF】http://www.linuxidc.com/Linux/2012-10/71901.htm

Hadoop: The Definitive Guide【PDF 版】http://www.linuxidc.com/Linux/2012-01/51182.htm

————————————– 分割线 ————————————–

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 操作了。

更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计2461字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中