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);
(流水线)
线下数据放到一台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);
相关文章推荐
- 认识HDFS分布式文件系统
- 搭建hdfsHA时遇到的问题及其解决方案
- HDFS-Architecture剖析
- flume学习(五):flume将log4j日志数据写入到hdfs
- HDFS序列化
- 解决从本地文件系统上传到HDFS时的权限问题
- 解决从本地文件系统上传到HDFS时的权限问题
- HDFS基本命令
- hadoop2.7.0升级到2.7.1,版本升级
- 解读HDFS
- HDFS详细介绍
- HDFS命令
- hadoop2.7.0集群,使用中遇到的bug及解决办法
- Hadoop 目前只是“穷人的 ETL”
- 学习日志---mapreduce详细过程分析
- Kafka+Storm+HDFS整合实践
- flume-ng+Kafka+Storm+HDFS 实时系统搭建
- 自定义/指定 HDFS Block存放位置
- HDFS 2.7.1 所有配置项
- hadoop-yarn启动流程分析