HDFS分布式文件系统简介

HDFS(Hadoop Distributed File System)Hadoop 分布式文件系统

基于流数据模式访问
    就是可以字节序列化的数据,java.io.Serializable接口
    分布式文件系统处理的数据必须是流数据,可以写IO操作的数据

以128MB的数据块存储文件
    其中每一个存储节点上都有一个DataNode进程,由NameNode来进行协调。

10T的一个文件数据存储到多台服务器上,每个服务器担任一部分存储任务,这些多台服务器通过一个文件系统组织起来对外界提供统一的服务,那么客户端访问这个10T的文件的时候,就感觉后台是一个服务器在提供服务,那么我们把这个机制就叫做分布式,把运行在多台服务器上的这个文件系统就叫做分布式文件系统。

1 HDFS名词简介

block:

基本存储单位,128M,默认备份3份
块的大小(hadoop2.0 128M):决定了资源,文件系统读写数据的吞吐量,应用程序寻址的速度
大数据的块之所以设置的如此之大,是为了提高数据的吞吐量和降低数据寻址的时间
每一个block块对应一个Map的任务(线程)

NameNode:

维护HDFS文件系统,存储文件数据的元信息。处理来自客户端的对HDFS的各种操作的交互反馈
镜像文件(Namespace image)和操作日志文件(edit log)
    这些信息在系统启动时从数据节点重建.被Cache在RAM中
    这两个文件也会被持久化存储在本地硬盘。

SecondaryNameNode:

周期性将元数据节点的命名空间镜像文件和修改日志进行合并,并实现fsimage的备份
日志与镜像的定期合并的作用:
    如果Namenode节点故障,namenode下次启动的时候,会把fsimage加载到内存中
    如果没有合并机制:edits log是每一次操作的记录,namenode要对每一次操作进行重写
    导致操作很耗时(namenode容错机制)

DataNode:

文件系统的工作节点,根据客户端或是namenode的调度存储和检索数据
并且定期向namenode发送他们所存储的块(block)的列表。
DataNode启动时会向NameNode报告当前存储的数据块信息,后续也会定时报告修改信息
DataNode之间会进行通信,复制数据块,保证数据的冗余性

NodeManager :

对它所在的节点上的资源的管理(cpu、内存、磁盘的利用情况)
    定期向resourcemanager进行汇报该节点上的资源利用信息
    监督Container(容器)的生命周期
    监控每个Container的资源使用(内存、CPU等)情况
    追踪节点健康状况,管理日志和不同应用程序用到的附属服务(auxiliary service)。

ResouceManager:

负责集群中所有资源的统一管理和分配
接收来自各个节点(NodeManager)的资源汇报信息
并把这些信息按照一定的策略分配给各个应用程序(实际上是ApplicationManager)。
2 HDFS优点
1)适合大数据处理
    能够处理百万规模以上的文件数量( GB、TB、PB级数据),能够处理10K节点的规模
2)处理非结构化的数据
    可处理结构化、半结构化、非结构化的数据(语音、视频、图片),80% 的数据都是非结构化的数据
3)流式访问数据
    一次写入,多次读取。文件一旦写入不能修改,只能追加。它能保证数据的一致性。
4)运行于廉价的商用机器集群上
    它通过多副本机制,提高可靠性。一旦出现故障也不会影响正常的业务处理,可以通过其它副本来恢复。
3 HDFS缺点
1)不适合处理低延迟的数据访问
    HDFS是为了处理大型数据集分析任务的,主要是为了达到高的数据吞吐量而设计的
    HBase适合做低延迟的数据访问BigTable
2)无法高效的存储大量小文件
    当文件以block块的形式进行存储时,block块的位置会存储在namenode节点的内存中
    不论存储大文件还是小文件,每个文件对应的单条block的块信息大小是一致的
    而NameNode的内存总是有限的。小文件存储的寻道时间会超过读取时间,它违反了HDFS的设计目标。
  (这里的小文件是指小于HDFS系统的Block大小的文件,默认是64M)
3)不支持并发写入和任意的修改
    一个文件同时只能有一个写,不允许多个线程同时写。
    仅支持数据 append(追加),不支持文件的随机修改。以追加的形式达到修改的目的
4 HDFS特性
1)高容错,可扩展性及可配置性强
    数据自动保存多个副本。它通过增加数据冗余来提高容错性。某一个副本丢失以后,它可以自动恢复
    可扩展:可以不断的添加新的datanode    
2)跨平台
    Java语言开发的,HDFS支持多个平台Windows
3)shell命令接口
    hadoop fs -put 上传,把本地Linux文件系统的文件,上传到HDFS文件系统中
    hadoop fs -ls hdfs://master:9000/ 查看HDFS文件系统根目录(/)下的文件
    ......
4)机架感知功能
    副本的存放,第一个存到rack1,第二个就会选择不同于rack1的其他的rack上面存储 /etc/hosts
5)负载均衡
    理想状态下,集群中每个服务器上面存储数据都是均匀的。但在实际当中,经常会出现数据偏移
    start-balancer.sh -t 10%
6)Web界面
    http://master:18088  yarn           http://master:50070  hdfs
    能够查看hdfs文件系统中的文件信息
5 HDFS设计目标
1)监测和快速恢复硬件故障
    监测:立刻会监测到坏的块--->上报到主节点RM
    单独启动一个进程:hadoop-daemon.sh start namenode/datanode/resourcemanager/nodemanager
2)流式数据访问
    重视的是吞吐量,而不是数据处理的速度。实现批处理
3)大规模数据集
    支持大文件存储,一个单一的HDFS实例能支撑数以千万计的文件
4)简化一致性访问模式
    一次写入,多次读取
5)移植性强
    移动计算的代价,要比移动数据的代价低
6 HDFS数据存储

HDFS采用Master/Slave主从架构来存储数据,这种架构主要由四个部分组成。分别为HDFS Client、NameNode、DataNode和Secondary NameNode

Client:客户端

1、文件切分。文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。
2、与 NameNode 交互,获取文件的位置信息。
3、与 DataNode 交互,读取或者写入数据。
4、Client 提供一些命令来访问和管理HDFS等操作。

NameNode:master管理者

1、管理 HDFS 的名称空间。数据块(Block)映射信息。配置副本策略
2、处理客户端读写请求。

fsimage与edits是NameNode的两个重要文件。
    1)fsimage:元数据镜像文件(存储文件系统的目录树,比如说有哪些目录,每个目录有哪些文件...)
    2)edits:元数据操作日志(存储针对目录树的修改操作,比如你删除了某个文件或者增加了某个文件)

DataNode:Slave节点,NameNode 下达命令,DataNode 执行实际的操作

1、存储文件。
2、执行数据块的读/写操作。

SecondaryNameNode:辅助元数据

并非NameNode 的热备(热备从广义上讲,就是服务器高可用应用的另一种说法)。
当NameNode 挂掉的时候,它并不能替换 NameNode 并提供服务。
    1、辅助 NameNode,执行fsimage和edits的定期合并
    2、在紧急情况下,可辅助恢复 NameNode。
7 HDFS功能概述

HDFS具有两个功能:命名空间管理(Namespace management)和块/存储管理服务(block/storage management)。

1.命名空间管理
HDFS的命名空间包含目录、文件和块的信息。
指命名空间支持对HDFS中的目录、文件和块做创建、修改、删除、列表文件和目录等基本操作。

2.块/存储管理
在块存储服务中包含两部分工作:块管理和物理存储。这是一个更通用的存储服务。其他的应用可以直接建立在Block Storage上,如HBase,Foreign Namespaces等。

块管理:
    A) 处理DataNode向NameNode注册的请求,处理datanode的成员关系。
    B) 处理来自DataNode周期性的心跳报告,维护块的位置信息。
    C) 处理与块相关的操作:块的创建、删除、修改及获取块信息。
    D) 管理副本放置(replica placement)和块的复制及多余块的删除。

物理存储:
    Data Node把块存储到本地文件系统中,对本地文件系统的读写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值