Hadoop分布式文件系统HDFS详解
Hadoop分布式文件系统即Hadoop Distributed FileSystem。
当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区(Partition)并存储到若干台单独的计算机上,管理网络中跨越多台计算机存储的文件系统成为分布式文件系统(Distributed FileSystem)。
该系统架构与网络之上,势必引入网络编程的复杂性,因此分布式文件系统比普通磁盘文件系统更为复杂。例如:使文件系统能够容忍节点故障且不丢数据便是一个极大的挑战。
Hadoop有一个成为HDFS的分布式文件系统,即Hadoop Distributed FileSystem。在非正式的文档或旧的文档中也叫着做DFS。HDFS是Hadoop的旗舰级文件系统,它实际上是一个综合性的文件系统的抽象。例如还可以集成其他文
件系统如Amazon S3或本地文件系统。
HDFS以流式数据访问模式来存储超大文件,运行在商用硬件集群上,特点如下:
1、超大文件存储
“超大文件”在这里指具有即便MB、几百GB、几百TB大小的文件,目前已经有了存储PB级别数据的Hadoop集群。(全球最大的Hadoop集群在雅虎,有大约25,000个节点,主要用于支持广告系统与网页搜索。)
2、流式数据访问
HDFS的构建思路是一次写入,多次读取是最高效的访问模式。数据集通常由数据源生成或从数据源复制而来,接着长时间在此数据集上进行各种分析。每次分析都将涉及该数据集的大部分或全部,因此读取整个数据集
的时间延迟比读取第一条记录的时间延迟更重要。
3、商用硬件
Hadoop并不需要运行在昂贵且高可靠的硬件上。它是设计在普通硬件的集群上的,因此至少对于庞大的集群来说,节点故障的几率还是非常高的。HDFS在遇到上述故障时,被设计成能够继续运行且不让用户察觉到明显
的中断。同样那些不适合在HDFS上运行的应用也值得研究。目前对实时性要求较高的应用不适合在HDFS上运行。
4、低时间延迟的数据访问
要求低时间延迟数据访问的应用,例如及时毫秒范围不适合在HDFS上运行。因为HDFS是为高吞吐量应用优化的,这可能会以提高时间延迟为代价。目前对于低延迟时间的访问需求,HBase是更好的选择。
5、大量的小文件
由于NameNode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于NameNode的内存容量。根据经验,每个文件、目录和数据块的存储信息大约占150字节,因此举例如果有一百万个文件,且每
个文件占一个数据块,那至少需要300MB内存。尽管存储上百万个文件是可行的的,但是存储数十亿个文件就超出了当前硬件的能力。
6、多用户写入、任意修改文件
HDFS中的文件只能有一个写入,且目前(Hadoop-0.x~Hadoop-2.6.0)只能追加到文件的末尾。不支持多个写入操作,也不支持在文件的任意位置修改操作。
HDFS数据块
每个磁盘都有默认的数据块大小,这是磁盘进行数据读/写的最小单位。构建于单个磁盘之上的文件系统通过磁盘块来管理该文件系统中的块,该文件系统块的大小可以是磁盘块的整倍数。文件系统文件系统块一般为几千字
节,而磁盘块一般为521字节。例如Windos上文件系统的磁盘单位为簇,Linux上文件系统的磁盘单位为block。
HDFS同样有块的概念,但是比较大。在Hadoop-0.x和Hadoop-1.x中默认的块大小为64MB,在Hadoop-2.0及以后的版本中默认的块大小是128MB。与单一磁盘上的文件系统相似,HDFS上的文件也被划分为块大小的多个分块
(chunk),作为独立的存储单元。其他文件系统不同的是,HDFS中小于一个块大小的文件不会占据整个块的空间。HDFS的分块我的理解是逻辑分块,而并非是物理切块。HDFS的块之所以大是为了最小化寻址开销。如果块设
置的足够大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。如果使用更多的时间来传输数据显然比寻址更高效。但是块也不会太大,MapReduce中的map任务通常一次只处理一个块中的数据,如果任务
数太少(少于集群中的节点数量),作业的运行速度就会比较慢。分块非常适合用于数据备份进而提供数据容错的能力和提高可用性。在分布式集群的默认情况下HDFS的块副本数为3个,且每个块分布在不同的节点上。这样
的好处是在磁盘或机器发生故障后数据不会丢失,如果一个块不可用时则去其他节点上读取另一个副本,而这个过程对用户是透明的。一个因为损坏或机器故障而丢失的块可以从其他节点上复制到另一台正常运行的机器上,
以保障副本的数量回到正常水平。同样有些应用程序可能选择为一些常用的文件块设置更高的副本数进而分散集群中的读取负载。
Hadoop分布式文件系统HDFS详解的更多相关文章
- 【转载】Hadoop分布式文件系统HDFS的工作原理详述
转载请注明来自36大数据(36dsj.com):36大数据 » Hadoop分布式文件系统HDFS的工作原理详述 转注:读了这篇文章以后,觉得内容比较易懂,所以分享过来支持一下. Hadoop分布式文 ...
- Hadoop分布式文件系统HDFS的工作原理
Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.它能提供高吞吐量的数据访问,非常适合大规模数据集上的应 ...
- Hadoop分布式文件系统--HDFS结构分析
转自:http://blog.csdn.net/androidlushangderen/article/details/47377543 HDFS系列:http://blog.csdn.net/And ...
- 对Hadoop分布式文件系统HDFS的操作实践
原文地址:https://dblab.xmu.edu.cn/blog/290-2/ Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是Hadoop核 ...
- Hadoop 分布式文件系统 - HDFS
当数据集超过一个单独的物理计算机的存储能力时,便有必要将它分不到多个独立的计算机上.管理着跨计算机网络存储的文件系统称为分布式文件系统.Hadoop 的分布式文件系统称为 HDFS,它 是为 以流式数 ...
- Hadoop分布式文件系统HDFS
HDFS的探究: HDFS HDFS是 Hadoop Distribute File System的缩写,是谷歌GFS分布式文件系统的开源实现,Apache Hadoop的一个子项目,HDFS基于流数 ...
- 分布式文件系统FastDFS详解
上一篇文章<一次FastDFS并发问题的排查经历>介绍了一次生产排查并发问题的经历,可能有些人对FastDFS不是特别的了解,因此计划写几篇文章完整的介绍一下这个软件. 为什么要使用分布式 ...
- FastDFS分布式文件系统配置文件详解
一.tracker配置文件详解: # is this config file disabled# false for enabled# true for disableddisabled=false# ...
- CM记录-Hadoop 分布式文件系统HDFS(登录、配置、监控)
1.登录(浏览器输入ip地址:7180,登录用户名和登录密码即可) 2.CM主界面(各个组件,监控图表,绿色代表运行正常.黄色代表运行不良,需要关注根据实际情况调整,红色代表故障,需要排查问题) 3. ...
随机推荐
- 生成唯一的id(转)
很多朋友都利用md5()来生成唯一的编号,但是md5()有几个缺点:1.无序,导致数据库中排序性能下降.2.太长,需要更多的存储空间.其实PHP中自带一个函数来生成唯一的id,这个函数就是uniqid ...
- solr error logs org.apache.solr.common.SolrException: ERROR: [doc=17] unknown field alias
在solr中 添加新的索引词语时,报如标题所示错误,指定是插入的字段没有在solr索引字段里 可以修改 solr安装目录/solr/conf 目录下的 schema.xml 在此xml文件内加入所需字 ...
- LSI MegaCli 命令使用4
Dell服务器常用管理命令总结准备新版本的 MegaCli-1.01.24-0.i386.rpm 会把程序安装在/opt下,可以自定义安装目录,例如:rpm --relocate /opt/=/usr ...
- C++关联容器<map>简单总结
C++关联容器<map>简单总结 map提供大小可变的关联容器,基于关联键值高效检索元素值.当你处理键值对的数据是,都可以考虑使用map关联容器. 特点: 大小可变的关联容器,基于关联键值 ...
- mongodb一些特性
mongodb 地理位置 mongodb schema mongodb 定时任务 mysql 也有定时任务 mongodb 读写分离 http://blog.csdn.net/sd0902/artic ...
- apache的域名添加虚拟端口号
1. vi /etc/httpd/conf/httpd.conf 2. 搜索Listen 80,在后面添加Listen 8080 3. 重启apache服务器./usr/sbin/apachectl ...
- android studio 改变主题及字体大小
一丶修改主题背景 1.点击图中的小扳子图标(设置),或者点击file->setting-> 2.找到Appearance->在Theme中选择Darcula,即可改变成当前最主流的主 ...
- 用 CALayer 定制下载进度条控件
// // RPProgressView.h // CALayer定制下载进度条控件 // // Created by RinpeChen on 16/1/2. // Copyright © 2016 ...
- zepto源码研究 - ajax.js($.ajax具体流程分析)
简要:$.ajax是zepto发送请求的核心方法,$.get,$.post,$.jsonp都是封装了$.ajax方法.$.ajax将jsonp与异步请求的代码格式统一起来,内部主要是先处理url,数据 ...
- MapReduce UnitTest
通常情况下,我们需要用小数据集来单元测试我们写好的map函数和reduce函数.而一般我们可以使用Mockito框架来模拟OutputCollector对象(Hadoop版本号小于0.20.0)和Co ...