HDFS文件读写流程 (转)】的更多相关文章

(二)HDFS数据流   作为一个文件系统,文件的读和写是最基本的需求,这一部分我们来了解客户端是如何与HDFS进行交互的,也就是客户端与HDFS,以及构成HDFS的两类节点(namenode和datanode)之间的数据流是怎样的. 1.剖析文件读取过程   客户端从HDFS读取文件,其内部的读取过程实际是比较复杂的,可以用下图来表示读取文件的基本流程.   对于客户端来说,首先是调用FileSystem对象的open()方法来打开希望读取的文件,然后DFS会返回一个文件输入流FSDataIn…
一.HDFS HDFS全称是Hadoop Distributed System.HDFS是为以流的方式存取大文件而设计的.适用于几百MB,GB以及TB,并写一次读多次的场合.而对于低延时数据访问.大量小文件.同时写和任意的文件修改,则并不是十分适合. 目前HDFS支持的使用接口除了Java的还有,Thrift.C.FUSE.WebDAV.HTTP等.HDFS是以block-sized chunk组织其文件内容的,默认的block大小为64MB,对于不足64MB的文件,其会占用一个block,但实…
文件读取的过程如下: 使用HDFS提供的客户端开发库Client,向远程的Namenode发起RPC请求: Namenode会视情况返回文件的部分或者全部block列表,对于每个block,Namenode都会返回有该block拷贝的DataNode地址: 客户端开发库Client会选取离客户端最接近的DataNode来读取block:如果客户端本身就是DataNode,那么将从本地直接获取数据. 读取完当前block的数据后,关闭与当前的DataNode连接,并为读取下一个block寻找最佳的…
HDFS的读写流程(面试重点) 目录 HDFS的读写流程(面试重点) HDFS写数据流程 网络拓扑-节点距离计算 机架感知(副本存储节点的选择) HDFS的读数据流程 HDFS写数据流程 客服端把D://ss.avi文件传送到集群 1.首先需要创建一个Distributed FileSystem(分布式文件系统)客服端.向NameNode请求上传文件.上传到/user/atguigu/ss.avi路径. 2.NameNode 检查用户是否有权限,检查目标路径/user/atguigu是否可行,检…
HDFS的读写流程--宏观与微观 HDFS:分布式文件系统,负责存放数据 分布式文件系统:就是将我们的数据放到多台电脑上存储. 写数据:就是将客户端上的数据上传到HDFS 宏观过程 客户端向HDFS发送读写数据请求 hdfs dfs -put student.txt /shujia/ 客户端发送命令将student.txt文件上传到/shujia/目录下 Filesystem通过rpc调用namenode的put方法 NN(NameNode)首先检查是否有足够的空间权限等条件来创建这个文件,或者…
HDFS 文件读写过程 HDFS 文件读取剖析 客户端通过调用FileSystem对象的open()来读取希望打开的文件.对于HDFS来说,这个对象是分布式文件系统的一个实例. DistributedFileSystem通过RPC来调用namenode,以确定文件的开头部分的块位置.对于每一块,namenode返回具有该块副本的datanode地址.此外,这些datanode根据他们与client的距离来排序(根据网络集群的拓扑).如果该client本身就是一个datanode,便从本地data…
环境 OS: Ubuntu 16.04 64-Bit JDK: 1.7.0_80 64-Bit Hadoop: 2.6.5 原理 <权威指南>有两张图,下次po上来好好聊一下 实测 读操作 创建在hadoop目录下myclass(放.java和.class文件)和input目录 在input目录下建立quangle.txt文件,并写入内容 将本地文件上传到hdfs的相应文件夹(笔者此处为/class4)中: hadoop fs -copyFromLocal quangle.txt /class…
1.2. 客户端向NameNode发起创建文件的请求,在NameNode上创建一个文件名,并且返回一个输出流 3.客户端向输出流发起写入数据的请求 4.输出流向NameNode请求写数据,NameNode根据请求的数据的大小,给数据分块,并且返回指定数据块对应的DataNode 5. 6.客户端拿到了NameNode分配的数据块需要写到的DataNode信息后,客户端将数据写到对应的DataNode中,并且完成数据块的备份 7.如果每一个接收到了数据块的DataNode上的数据块写完或者备份完后…
概念 文件系统 磁盘进行读写的最小单位:数据块,文件系统构建于磁盘之上,文件系统的块大小是磁盘块的整数倍. 文件系统块一般为几千字节,磁盘块一般512字节. hdfs的block.pocket.chunk block hdfs的块,常说的block,是这三个里最大的单位.默认128MB(配置参数:dfs.block.size). 128MB的原因:块太小会增加寻址时间:块太大会减少Map的任务(通常一个Map只处理一个块的数据). 注:文件的大小小于一个block并不会占据整个block的空间,…
一.HDFS读过程 1.1 HDFS API 读文件 Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); Path file = new Path("demo.txt"); FSDataInputStream inStream = fs.open(file); String data = inStream.readUTF(); System.out.println(data);…