`
coderplay
  • 浏览: 576943 次
  • 性别: Icon_minigender_1
  • 来自: 广州杭州
社区版块
存档分类
最新评论

Hadoop的Mapper是怎么从HDFS上读取TextInputFormat数据的

阅读更多
LineRecordReader.next(LongWritable key, Text value)
  LineReader.readLine(Text str, int maxLineLength, int maxBytesToConsume)
    DataInputStream.read(byte b[])  /* DFSDataInputStream继承此方法 */
      DFSInputStream.read(long position, byte[] buffer, int offset, int length)
        DFSInputStream.fetchBlockByteRange(LocatedBlock block, long start,long end, byte[] buf, int offset)
          BlockReader.readAll(byte[] buf, int offset, int len)
            FSInputChecker.readFully(InputStream stm, byte[] buf, int offset, int len)
              BlockReader.read(byte[] buf, int off, int len)
                FSInputChecker.read(byte[] b, int off, int len)
                  FSInputChecker.read1(byte b[], int off, int len)
                    FSInputChecker.readChecksumChunk(byte b[], final int off, final int len)
                      BlockReader.readChunk(long pos, byte[] buf, int offset, int len, byte[] checksumBuf)
                        IOUtils.readFullyreadFully( InputStream in, byte buf[], int off, int len)
                          DataInputStream.read(byte b[], int off, int len)
                            BufferedInputStream.read(byte b[], int off, int len)
                              BufferedInputStream.read1(byte[] b, int off, int len)
                                org.apache.hadoop.net.SocketInputStream.read(byte[] b, int off, int len)
                                  org.apache.hadoop.net.SocketInputStream.read(ByteBuffer dst)
                                    org.apache.hadoop.net.SocketIOWithTimeout.doIO(ByteBuffer buf, int ops)
                                      org.apache.hadoop.net.SocketInputStream.Reader.performIO(ByteBuffer buf)
                                        sun.nio.ch.SocketChannelImpl.read(ByteBuffer buf)
                                          sun.nio.ch.IOUtiil.read(FileDescriptor fd, ByteBuffer dst, long position, NativeDispatcher nd, Object lock)
                                            sun.nio.ch.IOUtiil.readIntoNativeBuffer(FileDescriptor fd, ByteBuffer bb, long position, NativeDispatcher nd,Object lock)
                                              sun.nio.ch.SocketDispatcher.read(FileDescriptor fd, long address, int len)
                                                 sun.nio.ch.SocketDispatcher.read0(FileDescriptor fd, long address, int len) /* Native Method,根据不同的JDK实现不同 */
分享到:
评论
8 楼 左门马 2013-03-21  
hey!
我在源码里插标记测试了一下,好像并不会调用 DFSInputStream.read(long position, byte[] buffer, int offset, int length)   和
        DFSInputStream.fetchBlockByteRange(LocatedBlock block, long start,long end, byte[] buf, int offset)

而是 DFSInputStream.read(byte[] buffer, int offset, int length) 。

也就是不指定position的read方法。

我测试的源码是0.20.2的,不知楼主是哪个版本
7 楼 zk279444107 2012-03-20  
herry 写道
如果jobconf指定的FS是本地的文件系统,不上传到HDFS中,那如何能够实现在各个节点实现分布式的计算?

这个问题也在困扰我,能否解答下?
6 楼 herry 2011-03-15  
如果jobconf指定的FS是本地的文件系统,不上传到HDFS中,那如何能够实现在各个节点实现分布式的计算?
5 楼 coderplay 2011-02-28  
herry 写道
提交Job任务,输入文件的问题
通过它:FileInputFormat.addInputPath(jobconf, new Path(args[0]));
指定执行M/R作业的文件的路径。
这些文件可能有不同的来源,如本地文件系统,或者分布式文件系统。
1.最终都会上传到Hadoop的HDFS中吗?
不管Hadoop使用的是何种FS, input path是不上传的。它就是在该jobconf指定的FS之上. 一般情况下是指HDFS.

2.这个过程是啥时候上传上去的?
作业提交会上传job.jar, job.split和jobconf.xml

3.如果数据来源已经存在了HDFS中,那么还会再上传一次吗?

从不会上传.
4 楼 herry 2011-01-27  
提交Job任务,输入文件的问题
通过它:FileInputFormat.addInputPath(jobconf, new Path(args[0]));
指定执行M/R作业的文件的路径。
这些文件可能有不同的来源,如本地文件系统,或者分布式文件系统。
1.最终都会上传到Hadoop的HDFS中吗?
2.这个过程是啥时候上传上去的?
3.如果数据来源已经存在了HDFS中,那么还会再上传一次吗?
3 楼 bupt04406 2010-06-02  
coderplay 写道
bupt04406 写道
请问这个怎么弄出来的呢?

人肉跟踪, 手工打出来的~


嗯,:-)
2 楼 coderplay 2010-06-02  
bupt04406 写道
请问这个怎么弄出来的呢?

人肉跟踪, 手工打出来的~
1 楼 bupt04406 2010-06-01  
请问这个怎么弄出来的呢?

相关推荐

    hadoop api 操作代码

    2. **HDFS**:HDFS是Hadoop的数据存储系统,它将大文件分割成块,并在多台服务器上进行冗余存储,以确保高可用性和容错性。Hadoop API中与HDFS相关的类有`FileSystem`、`DFSClient`和`FSDataInputStream/...

    Hadoop入门程序java源码

    这样做的好处在于提高了数据的可靠性和访问速度,因为可以从多个地方并行读取数据。HDFS的设计原则是容错性强,即使有节点故障,也能保证数据的安全性和可用性。 MapReduce是Hadoop处理大数据的编程模型,它将复杂...

    hadoop的api文档

    Hadoop API提供了对分布式文件系统HDFS和MapReduce编程模型的接口,使得开发者能够构建大规模数据处理的应用。下面将详细介绍这两个主要部分的关键知识点: 1. HDFS API: - `FileSystem`类:它是访问HDFS的主要...

    hadoop api及Hadoop结构与设计

    Hadoop是大数据处理领域的重要工具,其核心组件包括HDFS(Hadoop Distributed File System)和MapReduce计算框架。本文将深入探讨Hadoop API以及Hadoop的结构与设计,旨在为学习者提供全面的理解。 首先,我们来看...

    hadoop2API帮助文档

    - Pig、Hive、HBase、Spark等生态系统组件也提供了与Hadoop集成的API,使得开发者可以轻松地在Hadoop平台上构建复杂的数据处理流程。 在解压缩后的'hadoop2.7API'文件中,开发者可以找到详细的类和方法文档,了解...

    精通HADOOP

    通过使用HDFS进行数据存储,以及MapReduce进行数据处理,Hadoop能够高效地管理和分析海量数据。学习Hadoop不仅有助于理解和处理大数据问题,还能为开发高效的数据处理应用提供坚实的基础。通过本书的学习,读者将...

    hadoop的JAVA编程包

    Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它允许在廉价硬件上处理大量数据,非常适合大数据处理。Java编程包是Hadoop的核心组成部分,因为Hadoop主要是用Java编写的,并且提供了丰富的API供开发者...

    hadoop电子书

    这本书详尽地介绍了Hadoop生态系统的核心组件及其工作原理,帮助读者掌握如何在大规模数据集上进行高效的数据处理。 Hadoop是一个开源的框架,最初由Doug Cutting创建,用于存储和处理海量数据。它的设计思想源于...

    云计算hadoop java写的源代码

    HDFS是一个分布式文件系统,可以将大文件分割成多个块,并在集群中的多台机器上进行存储,确保高可用性和容错性。MapReduce是Hadoop的数据处理模型,它通过“映射”(map)和“化简”(reduce)两个阶段,对数据进行并行...

    hadoop开发所需类

    在Hadoop生态系统中,开发工作通常涉及到与Hadoop文件系统(HDFS)的交互,以及对分布式计算模型MapReduce的理解和应用。以下是一些在Hadoop开发中必不可少的知识点: 1. **Hadoop核心组件**:Hadoop由几个关键组件...

    hadoop-API.zip_Hadoop学习_hadoop api

    Hadoop是大数据处理领域的一个核心框架,其API的掌握对于开发者来说至关重要。Hadoop API提供了丰富的功能,使得用户能够高效地处理大规模数据。这个“hadoop-API.zip”压缩包包含了Hadoop的中文版API文档,对于正在...

    hadoop Java API

    在大数据处理领域,Hadoop是一个不可或缺的开源框架,它提供...总结,Hadoop Java API是开发分布式应用程序的基础,涵盖了从数据存储到计算的全链条操作。理解和掌握这些知识点,将有助于构建高效、可靠的分布式系统。

    hadoop 0.21.0 API chm

    - `InputFormat` 和 `OutputFormat`:定义数据的输入和输出格式,如`TextInputFormat`和`TextOutputFormat`。 - `Mapper` 和 `Reducer`:MapReduce的核心组件,分别处理输入数据的映射和归约操作。 - `...

    HADOOP权威指南++中文版.rar 完整版

    2. **HDFS**:HDFS是Hadoop的数据存储系统,它将大型数据集分布在大量的廉价硬件上,通过冗余和故障检测机制确保高可用性。HDFS遵循主从架构,由NameNode和DataNode组成,NameNode负责元数据管理,DataNode负责实际...

    Hadoop应用开发详解

    2. **MapReduce编程**:学习编写Mapper和Reducer类,理解输入输出格式,如TextInputFormat和TextOutputFormat。此外,还需要掌握中间键值对的排序和分区规则。 3. **Hadoop配置**:理解hadoop-site.xml和core-site....

    Hadoop-2.8.0-Day05-MapReduce编程-课件与资料.zip

    Hadoop MapReduce还支持多种输入输出格式,如TextInputFormat和TextOutputFormat,适用于处理文本数据;而对于非文本数据,如图片或音频,需要自定义输入输出格式。此外,Partitioner控制数据如何在Reducer之间分配...

    hadoop.zip

    总结,Java开发者通过理解Hadoop的HDFS和MapReduce机制,结合实际编程实践,可以有效地处理大规模数据。本文作为初学者的入门指南,旨在提供基础操作和理解,后续的学习之路还需要不断探索和实践,才能真正驾驭...

    Hadoop海量文本处理1

    它基于两个主要组件:**HDFS(Hadoop Distributed File System)** 和 **MapReduce**。这两个组件协同工作,能够高效地处理大量数据。 1. **HDFS(Hadoop Distributed File System)** - **概述**:HDFS 是一种...

    Hadoop集群扩容操作手册

    -inputformat org.apache.hadoop.mapred.TextInputFormat \ -outputformat org.apache.hadoop.mapred.TextOutputFormat 在本示例中,我们使用了BZip2Codec对数据进行压缩。该方法可以大大减少存储空间。

    Hadoop的MapReduce执行过程介绍.pdf

    Reduce阶段的结果通常就是最终的分析结果,保存在HDFS(Hadoop Distributed File System)上。 3. MapReduce程序编写: 开发MapReduce程序时,程序员需要实现Mapper和Reducer两个主要函数。Mapper的`map()`函数处理...

Global site tag (gtag.js) - Google Analytics