`
standalone
  • 浏览: 597536 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HDFS中不起作用的buffer size

阅读更多
/**
     * Create a new output stream to the given DataNode.
     * @see ClientProtocol#create(String, FsPermission, String, boolean, short, long)
     */
    DFSOutputStream(String src, FsPermission masked, boolean overwrite,
        short replication, long blockSize, Progressable progress,
        int buffersize, int bytesPerChecksum) throws IOException {
      this(src, blockSize, progress, bytesPerChecksum);

      computePacketChunkSize(writePacketSize, bytesPerChecksum);

      try {
        namenode.create(
            src, masked, clientName, overwrite, replication, blockSize);
      } catch(RemoteException re) {
        throw re.unwrapRemoteException(AccessControlException.class,
                                       QuotaExceededException.class);
      }
      streamer.start();
    }
  
    /**
     * Create a new output stream to the given DataNode.
     * @see ClientProtocol#create(String, FsPermission, String, boolean, short, long)
     */
    DFSOutputStream(String src, int buffersize, Progressable progress,
        LocatedBlock lastBlock, FileStatus stat,
        int bytesPerChecksum) throws IOException {
      this(src, stat.getBlockSize(), progress, bytesPerChecksum);
      initialFileSize = stat.getLen(); // length of file when opened

      //
      // The last partial block of the file has to be filled.
      //
      if (lastBlock != null) {
        block = lastBlock.getBlock();
        long usedInLastBlock = stat.getLen() % blockSize;
        int freeInLastBlock = (int)(blockSize - usedInLastBlock);

        // calculate the amount of free space in the pre-existing 
        // last crc chunk
        int usedInCksum = (int)(stat.getLen() % bytesPerChecksum);
        int freeInCksum = bytesPerChecksum - usedInCksum;

        // if there is space in the last block, then we have to 
        // append to that block
        if (freeInLastBlock > blockSize) {
          throw new IOException("The last block for file " + 
                                src + " is full.");
        }

        // indicate that we are appending to an existing block
        bytesCurBlock = lastBlock.getBlockSize();

        if (usedInCksum > 0 && freeInCksum > 0) {
          // if there is space in the last partial chunk, then 
          // setup in such a way that the next packet will have only 
          // one chunk that fills up the partial chunk.
          //
          computePacketChunkSize(0, freeInCksum);
          resetChecksumChunk(freeInCksum);
          this.appendChunk = true;
        } else {
          // if the remaining space in the block is smaller than 
          // that expected size of of a packet, then create 
          // smaller size packet.
          //
          computePacketChunkSize(Math.min(writePacketSize, freeInLastBlock), 
                                 bytesPerChecksum);
        }

        // setup pipeline to append to the last block XXX retries??
        nodes = lastBlock.getLocations();
        errorIndex = -1;   // no errors yet.
        if (nodes.length < 1) {
          throw new IOException("Unable to retrieve blocks locations " +
                                " for last block " + block +
                                "of file " + src);
                        
        }
        processDatanodeError(true, true);
        streamer.start();
      }
      else {
        computePacketChunkSize(writePacketSize, bytesPerChecksum);
        streamer.start();
      }
    }

 看上面代码, 没看到传进到的bufferSize最后哪里用到了。这样以来DFSClient create出来的文件并没有保存传入的bufferSize参数。

分享到:
评论
1 楼 zhousheng29 2012-06-13  
是的,确实我也查看源码,也做了试验,没有起效果。看来只能自己实现了

相关推荐

    实验2常用的HDFS操作.doc

    (1)向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件 (2)从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件...

    hdfs-secondarynamenode.png

    hdfs-secondarynamenode,nn2节点的作用,以及它的运行原理

    HDFS Comics HDFS 漫画

    HDFS是Hadoop分布式计算的存储基础。HDFS具有高容错性,可以部署在通用硬件设备上,适合数据密集型应用,并且提供对数据读写的高吞 吐量。HDFS能 够提供对数据的可扩展访问,通过简单地往集群里添加节点就可以解决...

    HDFS文件的查看

    hdfs文件的查看 hdfs fs -cat /文件名

    hdfs官方设计文档(中文)

    Hadoop 分布式文件系统 (HDFS)是一个设计为用在普通硬件设备上的分布式文件系统。它与现有的分布式文件系统有很多近似的地方,但又和这些文件系统有很明显的不同。HDFS是高容错的,设计为部署在廉价硬件上的。HDFS对...

    论文研究-一种面向HDFS中海量小文件的存取优化方法.pdf

    从HDFS中读取数据时,根据文件之间的相关性,对接下来用户最有可能访问的文件进行预取,减少了客户端对NameNode节点的访问次数,提高了文件命中率和处理速度。实验结果证明,该方法有效提升了Hadoop对小文件的存取...

    7、NIFI综合应用场景-将mysql查询出的json数据转换成txt后存储至HDFS中

    7、NIFI综合应用场景-将mysql查询出的json数据转换成txt后存储至HDFS中 网址:https://blog.csdn.net/chenwewi520feng/article/details/130620392 本文是在6、NIFI综合应用场景-离线同步Mysql数据到HDFS中基础上完成...

    HDFS管理工具HDFS Explorer下载地址、使用方法.docx

    windows平台下的HDFS文件浏览器,就像windows管理器一样管理你的hdfs文件系统。现在官网已经停止更新这款软件。...在hdfs-site.xmle文件中添加如下内容: &lt;name&gt;dfs.webhdfs.enabled &lt;value&gt;true &lt;/property&gt;

    java操作Hbase之从Hbase中读取数据写入hdfs中源码

    java操作Hbase之从Hbase中读取数据写入hdfs中源码,附带全部所需jar包,欢迎下载学习。

    hadoop-hdfs-2.9.1-API文档-中文版.zip

    赠送jar包:hadoop-hdfs-2.9.1.jar 赠送原API文档:hadoop-hdfs-2.9.1-javadoc.jar 赠送源代码:hadoop-hdfs-2.9.1-sources.jar ...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    上传文件到HDFS

    上传文件到HDFS的java代码实现。已经测试了,可以直接运行。

    hadoop hdfs配置文件详解

    hadoop的 hdfs配置文件 对文件的每项property进行中文描述 希望的家支持 过几天还会献上其他

    实验二:熟悉常用的HDFS操作

    (1)理解 HDFS在Hadoop体系结构中的角色。(2)熟练使用HDFS操作常用的 Shell命令。(3)熟悉HDFS操作常用的Java API。 A.2.2 实验平台 (1)操作系统:Linux(建议Ubuntu 16.04)。(2) Hadoop版本:2.7.1。 (3)JDK版本:1.7...

    Hadoop介绍,HDFS和MapReduce工作原理

    Hadoop介绍,HDFS和MapReduce工作原理

    14、HDFS 透明加密KMS

    14、HDFS 透明加密KMS 网址:...本文旨在简单介绍hdfs的透明加密作用及其使用。 前提依赖:hadoop环境部署好且可用。部署文章可参考本专栏相关文章。 本文分为2部分,即介绍和部署及使用。

    hdfs源码.zip

    第1章 HDFS 1 1.1 HDFS概述 1 1.1.1 HDFS体系结构 1 1.1.2 HDFS基本概念 2 1.2 HDFS通信协议 4 1.2.1 Hadoop RPC接口 4 1.2.2 流式接口 20 1.3 HDFS主要流程 22 1.3.1 HDFS客户端读流程 22 1.3.2 ...

    hadoop-hdfs-2.7.3-API文档-中文版.zip

    赠送jar包:hadoop-hdfs-2.7.3.jar; 赠送原API文档:hadoop-hdfs-2.7.3-javadoc.jar; 赠送源代码:hadoop-hdfs-2.7.3-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.7.3.pom; 包含翻译后的API文档:hadoop...

    HDFS文件操作命令与HDFS编程

    文档详细的讲述了Hadoop中HDFS文件操作命令和HDFS编程

    HDFS实例基本操作

    在安装好HDFS的前提下,此项目包含HDFS的基本操作,上传,下载,创建文件夹等。

    MR处理HDFS日志样例

    MR处理HDFS日志样例

Global site tag (gtag.js) - Google Analytics