![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
HDFS源码
猿侠令狐冲
阳光 善良
展开
-
详解DataXceiver读数据的流程和零拷贝数据传输
我们知道DataXceiverServer主要用于监听并接收流式接口请求,然后建立并启动DataXceiver对象。DataXceiver是Receiver的子类,DataTransferProtocol真正的响应操作都是在DataXceiver类中实现的。 流式接口中最重要的一个部分就是客户端从数据节点上读取数据块,DataTransferProtocol.readBlock()给出了读取操作...原创 2018-03-15 16:29:42 · 871 阅读 · 0 评论 -
DataXceiver写数据的过程详解
在上篇文章中,已经介绍了DataXceiver读取数据的详细过程。这篇文章就讲解一下流式接口向数据节点写数据的操作,DataTransferProtocol.write()方法给出了写操作的接口定义,操作码是80,DataXceiver.writeblock()则真正实现了DataTransferProtocol.writeblock()方法。 我们知道,HDFS使用数据流管道来写数据,DFSC...原创 2018-03-15 22:09:10 · 912 阅读 · 0 评论 -
HDFS客户端读操作的详细过程
在HDFS客户端实现中,最重要也是最复杂的一部分就是文件的读写操作。打开文件 当客户端读取一个HDFS文件时,首先会调用DistributedFileSystem.open()方法打开这个文件,open方法首先会调用DFSCklient.open()方法创建HDFS文件对应的DFSInputStream输入流对象,然后构建一个HDFSDataInputSream对象包装DFSInputStr...原创 2018-03-17 10:22:13 · 1593 阅读 · 0 评论 -
HDFS客户端写操作与输出流详解
客户端在执行文件写操作前,首先需要调用DistributedFileSystem.create()创建一个空的HDFS文件,然后create()方法会调用DFSClient.create()方法创建DFSOutputStream对象,并将这个对象包装成HDFSDataOutputStreams输出流,这样客户端就可以在输出流HDFSDataOutputStream对象上调用write方法执行写操作...原创 2018-03-17 11:47:56 · 1815 阅读 · 0 评论 -
HDFS的高可用机制详解
在Hadoop2.X之前,Namenode是HDFS集群中可能发生单点故障的节点,每个HDFS集群只有一个namenode,一旦这个节点不可用,则整个HDFS集群将处于不可用状态。 HDFS高可用(HA)方案就是为了解决上述问题而产生的,在HA HDFS集群中会同时运行两个Namenode,一个作为活动的Namenode(Active),一个作为备份的Namenode(Standby)。备份的N...原创 2018-03-13 11:14:32 · 13099 阅读 · 6 评论 -
HDFS高可用(HA)之ZKFC详解
对于NameNode的高可用可以简单分为共享editLog机制和ZKFC对NameNode状态的控制。有关共享editlog机制已经在上篇文章做了详述,感兴趣的朋友可以去看看。 这篇文章的重点放在ZKFC对于Namenode的控制上。部署示意图 FC是要和NN一一对应的,两个NN就要部署两个FC。它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上...原创 2018-03-13 15:40:58 · 19029 阅读 · 2 评论 -
HDFS1.X架构和HDFS2.X架构
HDFS1.X的架构从逻辑空间上可以分为两层。 Namespace 和 Block Storage Service; 其中,Namespace 层面包含目录、文件以及块的信息,支持对Namespace相关文件系统的操作,如增加、删除、修改以及文件和目录的展示; 而Block Storage Service层面又包含两个部分: ①Block Management(块管理)维护集群...原创 2018-03-13 20:16:59 · 1569 阅读 · 0 评论