HDFS的读写流程
顾 在阐述HDFS最基础的理论知识那一篇读完后,这一篇是HDFS的主要工作流程,和一些较为有用的策略 补充一个问题,就是当我们 NameNode 挂掉,SecondaryNameNode作为新的NameNode上位时,它确实可以根据fsimage.ckpt把一部分元数据加载到内存,可是如果这时还有一部分操作日志在edits new中没有执行怎么办? 这时候有一个解决方案就是利用一个network fileSystem来解决,比如说集群中有一个服务器安装了一个nfs server,而在NameNode上再安装一个nfs client,此时客户端向HDFS写数据时,同时把向edits new中写的数据写一份到nfs server中,SecondaryNamenode就可以通过这个nfs server来获取此时断层的数据了 其他似乎也没啥可多说的,让我们直奔主题吧 以往链接
从零开始的大数据(一) --- HDFS的知识概 骤分析 ① HDFS client调用文件系统的open方法 Distributed FileSystem顾名思义是一个分布式文件系统,它会通过RPC的方式远程过程调用NameNode里的open方法,这个open方法有什么作用呢,就是获取要读的文件的file block locations,也就是文件的block的位置,在上一讲我们也已经提到了,一个文件是会分割成128M一块的大小分别存储在各个数据节点的。 同时在执行open方法时,客户端会产生一个FSData InputStream的一个输入流对象(客户端读数据是从外部读回来的) ② FSData InputStream读数据 HDFS client调用FSData InputStream的read方法,同上也是远程过程调用DataNode的read方法,此时的读取顺序是由近到远,就是DataNode和client node的距离,这里所指的距离是一种物理距离,判定可以参考上一篇文章中机架的概念。 在联系上DataNode并成功读取后,关闭流就走完了一个正常的流程。 而且补充一下就是,上面Distributed FileSystem所调用的get block locations的方法只会返回部分数据块,get block locations会分批次地返回block块的位置信息。读block块理论上来说是依次读,当然也可以通过多线程的方式实现同步读。 ③ 容错机制 1.如果client从DataNode上读取block时网络中断了如何 (编辑:长春站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |