您的位置:首页 > 大数据 > Hadoop

HDFS原理及其个元素功能

2015-10-01 10:24 295 查看
一 为什么要进行分块(block)存储?

(流水线)

线下数据放到一台datanode上,其他副本以流水线(pipeline)方式也叫管道方式复写到其他节点上

便于文件的写入和读取,对于大数据文件分块存储时,一旦中间某一块写入失败namenode会记录该数据块的偏移量,将该块数据重新写入到其他block中而不至于从头写入,这样大大提高数据的写入效率.同样读取数据时当读到某一块出现问题时,会向namenode发送消息,namenode将该数据块副本返回给client,而不至于从头开始读取这样也提高了数据的读取需效率.

二 .什么是DFS,允许文件通过

分布式存储数据,通过网络将数据写到远程端数据块中,每一块数据都有多个副本.

特点:

通透性强:client只注重数据写入读取方式,不关心实现原理

优点:

处理PB级及其以上数据量

注重数据吞吐量

处理非结构化数据

一次写入,多次读取

缺点:

不处理小文件

不支持结构化数据

不能对数据进行实时修改(可追加)

常见的DFS: HDFS,G(Google)FS,Lustre,TFS(淘宝FS)

三 HDFS的shell

hadoop fs -lsr -R /

hadoop fs -count /

四 HDFS原理

元数据:是对数据的描述信息就像记录本

hdfs结点元素

NameNode

DataNode

SecondaryNameNode

五 HDFS体系结构

client从namenode查询元数据信息,将元素局信息返回给client,client根据返回的信息到datanode读取信息,client再去信息时遵循就近原则.client写入数据时,同样先访问namenode,namenode写判断要写入的文件是否重复,然后再为其分配datanode中block写入空间.client根据该信息去将数据写入的相应的block,同时复制数据块.复制数据块遵循

一定原则,第一块随机分配,第二个副本与第一个处于不同的机架中,第三个副本与第二个在同一机架的同一集群的节点上中.

六 元数据 存储细节:

1 HDFS为保证数据的安全性,会将元数据保存两份一份位于内存中的namenode节点中 一份在内存中

另一份NameNode的metadata中磁盘保存在内存中

NameNode(FileName,replicas,block-ids,id2host....),

/test/a.log,3,{blk_1,blk_2},[{blk_1:[h0,h1,h3]},{blk_2:[h0,h2,h4]}])

存放路径,副本数量,切分文件,存放的具体的block数据块

在读取时,根据crc32校验和机制来判断该block中数据是否被损坏.


[b]NameNode:


整个文件系统的管理节点,接受用户操作请求,和datanode心跳机制

[/b]

NameNode 主要构成元素:

1 fsimage:元数据的镜像文件即是内存中的元数(保存在磁盘中)据序列化的到磁盘之后的文件的名字

2 edits:记录操作过程

3 fstime:记录最近一次做还原点的时间

NameNode的工作特点:

NameNode始终在内存中保存metedata,用于处理用户的 读请求.

写请求namenode会首先在写editlog日志,记录写入数据的位置,数量等信息,然后返回到客户端,同时hadoop会维护一个fsiamge文件,即是namenode中matedata的镜像,然后Secondary namenode会合并fisimage和edits文件来更新NameNode的metedata产生新的fsimage.

7 SecondaryNameNode工作流程

切换 下载 合并 发送

执行以上过程的时机有两点:

一是fistime中checkpoint大于3600秒

二是edits中数据量大于64MB

八 Datanode

提供真实文件数据的存储服务

主要元素:

文件块(block):基本存储单位,hadoop2.0默认大小128MB



九 RPC=Remote Procedure Call远程调用协议


不同进程之间方法调用,一个项目组中的两个方法 可能是一个进程在上海另一个在北京.可以通过RPC调用

十 HDFS源码分析:

FileSystem fs FileSystem.get(new URI("hdfs://file/path"));

InputStream in = fs.open(new Path("/test.txt"));

IOUtils.cpoyBytes(in,out,4096,true);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: