/** * 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参数。
相关推荐
- **io.file.buffer.size**: 文件IO操作时使用的缓冲区大小,默认为131072字节。 ##### 2.2 `hdfs-site.xml`配置详解 `hdfs-site.xml`文件用于配置HDFS特有的属性,这些属性对于HDFS的运行至关重要。 - **dfs....
例如,`LISTSTATUS`用于列出目录内容,`OPEN`用于读取文件,`offset`用于指定读取文件的起始位置,`length`定义了要读取的数据长度,`buffersize`设置缓冲区大小,以及`noredirect`参数,用于控制是否将请求重定向到...
3. **打开输出流**:调用`FileSystem.create(Path path, FsPermission permission, boolean overwrite, int bufferSize, short replication, long blockSize, Progressable progress)`创建一个`FSDataOutputStream`...
在HDFS中上传文件,我们需要创建一个`FileSystem`实例,然后使用`FileSystem.create()`方法。这个方法接受一个`Path`对象作为文件路径,并可配置一些参数,如缓冲区大小、权限等。例如: ```java Configuration ...
- **文件上传**:使用`FileSystem.create(Path path, FsPermission permission, boolean overwrite, int bufferSize, short replication, long blockSize, Progressable progress)`创建输出流,然后写入数据。...
本文将根据提供的文档信息,深入探讨 HDFS 中涉及的增、删、改操作以及相关的配置参数。 #### 一、HDFS 基础配置 HDFS 的配置主要分为两部分:`hdfs-site.xml` 和 `core-site.xml`。这两个文件中包含了 HDFS 运行...
* IO_FILE_BUFFER_SIZE_KEY:文件缓存大小配置 * getDefaultReplication:默认副本因子配置 * getDefaultBlockSize:默认块大小配置 结论 HDFS的读写数据流程是其核心组件,通过NameNode和DataNode的交互来实现...
例如,`hadoop.logfile.size`定义了日志文件的最大大小,而`io.file.buffer.size`设置了读写操作的缓冲区大小,影响I/O性能。`io.compression.codecs`列出了支持的压缩算法,如DefaultCodec、GzipCodec等。 了解和...
1. **理解HDFS的角色**:掌握HDFS在Hadoop体系结构中的核心作用。 2. **熟练Shell命令**:能够通过Shell命令操作HDFS进行基本的数据管理。 3. **熟悉Java API**:掌握如何使用Java API进行HDFS的操作,包括文件的...
总之,配置文件在IT系统中起着桥梁的作用,它们连接了底层硬件和上层服务,使系统能够根据需求和环境变化进行适应。对于Hadoop这样的大数据处理平台,`hdfs-site.xml`和`core-site.xml`的配置更是直接决定了系统的...
8. `bufferSize`:HDFS写入缓冲区大小,影响写入性能。 五、使用场景与最佳实践 1. 数据备份:定期将关系数据库的数据备份到HDFS,提高数据安全性。 2. 数据迁移:在不同HDFS集群间迁移大量数据,利用DataX的并发...
`dfs.blocksize`则是HDFS中每个数据块的大小,默认为128MB,可以根据实际数据规模进行调整。 转向`yarn-site.xml`,这是针对YARN(Yet Another Resource Negotiator)的配置文件。YARN是Hadoop的资源管理器,负责...
* core-site.xml:fs.defaultFSNameNode URI、io.file.buffer.size 等 * hdfs-site.xml:dfs.namenode.name.dir、dfs.namenode.hosts、dfs.blocksize 等 * yarn-site.xml:yarn.resourcemanager.address、yarn....
7. `dfs.stream-buffer-size`: 这个属性定义了Hadoop在读取或写入HDFS文件时使用的缓冲区大小,例如这里设置为131072字节,通常用于提高I/O性能。 除了上述配置,实际搭建过程中还需要考虑其他配置,例如`mapred-...
- `core-site.xml`中的`fs.defaultFS`指定了HDFS的URL,`io.file.buffer.size`控制I/O缓冲区大小。 - `hdfs-site.xml`中的`dfs.replication`定义了默认的副本因子,`dfs.blocksize`设定默认的块大小。 - `yarn-...
例如,`fs.defaultFS`属性指定了HDFS的名称节点地址,而`io.file.buffer.size`则控制了文件读写时的缓冲区大小。 总的来说,`hadoopConf`是一系列配置文件,它们共同决定了Hadoop集群的运行方式和性能表现。正确地...
- **io.file.buffer.size**:设置缓存大小,影响数据传输速度和内存消耗。推荐值为64KB(65536字节),有助于提高I/O操作效率。 - **dfs.balance.bandwidthPerSec**:限制HDFS平衡操作的最大网络带宽。默认值可能过...
- **Buffer size:** 设置合适的缓冲区大小可以提高读写性能。 - **Record Compressors:** 如BZip2,适用于更高效的压缩,但会牺牲一些写入速度。 5. **SequenceFile与MapReduce** 在MapReduce作业中,...