Hadoop剖析之HDFS

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

Hadoop剖析之HDFS,布布扣,bubuko.com

时间: 2024-10-26 18:04:35

Hadoop剖析之HDFS的相关文章

2本Hadoop技术内幕电子书百度网盘下载:深入理解MapReduce架构设计与实现原理、深入解析Hadoop Common和HDFS架构设计与实现原理

这是我收集的两本关于Hadoop的书,高清PDF版,在此和大家分享: 1.<Hadoop技术内幕:深入理解MapReduce架构设计与实现原理>董西成 著  机械工业出版社2013年5月出版 2.<Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理>蔡斌.陈湘萍 著  机械工业出版社2013年4月出版 百度网盘下载地址: http://pan.baidu.com/s/1sjNmkFj

Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

通过这一阶段的调研总结,从内部机理的角度详细分析,HDFS.MapReduce.Hbase.Hive是如何运行,以及基于Hadoop数据仓库的构建和分布式数据库内部具体实现.如有不足,后续及时修改. HDFS的体系架构 整个Hadoop的体系结构主要是通过HDFS来实现对分布式存储的底层支持,并通过MR来实现对分布式并行任务处理的程序支持. HDFS采用主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的(在最新的Hadoop2.2版本

hadoop教程之HDFS常用文件操作命令

北京尚学堂提供 1.ls hadoop fs -ls / 列出hdfs文件系统根目录下的目录和文件 hadoop fs -ls -R / 列出hdfs文件系统所有的目录和文件 2.put hadoop fs -put < local file> < hdfs file > hdfs file的父目录一定要存在,否则命令不会执行 hadoop fs -put < local fileor dir >-< hdfs dir > hdfs dir 一定要存在,否则

Hadoop分布式文件系统--HDFS结构分析

转自:http://blog.csdn.net/androidlushangderen/article/details/47377543 HDFS系列:http://blog.csdn.net/Androidlushangderen/article/category/5734703 前言 在Hadoop内部,具体实现了许多类的文件系统,当然最最被我们用到的就是他的分布式文件系统HDFS了.但是本篇文章不会讲HDFS的主从架构等东西,因为这些东西网上和资料书中都讲得很多了.所以,我决定以我个人的学

何时使用hadoop fs、hadoop dfs与hdfs dfs命令

hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作),前者已经Deprecated,一般使用后者. 以下内容参考自stackoverflow Following are the three commands which appears same but have minute differences hadoop fs {args} hadoop dfs {args} hdfs dfs {a

Hadoop备战:hdfs常用命令(可能有你不知道的)

除介绍的命令外,还有许多bin/hadoop.dfs命令,以上介绍的只是帮助你开始使用HDFS,运行bin/hadoop dfs不带任何参数会列出所有FsShell系统提供的命令,当你遇到问题时执行bin/hadoop dfs –help commandName会显示这个命令的用法. 下面是所有命令的介绍,介绍之前先定义一下参数的意义: 1.    斜体:表示用户输入的变量. 2.  path:表示文件名或目录名. 3.    path-:表示一个或多个文件名或目录名. 4.    file:表

Hadoop系列之hdfs(分布式文件系统)安装配置

Hadoop系列之hdfs(分布式文件系统)安装配置环境介绍:     ip                        节点192.168.3.10      hdfs-master192.168.3.11      hdfs-slave1192.168.3.12      hdfs-slave21.在所有机器添加hosts192.168.3.10      hdfs-master192.168.3.11      hdfs-slave1192.168.3.12      hdfs-slav

Hadoop 2.x HDFS新特性

Hadoop 2.x HDFS新特性     HDFS联邦     HDFS HA(要用到zookeeper等,留在后面再讲)     HDFS快照 回顾: HDFS两层模型     Namespace: 包括目录.文件和块.它支持所有命名空间相关的文件操作,如创建.删除.修改,查看所有文件和目录.     Block Storage Service(块存储服务) 包括两部分: 1 在namenode中的块的管理:提供datanode集群的注册.心跳检测等功能.处理块的报告信息和维护块的位置信息

hadoop 学习之hdfs shell命令

1.HDFS shell 1.0查看帮助  hadoop fs -help <cmd> 1.1上传  hadoop fs -put <linux上文件> <hdfs上的路径> 1.2查看文件内容  hadoop fs -cat <hdfs上的路径> 1.3查看文件列表  hadoop fs -ls / 1.4下载文件  hadoop fs -get <hdfs上的路径> <linux上文件>