
hadoop
文章平均质量分 78
乘风如水
知识的对立面不是无知,而是不去思考。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HDFS读文件的源码(hadoop2.6.0)详解--read函数(4)
接下来我们开始分析最后一个函数。ByteBuffer read(ByteBufferPool bufferPool, int maxLength)代码如下:@Override public ByteBuffer read(ByteBufferPool bufferPool, int maxLength, EnumSet<ReadOption> opts) ...原创 2018-12-30 00:33:47 · 265 阅读 · 0 评论 -
BlockReader类的创建和读操作--创建函数(2)--getBlockReaderLocal()
getBlockReaderLocal函数这个函数用于短路读(HDFS-347)操作,创建的为BlockReaderLocal类对象,代码如下:private BlockReader getBlockReaderLocal() throws InvalidToken { if (LOG.isTraceEnabled()) { LOG.trace(this + ": t...原创 2019-01-13 17:16:15 · 504 阅读 · 0 评论 -
BlockReader类的创建和读操作--创建函数(1)--getLegacyBlockReaderLocal()
BlockReader类的创建代码调用的是BlockReaderFactory类中的build函数,代码如下:/** * Build a BlockReader with the given options. * * This function will do the best it can to create a block reader that meets * ...原创 2019-01-05 22:13:19 · 459 阅读 · 0 评论 -
BlockReader类的创建和读操作--创建函数(3)--getRemoteBlockReaderFromDomain()
getRemoteBlockReaderFromDomain()函数代码如下:/** * Get a RemoteBlockReader that communicates over a UNIX domain socket. * * @return The new BlockReader, or null if we failed to create the bloc...原创 2019-01-13 21:25:20 · 255 阅读 · 0 评论 -
BlockReader类的创建和读操作--创建函数(4)--getRemoteBlockReaderFromTcp()
getRemoteBlockReaderFromTcp()函数代码如下:/** * Get a RemoteBlockReader that communicates over a TCP socket. * * @return The new BlockReader. We will not return null, but instead throw * ...原创 2019-01-13 21:34:49 · 427 阅读 · 0 评论 -
BlockReader接口实现类的read操作----BlockReaderLocalLegacy类中read(ByteBuffer buf)函数
之前我们分析了四个构造BlockReader类对象函数1、getLegacyBlockReaderLocal(),该函数返回一个BlockReaderLocalLegacy类对象2、getBlockReaderLocal(),该函数返回一个BlockReaderLocal类对象3、getRemoteBlockReaderFromDomain(),该函数返回一个RemoteBlockRe...原创 2019-02-16 15:21:46 · 507 阅读 · 1 评论 -
BlockReader接口实现类的read操作----BlockReaderLocal类中read(ByteBuffer buf)函数
BlockReaderLocal类中read(ByteBuffer buf)函数代码如下:@Override public synchronized int read(ByteBuffer buf) throws IOException { //判断能否跳过数据校验 boolean canSkipChecksum = createNoChecksumContext(); ...原创 2019-01-22 00:42:25 · 303 阅读 · 0 评论 -
BlockReader接口实现类的read操作----BlockReaderLocal类中read(byte[] arr, int off, int len)函数
read(byte[] arr, int off, int len)函数该函数用来将off位置大小为len的数据拷贝到arr字节数组中,代码如下:@Override public synchronized int read(byte[] arr, int off, int len) throws IOException { boolean canSkipChe...原创 2019-01-22 23:38:35 · 360 阅读 · 0 评论 -
HDFS读文件流程概述
我们之前讲过FSDataInputStream类中的read函数(总共有四篇,网址分别是read(1)、read(2)、read(3)、read(4)),这些read函数会调用DFSInputStream类中的相应的read函数,在DFSInputStream类的read函数分别有://第一个read函数public synchronized int read()//第二个read函数...原创 2019-02-14 16:05:43 · 489 阅读 · 0 评论 -
BlockReader接口实现类的read操作----BlockReaderLocalLegacy类中read(byte[] buf, int off, int len)函数
该函数代码如下:@Override public synchronized int read(byte[] buf, int off, int len) throws IOException { if (LOG.isTraceEnabled()) { LOG.trace("read off " + off + " len " + len); } //如...原创 2019-02-16 15:46:26 · 220 阅读 · 0 评论 -
BlockReader接口实现类的read操作----RemoteBlockReader2类中read(ByteBuffer buf)函数
前面我们将了两个BlockReader接口实现类的read函数,这两个接口实现类分别为BlockReaderLocal类和BlockReaderLocalLegacy类,这两个类都是基于本地读的,就是客户端和datanode在同一台服务器上。而RemoteBlockReader2类是基于UNIX domain socket或者TCP socket,具体是哪一个依赖于配置文件。接下来我们开始分析Re...原创 2019-02-16 18:04:43 · 454 阅读 · 0 评论 -
BlockReader接口实现类的read操作----RemoteBlockReader2类中read(byte[] buf, int off, int len)函数
函数代码如下:@Override public synchronized int read(byte[] buf, int off, int len) throws IOException { UUID randomId = null; if (LOG.isTraceEnabled()) { r...原创 2019-02-16 18:09:23 · 263 阅读 · 0 评论 -
HDFS中文件短路读----概述
接下来我们将分三个部分来讲述hdfs中文件短路读,这部分比较重要同时也是比较复杂的,我花了不少时间才有了一个大概了解,希望我的总结能给大家带来帮助。这三个部分分别为:1、概述,讲述什么是文件短路读以及它的好处2、实现文件短路读的流程,以及相关的实现类结构我们开始进行第一个部分,文件短路读概述hadoop的一个重要思想是移动计算(把计算任务下发到数据所在的节点进行处理),而不是移动数...原创 2019-02-17 16:42:08 · 405 阅读 · 0 评论 -
HDFS客户端文件写操作---概述
前面我们用了很多文章讲解了HDFS客户端文件读操作的相关内容,现在我们开始进入到写操作部分,HDFS目前提供了三个客户端接口:DistributedFileSystem、FsShell和DFSAdmin,详细看 hadoop2.6.0源码剖析-客户端(第一部分--概述),我们这里默认采用DistributedFileSystem接口,客户端在写操作前,首先需要调用DistributedFileSy...原创 2019-02-28 00:39:23 · 412 阅读 · 0 评论 -
HDFS客户端文件写操作---FSDataOutputStream的构建过程
从上一篇文章(HDFS客户端文件写操作---概述)的示例代码中可以看到,先创建FileSytem类对象(其实这个对象就是DistributedFileSystem类对象,DistributedFileSystem类是FileSytem类的子类),我们从FileSytem类的get函数开始,该函数有两个,代码如下:/** Returns the FileSystem for this URI'...原创 2019-03-04 22:51:16 · 1489 阅读 · 0 评论 -
HDFS中文件短路读----流程结构
我们先来看一下DFSInputStream中的read的流程,虽然前面有讲过,不过我们这里再复习一下,整个流程图如下(图1):图1 只有新版的短路读才实现了短路读共享内存,也就是创建BlockReaderLocal类对象这种情况,该类对象通过在BlockReaderFactory类build函数中调用getBlockReaderLocal()获得。getBlockReaderLocal函数...原创 2019-02-27 01:37:48 · 941 阅读 · 0 评论 -
DFSInputStream类中的零拷贝数据读取----read(ByteBufferPool bufferPool,int maxLength, EnumSet<ReadOption> opts)
在阅读这篇文章前,建议先阅读这篇文章。我们回到DFSInputStream中的read函数,这些函数的逻辑都差不多,都是会创建BlockReaderFactory类对象,并执行该对象的build函数,相应的代码我在之前的文章中都有讲述,可以翻看我之前的文章,我们这里讲解函数public synchronized ByteBuffer read(ByteBufferPool buffe...原创 2019-02-15 17:54:58 · 657 阅读 · 0 评论 -
HDFS读文件的源码(hadoop2.6.0)详解--read函数(3)
接下来我们开始分析第三个函数。public ByteBuffer read(ByteBufferPool bufferPool, int maxLength,EnumSet<ReadOption> opts) 代码如下:@Override public ByteBuffer read(ByteBufferPool bufferPool, int maxLength,...原创 2018-12-30 00:30:26 · 409 阅读 · 0 评论 -
HDFS读文件的源码(hadoop2.6.0)详解--read函数(1)
在读文件的时候会调用FSDataInputStream类中相应read函数,主要有以下四种:(1)、public int read(long position, byte[] buffer, int offset, int length)(2)、public int read(ByteBuffer buf)(3)、public ByteBuffer read(ByteBufferPoo...原创 2018-12-24 22:27:57 · 994 阅读 · 0 评论 -
HDFS读文件的源码(hadoop2.6.0)详解--概论
hdfs读操作的实现比较复杂,在看了相应的源码后,我将它进行模块划分,这样更利于我们的理解和记忆。说到读操作,其实前面还有一部分就是客户端对象的创建和文件的打开操作,关于客户端对象的创建和open操作,请查看这篇文章我们先来看一下相关的概要图,图1:图1打开文件部分上面我们已经讲过了,有兴趣可以看一下上面推荐的文章,我们主要讲解读数据部分,该部分主要分三个部分,后面我们会针对每一个部分进行...原创 2018-12-22 23:47:17 · 357 阅读 · 0 评论 -
将Hadoop 2.6.0源码导入到Eclipse
我的环境:Windows 7 64bitNTFS格式文件系统Administrator用户Eclipse(Luna Service Release 2 (4.4.2))JDK 1.7(Oracle官网下载)最好不要用1.8,因为导入源码后还想编译的话会出现问题。hadoop-src-2.6.0.tar.gz(在官网下载的源码:http://www.apache.org/dyn/closer.cgi...转载 2018-07-14 17:10:24 · 243 阅读 · 0 评论 -
hadoop2.6.0源码剖析-客户端(第一部分--概述)
HDFS目前提供了三个客户端接口:DistributedFileSystem、FsShell和DFSAdmin。DistributedFileSystem为用户开发基于HDFS的应用程序提供了API,FsShell工具使用户可以通过HDFS Shell命令执行常见的文件系统操作,例如创建文件、删除文件、创建目录等。DFSAdmin则向系统管理员提供了管理HDFS的工具,例如升级、管理安全模式等操作...原创 2018-08-05 11:55:32 · 281 阅读 · 0 评论 -
hadoop2.6.0源码剖析-客户端(第二部分--DistributedFileSystem)
DistributedFileSystem这个类在包package org.apache.hadoop.hdfs中,为用户开发基于HDFS的应用程序提供了API,这个类有几个成员变量:private Path workingDir;private URI uri;private String homeDirPrefix = DFSConfigKeys.DFS_USER_HOME_DIR_P...原创 2018-08-12 12:27:18 · 1800 阅读 · 0 评论 -
hadoop2.6.0源码剖析-客户端(第二部分--Configuration)
我们来讲讲Configuration类,从名字可以看出,这个类跟配置文件有关,它的继承关系如下:这个类比较大,我们先从一个点切入,后面有需要会追加其他部分,我们的切入点是getDefaultUri函数,但如下:public static URI getDefaultUri(Configuration conf) { return URI.create(fixName(conf....原创 2018-08-07 17:48:50 · 260 阅读 · 0 评论 -
hadoop2.6.0源码剖析-客户端(第二部分--DFSClient)上(非HA代理)
我们讲解完了DistributedFileSystem,随着代码我们来到了DFSClient构造函数中,该函数代码如下:/** * Create a new DFSClient connected to the given nameNodeUri or rpcNamenode. * If HA is enabled and a positive value is set for...原创 2018-08-25 18:15:56 · 869 阅读 · 0 评论 -
hadoop2.6.0源码剖析-客户端(第二部分--读(open)HDFS文件)
在读HDFS文件前,需要先open该文件,这个调用的是org.apache.hadoop.fs.FileSystem类对象,但是由于实际创建的对象是org.apache.hadoop.hdfs.DistributedFileSystem类对象,后者是前者的子类,所以调用父类中的FSDataInputStream open(Path f, int bufferSize)函数最终会调用到子类的该函数中...原创 2018-09-24 14:42:29 · 411 阅读 · 0 评论 -
hadoop2.6.0源码剖析-客户端(第二部分--DFSClient)下(HA代理)
我们继续进入到org.apache.hadoop.hdfs.NameNodeProxies的函数public static <T> ProxyAndInfo<T> createProxy(Configuration conf,URI nameNodeUri, Class<T> xface, AtomicBoolean fallbackToSimpleAuth...原创 2018-08-31 00:07:08 · 746 阅读 · 0 评论 -
大数据架构流程解析
美团的技术架构图flume可以采集文件,socket数据包等各种形式源数据,又可以将采集到的数据输出到HDFS、hbase、hive、kafka队列等众多外部存储系统中,一般的采集需求,通过对flume的简单配置即可实现,Flume针对特殊场景也具备良好的自定义扩展能力,因此,flume可以适用于大部分的日常数据采集场景sqoopsqoop是apache旗下一款“Hadoo...原创 2018-11-09 20:35:05 · 11071 阅读 · 1 评论 -
读HDFS书笔记---第5章 客户端学习目录
第5章的内容目录如下:5.1 DFSClient实现 5.1.1 构造方法 5.1.2 关闭方法 5.1.3 文件系统管理与配置方法 5.1.4 HDFS文件与目录操作方法 5.1.5 HDFS文件读写方法5.2 文件读操作与输入流 5.2.1 打开文件 5.2...原创 2018-11-21 15:12:51 · 145 阅读 · 0 评论 -
读HDFS书笔记---5.1 DFSClient实现
5.1 DFSClient实现 5.1.1 构造方法 5.1.2 关闭方法 5.1.3 文件系统管理与配置方法 5.1.4 HDFS文件与目录操作方法 5.1.5 HDFS文件读写方法 5.1 DFSClient实现HDFS目前提供了三个客户端接口,这三个接口分别是DistributedFil...原创 2018-11-21 17:19:47 · 1124 阅读 · 0 评论 -
读HDFS书笔记---5.2 文件读操作与输入流(5.2.1)
5.2.1 打开文件 用户读取一个HDFS文件时,首先会调用DistributedFileSystem.open()方法打开这个文件,并获取文件对应的FSDataInputStream输入流,然后在这个FSDataInputStream对象上调用read方法读取数据。整个流程图如下:上图中的USERCODE为用户代码,调用DistributedFileSystem中的o...原创 2018-11-22 10:59:21 · 682 阅读 · 2 评论 -
读HDFS书笔记---5.2 文件读操作与输入流(5.2.2)---上
5.2.2 读操作--DFSInputStream实现 HDFS目前实现的读操作有三个层次,分别是网络读、短路读(short circuit read)以及零拷贝(zero copy read),它们的读取效率一次递增。网络读:网络读是最基本的一种HDFS读,DFSClient和Datanode通过建立Socket连接传输数据。短路读:当DFSClient和保存目标数据块的...原创 2018-11-22 23:45:59 · 885 阅读 · 0 评论 -
读HDFS书笔记---5.2 文件读操作与输入流(5.2.2)---下
2、BlockReaderDFSInputStream.read()方法中,调用了BlockReader对象的doRead()方法读取数据块。BlockReader是一个接口,抽象了从指定数据节点上读取数据块的类。BlockReader有三个主要的子类,如下:(1) BlockReaderLocal:进行本地短路读取(请参考短路读取相关小节)的BlockReader。当客户端与Da...原创 2018-11-24 21:47:11 · 581 阅读 · 0 评论 -
读HDFS书笔记---5.3 文件短路读操作
这一节的目录:5.3 文件短路读操作 5.3.1 短路读共享内存 5.3.2 DataTransferProtocol 5.3.3 DFSClient短路读操作流程 5.3.4 Datanode短路读操作流程在HDFS早期版本中,本地读取和远程读取的实现是一样的,客户端通过TCP套接字连接Datanode,并通过Dat...原创 2018-11-27 08:05:55 · 1033 阅读 · 0 评论 -
HDFS读文件的源码(hadoop2.6.0)详解--read函数(2)
接下来我们开始分析第二个函数。针对public int read(ByteBuffer buf)函数代码如下:@Override public int read(ByteBuffer buf) throws IOException { if (in instanceof ByteBufferReadable) { return ((ByteBufferRead...原创 2018-12-27 23:49:08 · 824 阅读 · 0 评论 -
HDFS客户端文件写操作---FSDataOutputStream的写操作01
在分析FSDataOutputStream的写操作前,我们先来了解一下它的结构,相应的结构图如图1:图1我们开始分析写函数,最终调用的是DFSOutputStream类中的write函数,而DFSOutputStream继承FSOutputSummer,FSOutputSummer类中实现了write函数,该类中有两个write函数:write(byte b[], int off, int...原创 2019-03-13 23:42:27 · 1786 阅读 · 0 评论