一起艳学大数据Hadoop(三)——java操作HDFS的增删改查
来源:互联网 发布:死海古卷 知乎 编辑:程序博客网 时间:2024/06/02 02:18
具体过程描述如下:
1、Client调用DistributedFileSystem对象的create方法,创建一个文件输出流(FSDataOutputStream)对象
2、通过DistributedFileSystem对象与Hadoop集群的NameNode进行一次RPC远程调用,在HDFS的Namespace中创建一个文件条目(Entry),该条目没有任何的Block
3、通过FSDataOutputStream对象,向DataNode写入数据,数据首先被写入FSDataOutputStream对象内部的Buffer中,然后数据被分割成一个个Packet数据包
4、以Packet最小单位,基于Socket连接发送到按特定算法选择的HDFS集群中一组DataNode(正常是3个,可能大于等于1)中的一个节点上,在这组DataNode组成的Pipeline上依次传输Packet
5、这组DataNode组成的Pipeline反方向上,发送ack,最终由Pipeline中第一个DataNode节点将Pipeline ack发送给Client
6、完成向文件写入数据,Client在文件输出流(FSDataOutputStream)对象上调用close方法,关闭流
7、调用DistributedFileSystem对象的complete方法,通知NameNode文件写入成功
DFSOutputStream内部原理
打开一个DFSOutputStream流,Client会写数据到流内部的一个缓冲区中,然后数据被分解成多个Packet,每个Packet大小为64k字节,每个Packet又由一组chunk和这组chunk对应的checksum数据组成,默认chunk大小为512字节,每个checksum是对512字节数据计算的校验和数据。
当Client写入的字节流数据达到一个Packet的长度,这个Packet会被构建出来,然后会被放到队列dataQueue中,接着DataStreamer线程会不断地从dataQueue队列中取出Packet,发送到复制Pipeline中的第一个DataNode上,并将该Packet从dataQueue队列中移到ackQueue队列中。ResponseProcessor线程接收从Datanode发送过来的ack,如果是一个成功的ack,表示复制Pipeline中的所有Datanode都已经接收到这个Packet,ResponseProcessor线程将packet从队列ackQueue中删除。
在发送过程中,如果发生错误,所有未完成的Packet都会从ackQueue队列中移除掉,然后重新创建一个新的Pipeline,排除掉出错的那些DataNode节点,接着DataStreamer线程继续从dataQueue队列中发送Packet。
源码下载:链接:http://pan.baidu.com/s/1nvGCj9J 密码:h6l1
- 一起艳学大数据Hadoop(三)——java操作HDFS的增删改查
- hadoop的HDFS之增删改查基本操作
- 利用HDFS java API增删改查操作
- 利用HDFS java API增删改查操作(转载)
- MyBatis学习笔记(三)数据的增删改查 CRUD操作
- Hibernate实现数据的增删改查(CRUD)操作
- java实现对HDFS增删改查(CRUD)等操作
- java实现对HDFS增删改查(CRUD)等操作
- java操作mysql的增删改查
- java操作mysql的增删改查
- java操作mysql的增删改查
- Hbase 的java 增删改查操作
- HDFS Java代码进行增删改查
- hadoop|hdfs 基本操作-增删查
- extjs4 数据的增删改查操作 数据的操作
- 数据存储和访问—数据的增删改查
- 数据库基础入门(三)——通过JDBC对数据库进行增删改查操作
- 数据库基础入门(三)——通过JDBC对数据库进行增删改查操作
- Sequence_Queue(顺序队列)
- D. Daydreaming Stockbroker
- Python报错module 'scipy.misc' has no attribute 'imresize'
- 下载
- 零基础学WEB前端-CSS
- 一起艳学大数据Hadoop(三)——java操作HDFS的增删改查
- 嵌入式多路温湿度监控系统(六主控程序+进程间通信处理线程)
- lightoj 1305 Area of a Parallelogram (几何数学)
- Gym 101142C CodeCoder vs TopForces【思维+Dfs】
- Java中的Comparable和Comparator
- QStyleSheet样式表学习
- 从零开始写Python爬虫 --- 1.9 爬虫实践:悦音台mv排行榜与反爬虫技术
- 编码踩过的坑(宏)
- matlab监控摄像头获取外界图像