Hadoop学习日志之HDFS读写策咯
来源:互联网 发布:windows程序开发 编辑:程序博客网 时间:2024/05/29 10:57
关于HDFS读写顺序,有以下几点,首先,先看图:
1.客户端通过调用FileSystem对象的open()来读取希望打开的文件。
2.DistributedFileSystem通过RPC来调用namenode,以确定文件的开头部分的块位置。namenode返回每块副本的datanode的存储位置,根据他们
所在的位置返回。(就近原则)
3.接着client对这个输入流调用read()。存储着文件开头部分块的数据节点地址的DFSInputStream随即与这些块最近的datanode相连接。
4.通过在数据流中反复调用read(),数据会从datanode返回client。
5.当读取快到末端的时候,就会准备关闭DFS与datanode的联系,寻找下一个合适位置的datanode.
错误处理:在读取的时候,如果client与datanode通信时遇到一个错误,那么它就会去尝试对这个块来说下一个最近的块。它也会记住那个故障节点
的datanode,以保证不会再对之后的块进行徒劳无益的尝试。client也会确认datanode发来的数据的校验和。如果发现一个损坏的块,它就会在
client试图从别的datanode中读取一个块的副本之前报告给namenode。
设计重点:这个设计的一个重点是,client直接联系datanode去检索数据,并被namenode指引到块中最好的datanode。因为数据流在此集群中是
在所有datanode分散进行的。所以这种设计能使HDFS可扩展到最大的并发client数量。同时,namenode只不过提供块的位置请求(存储在内存
中,十分高效),不是提供数据。否则如果客户端数量增长,namenode就会快速成为一个“瓶颈”。
读策略
读策略与写策略类似,但是也有不同点。
1.首先创建文件
2.DistributedFileSystem 使用RPC去调用namenode,在文件系统的命名空间创一个新的文件,没有块与之相联系。namenode执行各种不同的检
查以确保这个文件不会已经存在,并且在client有可以创建文件的适当的许可。如果检查通过,namenode就会生成一个新的文件记录;否则,文件创
建失败并向client抛出一个IOException异常。创建成功后开始写入通过分布式文件系统返回的输入流的数据。
3.将数据封装成包,写入内部队列。
4.数据流将包分流给管线中第一个的datanode,这个节点会存储包并且发送给管线中的第二个datanode。同样地,第二个datanode存储包并且传给
管线中的第三个数据节点。
5.DFSOutputStream也有一个内部的数据包队列来等待datanode收到确认,称为确认队列。一个包只有在被管线中所有的节点确认后才会被移除
出确认队列。只有所有的节点都被确认才会移除该包。
6.数据写完,关闭连接。
副本机制:第2个复本放在与第1个复本不同且随机另外选择的机架的节点上(离架)。第3个复本与第2个复本放在相同的机架,且随机选择另一个节
点。其他复本放在集群中随机的节点上,不过系统会尽量避免相同的机架放太多复本。
总的来说,这一方法不仅提供了很好的稳定性(数据块存储在两个机架中)并实现很好的负载均衡,包括写入带宽(写入操作只需要遍历一个交机)、
读取性能(可以从两个机架中选择读取)和集群中块的均匀分布(客户端只在本地机架上写入一个块)。
- Hadoop学习日志之HDFS读写策咯
- Hadoop学习之HDFS读写流程
- Hadoop学习总结之二:HDFS读写过程解析
- Hadoop学习总结之二:HDFS读写过程解析
- Hadoop学习总结之二:HDFS读写过程解析
- Hadoop学习总结之二:HDFS读写过程解析
- Hadoop学习总结之二:HDFS读写过程解析
- Hadoop学习总结之二:HDFS读写过程解析
- Hadoop学习总结之二:HDFS读写过程解析
- Hadoop学习总结之二:HDFS读写过程解析
- Hadoop学习日志之HDFS的主从结构
- Hadoop学习之HDFS
- hadoop学习之HDFS(2.7):实例:开发shell脚本定时采集日志数据到hdfs
- 深入学习Hadoop 2 - HDFS的读写
- 深入学习Hadoop-HDFS的读写
- Hadoop之HDFS文件读写过程
- hadoop之 HDFS读写 java interface
- Hadoop学习笔记之---HDFS
- K Best 【01规划入门】(附知识点链接)
- 《STL源码剖析》-内存适配器(二)配置器剖析
- ADT各版本下载地址
- Redis HyperLogLog
- 试点城市地方党委
- Hadoop学习日志之HDFS读写策咯
- js中数组去重的常用方法
- Java面试题(下)
- 考试题讲解
- 2017年,你还在用用户画像和协同过滤做推荐系统吗?
- 西门子s7-300编程软件 v5.5中文版
- 解决EndNote未知错误0x4A8C
- API gateway 中启用用户使用计划来控制访问策略
- spring logback.xml的配置