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 ...
随机推荐
- Java LinkedList 源码剖析
LinkedList同时实现了List接口和Deque接口,也就是说它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(Stack).这样看来,LinkedList简直就 ...
- R语言中的logical(0)和numeric(0)以及赋值问题
logical(0) 不等于 numeric(0).两者都不等于NULL值,即is.null(logical(0))和is.null(numeric(0))返还值都是FALSE.这很有意思,说明长度为 ...
- jQuery中$.fn的用法
原文:http://www.jb51.net/article/42816.htm $.fn是指jquery的命名空间,$.fn=$.prototype. 1.$.extend 为jquery添加静态方 ...
- 笔记:java转XML
package com.deppon.oms.module.client.pushToTianFangkeji.domain; import java.util.ArrayList; import j ...
- 用python2.7,采集新浪博客
#coding=utf-8 #新浪博客 import urllib import re import os url=['']*1500 #每一骗博客的地址 title=['']*1500 #每一篇博客 ...
- java分布式事务
1.现有方案 a.atomikos b.jotm 说明:spring3.0已将jotm的支持踢掉 2.使用atomikos时的pom.xml内容 <!-- 分布式事务支持-atomikos-be ...
- [翻译]Spring框架参考文档(V4.3.3)-第二章Spring框架介绍 2.1 2.2 翻译--2.3待继续
英文链接:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/overview.ht ...
- dubbo分布式rpc框架用法
dubbo是阿里巴巴开源的分布式服务框架,致力于提供高性能和透明化的rpc远程服务调用方案,以及soa服务治理方案,如果没有分布式需求,是不需要dubbo的,分布式环境dubbo的使用架构官方给出了一 ...
- 谈谈eclipse使用技巧一
俗话说的好啊,“工于利启事,必先善其器”,如果说你的编程功底是一个枪法的话,那么强大的eclipse就是android战士们最好的武器. 这里,我们来总结eclipse的使用技巧,从而使我们的编程达到 ...
- ZeroMQ研究与应用分析
1 ZeroMQ概述 ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型.连接处理.帧.甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字.ZeroMQ是网络通信中新的一层,介于应用 ...