Hadoop学习笔记【分布式文件系统学习笔记】
分布式文件系统介绍
分布式文件系统:Hadoop Distributed File System,简称HDFS。
一、HDFS简介
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高 度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。
二、HDFS设计目标
·支持海量的数据,硬件错误是常态,因此需要备份。
·一次写多次读(write-once-read-many)的存取模式。
·运行在普通的硬件上面。
·数据块(默认大小是64M)尽量散步到各个节点中。
三、HDFS能做什么?
HDFS适合做什么?
·存储并管理PB级数据。
·处理非结构化数据。
·注重数据处理的吞吐量。
·应用模式为:write-once-read-many存取模式。
HDFS不适合做?
·存储小文件(不建议使用)。
·大量的随机读(不建议使用)。
·需要对文件的修改(不支持)。
四、几个基本概念
4.1 数据块
每个磁盘都有默认的数据块大小,这是磁盘进行数据读写的最小单位。构建与单个磁盘之上的文件系统通过磁盘块来管理该文件系统中的块(大小一般为512 byte)。HDFS中也有块(block)的概念,默认大小为64M,HDFS上的文件被华为为块大小的多个分块(chunk),作为独立的存储单元,但于其他文件系统不同的是,HDFS中小于一个块大小的文件不会占整个块的空间。
为何HDFS中的块设置如此之大?
HDFS的块比磁盘块达,其目的是为了减小寻址开销。如果设置的足够大,磁盘传输数据的时间将明显大于寻址时间,这样一个由多个块组成的文件时间取决于磁盘传输速率。
4.2 namenode和datanode
HDFS主要由namenode和datanode组成, 并以管理者/工作者模式运行,即一个namenode和多个datanode。
Namenode:
namenode管理文件系统的命名空间,它维护者文件系统树及整棵树内所有的文件和目录。这些管理信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件和编辑日志文件。namenode 也记录着每个文件中各个块所在的数据节点信息,但它井不永久保存块的位置信息,因为这些信息会在系统启动时由数据节点重建。
Datanode:
datanode 是文件系统的工作节点。它们根据需要存储井检索数据块(受客户端或namenode 调度),井且定期向namenode 发送它们所存储的块的列表。客户端(c1ient)代表用户通过与namenode 和datanode 交互来访问整个文件系统。
综上:没有namenode ,文件系统将无泣使用。事实上,如果运行namenode 服务的机器毁坏,文件系统上所有的文件将会丢失,因为我们不知道如何根据datanode 的块来重建文件。
五、HDFS架构
1. 一个文件被划分成大小固定的多个文件块,分布的存储在集群中的节点中。

一个文件一台电脑直接读取需要花费很多时间,但是多个电脑同时读取就可以看出速度啦。
2. 同一个文件块在不同的节点中有多个副本。

如果说第一个节点处的文件失效不能工作了,那么hadoop根据你的配置去自动需找其他的副本,这些副本的拷贝是在hadoop的配置文件中进行指定的,副本的个数都是可以配置的。
3. 一个集中的地方保存文件的分块信息。一般保存在/home/hdfs/目录下。

集中的地方就叫做namenode用于保存分块的信息,namenode只有一个,首先我们必须从namenode获得分块信息,上面就是namenode中分块的信息。

上图是datanode的信息,就是讲文件进行分块存储,然后进行并行读取节点信息,相比传统的方式,一般是将硬盘作为一个节点进行存储,而hadoop则是将分布的主机作为节点进行存储。
六、HDFS体系结构
下图为HDFS的体系结构:

读取数据流程:
- 客户端要访问HDFS中的一个文件。
- 首先从namenode获取组成这个文件的数据库位置列表。
- 根据列表知道存储数据块的datanode。
- 访问datanode获取数据。
- Namenode并不参与数据实际传输。
Hadoop学习笔记【分布式文件系统学习笔记】的更多相关文章
- Hadoop基础-HDFS分布式文件系统的存储
Hadoop基础-HDFS分布式文件系统的存储 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HDFS数据块 1>.磁盘中的数据块 每个磁盘都有默认的数据块大小,这个磁盘 ...
- FastDFS图片服务器(分布式文件系统)学习。
参考:https://blog.csdn.net/hiqingtian/article/details/79413471 https://blog.csdn.net/sinat_40399893/ar ...
- 【史上最全】Hadoop 核心 - HDFS 分布式文件系统详解(上万字建议收藏)
1. HDFS概述 Hadoop 分布式系统框架中,首要的基础功能就是文件系统,在 Hadoop 中使用 FileSystem 这个抽象类来表示我们的文件系统,这个抽象类下面有很多子实现类,究竟使用哪 ...
- DFS 分布式文件系统 选型笔记
需求按优先级顺序如下: 1)存放3TB以上中小型文件,图片为主,平均在500~700k,一般在1M以内. 2)要集群化,支持负载均衡,高可用高性能.有大企业使用背书最好. 3)提供Java程序上传文件 ...
- Hadoop 学习之路(一)—— 分布式文件系统 HDFS
一.介绍 HDFS (Hadoop Distributed File System)是Hadoop下的分布式文件系统,具有高容错.高吞吐量等特性,可以部署在低成本的硬件上. 二.HDFS 设计原理 2 ...
- 第3章:Hadoop分布式文件系统(1)
当数据量增大到超出了单个物理计算机存储容量时,有必要把它分开存储在多个不同的计算机中.那些管理存储在多个网络互连的计算机中的文件系统被称为"分布式文件系统".由于这些计算机是基于网 ...
- 分布式基础学习【二】 —— 分布式计算系统(Map/Reduce)
二. 分布式计算(Map/Reduce) 分布式式计算,同样是一个宽泛的概念,在这里,它狭义的指代,按Google Map/Reduce框架所设计的分布式框架.在Hadoop中,分布式文件系统,很大程 ...
- Hadoop 系列(一)—— 分布式文件系统 HDFS
一.介绍 HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错.高吞吐量等特性,可以部署在低成本的硬件上. 二.HDFS 设计原理 ...
- Hadoop 三剑客之 —— 分布式文件存储系统 HDFS
一.介绍 二.HDFS 设计原理 2.1 HDFS 架构 2.2 文件系统命名空间 2.3 数据复制 2.4 数据复制的实现原理 2.5 副本的选择 2 ...
随机推荐
- iOS和Android测试区别
1. Android长按home键呼出应用列表和切换应用,然后右滑则终止应用: 2. 多分辨率测试,Android端20多种,ios较少: 3. 手机操作系统,Andro ...
- 「2014-5-31」Z-Stack - Modification of Zigbee Device Object for better network access management
写一份赏心悦目的工程文档,是很困难的事情.若想写得完善,不仅得用对工具(use the right tools),注重文笔,还得投入大把时间,真心是一件难度颇高的事情.但,若是真写好了,也是善莫大焉: ...
- 「2014-2-23」Note on Preliminary Introduction to Distributed System
今天读了几篇分布式相关的内容,记录一下.非经典论文,非系统化阅读,非严谨思考和总结.主要的着眼点在于分布式存储:好处是,跨越单台物理机器的计算和存储能力的限制,防止单点故障(single point ...
- Navicat Premium下sql导入中文乱码解决方案
今天帮忙朋友找bug的时候,准备导入她数据库里面的数据,所以我就试图在mysql管理工具Navicat下面导入相应的mysql命令.结果发现导入的中文字符全部变成乱码,所以做了如下这种尝试: 在“连接 ...
- rdc21n(研发与设计综合讨论)博客开通了!
rdc21n是“Research and Design Comprehensive discussioN”,其中21表示Comprehensive discussioN中间的21个字母(不包含空格), ...
- core的生成
ubuntu12.04,默认无法生成core文件 输入ulimit -c 1024就ok了 列一下ulimit的参数,貌似这个命令是系统性能控制相关的,先不管了. 表 1. ulimit 参数说明 选 ...
- 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。
在调用部分三方库时,由于三方库是基于.NET2.0的.所以在4.0的程序中无法加载.解决方案如下: 在配置文件中添加以下配置 <?xml version="1.0"?> ...
- shell脚本调试
转自:http://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/ 一. 前言 shell编程在unix/linux世界中使用得非常广泛,熟 ...
- sshd 错误
140669086946976:error:0E079065:configuration file routines:DEF_LOAD_BIO:missing equal sign:conf_def. ...
- jquery 获取 scrollHeight
著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:匿名用户链接:http://www.zhihu.com/question/20985674/answer/16807177来源 ...