1、修改hdfs-site.xml
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
2、目前如何在命令行里面给HDFS文件中追加内容我还没找到相应的方法。但是,我们可以通过Hadoop提供的API实现文件内容追加,如何实现?这里我写了一个简单的测试程序:
public class AppendContent {
public static void main(String[] args) {
String hdfs_path = "/sort/sort";//文件路径
Configuration conf = new Configuration();
FileSystem fs = null;
try {
fs = FileSystem.get(URI.create(hdfs_path), conf);
//要追加的文件流,inpath为文件
OutputStream out = fs.append(new Path(hdfs_path));
Writer writer = new OutputStreamWriter(out);
BufferedWriter bfWriter = new BufferedWriter(writer);
bfWriter.write("good!!");
if(null != bfWriter){
bfWriter.close();
}
if(null != writer){
writer.close();
}
if(null != out){
out.close();
}
System.out.println("success!!!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
3、将代码打包运行
4、如果报错:
Exception in thread "main" java.io.IOException: Failed to replace a bad datanode on the existing pipeline due to no more good datanodes being available to try. (Nodes: current=[10.10.22.17:50010, 10.10.22.18:50010], original=[10.10.22.17:50010, 10.10.22.18:50010]). The current failed datanode replacement policy is DEFAULT, and a client may configure this via 'dfs.client.block.write.replace-datanode-on-failure.policy' in its configuration.at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.findNewDatanode(DFSOutputStream.java:960)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.addDatanode2ExistingPipeline(DFSOutputStream.java:1026)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.setupPipelineForAppendOrRecovery(DFSOutputStream.java:1175)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:531)
5、再次修改hdfs-site.xml
<property>
<name>dfs.client.block.write.replace-datanode-on-failure.policy</nam
e>
<value>NEVER</value>
</property>
<property>
<name>dfs.client.block.write.replace-datanode-on-failure.enable</nam
e>
<value>true</value>
</property>
6:
dfs.client.block.write.replace-datanode-on-failure.enable=true
在进行pipeline写数据(上传数据的方式)时,如果DN或者磁盘故障,客户端将尝试移除失败的DN,然后写到剩下的磁盘。一个结果是,pipeline中的DN减少了。这个特性是添加新的DN到pipeline。这是一个站点范围的选项。当集群规模非常小时,例如3个或者更小,集群管理者可能想要禁止掉此特性。
dfs.client.block.write.replace-datanode-on-failure.policy=DEFAULT
此属性仅在dfs.client.block.write.replace-datanode-on-failure.enable设置为true时有效。
ALWAYS: 总是添加新的DN
NEVER: 从不添加新的DN
DEFAULT: 设r是副本数,n是要写的DN数。在r>=3并且floor(r/2)>=n或者r>n(前提是文件是hflushed/appended)时添加新的DN。
分享到:
相关推荐
8. 内容追加:向HDFS文件追加内容,用户可以选择追加位置(开头或结尾)。 9. 文件删除:删除指定的HDFS文件。 10. 文件移动:将文件从源路径移动到目标路径。 在编程方面,实验要求: - 创建一个`...
向HDFS文件追加数据 ```java private static void appendToHdfs() throws IOException { FileSystem fs = FileSystem.get(conf); FSDataOutputStream out = fs.append(new Path("hdfs://192.168.0.113:9000/user/...
在“/home/hadoop/shuguan21”目录下新建一个 Linux 本地文件“本人姓名-4.txt”,并将该文件追加到 HDFS 中“本人姓名-2.txt”文件的结尾,并显示文件内容。然后,在“/hom/hadoop/shuguan21”目录下新建 Linux ...
### HDFS小文件处理方案详解 #### 一、概述与挑战 HDFS(Hadoop Distributed File System)设计初衷是为了高效地存储和处理大型文件。然而,在面对大量的小文件时,HDFS面临着诸多挑战: 1. **内存限制**:...
- `-appendToFile`用于追加本地文件到HDFS文件末尾。 - `-cat`用于查看HDFS文件内容。 - `-count`统计HDFS路径下文件和目录的数量。 - `-cp`复制HDFS上的文件或目录。 - `-get`将HDFS上的文件或目录下载到本地...
《HDFS文件系统技术详解》 Hadoop分布式文件系统(HDFS)是大数据处理的核心组件之一,它提供了高容错性和高吞吐量的数据存储和访问能力。本文将深入探讨HDFS的文件读写机制、副本策略、Shell接口以及Java API,以...
Hadoop HDFS文件系统技术概述 Hadoop Distributed File System(HDFS)是一种分布式文件系统,旨在提供高容错、可靠、可扩展的文件存储解决方案。HDFS来自Google的GFS(Google File System),是GFS的开源版本。 ...
Hadoop HDFS文件系统技术概述 概述:HDFS(Hadoop Distributed File System)是Hadoop生态系统中的核心组件,作为分布式文件系统,HDFS提供了高容错、可扩展、可靠的存储解决方案,广泛应用于大数据处理和分析领域。...
- **-appendToFile <localsrc> **:将本地文件追加到 HDFS 文件的末尾。 - **-cat [-ignoreCrc] **:显示 HDFS 文件的内容。忽略 CRC 校验。 - **-checksum **:显示文件的校验和。 - **-chgrp [-R] GROUP PATH**:...
- **追加文件内容**:使用`hdfs dfs -appendToFile`命令,如`hdfs dfs -appendToFile bigdata3.txt /user/text01/bigdata.txt`,将`bigdata3.txt`内容追加到`bigdata.txt`末尾。 - **合并文件**:通过`hdfs dfs -...
9. 高级特性:HDFS支持文件的追加操作,以及在文件系统内的文件移动和重命名。HDFS还引入了快照功能,允许用户在特定时间点创建文件系统的快照,用于备份和恢复。 10. 实战应用:HDFS广泛应用于互联网公司,如...
例如,可以使用以下命令将一个或多个本地文件追加到HDFS文件中: - `hdfs dfs -appendToFile localfile /user/hadoop/hadoopfile` - `hdfs dfs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile` - ...
5.1.4 HDFS文件与操作方法 451 5.1.5 HDFS文件读写方法 452 5.2 文件读操作与输入流 452 5.2.1 打开文件 452 5.2.2 读操作――DFSInputStream实现 461 5.3 文件短路读操作 481 5.3.1 短路读共享内存 482...
* hadoop dfs:用于管理HDFS文件系统的命令,例如查看文件列表、创建目录、删除文件等。 * hdfs dfs:用于管理HDFS文件系统的命令,例如查看文件列表、创建目录、删除文件等。 实验目的 本实验的目的旨在熟悉常用的...
该命令可以将本地文件追加到HDFS中的文件。使用方法:hadoop fs -appendToFile <local_file> <hdfs_file>。 -cat命令 -cat命令用于显示HDFS中的文件内容。该命令可以显示指定文件的内容。使用方法:hadoop fs -cat...
Shell命令和java两种方式完成了常用的HDFS操作,有源代码及运行结果截图 ...(8)向HDFS中指定的文件追加内容,由用户指定内容追加到原有文件的开头或结尾 (9)删除HDFS中指定的文件 (10)在HDFS中,将文件从源路
此外,HDFS的客户端库提供了访问HDFS文件的API,使得在Hadoop应用程序中处理文件变得容易。 综上所述,HDFS作为Hadoop生态系统的核心组成部分,不仅在设计理念上借鉴了已有的分布式文件系统的经验,还针对大数据...
在Shell命令操作中,学生首先通过`hdfs dfs -put`命令将本地文件上传至HDFS,然后使用`-test -e`检查文件是否存在,最后通过`-appendToFile`命令追加内容或`-copyFromLocal -f`覆盖原有文件。这些命令展示了HDFS的...
2. **追加内容**:为了向HDFS中的文件追加内容,我们需要打开已存在的文件并使用`FSDataOutputStream`的`append`方法。这将创建一个输出流,所有写入的数据都会追加到文件的末尾。这里我们使用`FileInputStream`读取...