`
乡里伢崽
  • 浏览: 112532 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

hdfs 文件的追加

    博客分类:
  • hdfs
 
阅读更多
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。


      

        
分享到:
评论

相关推荐

    实验2 熟悉常用的HDFS操作

    8. 内容追加:向HDFS文件追加内容,用户可以选择追加位置(开头或结尾)。 9. 文件删除:删除指定的HDFS文件。 10. 文件移动:将文件从源路径移动到目标路径。 在编程方面,实验要求: - 创建一个`...

    利用javaAPI访问HDFS的文件

    向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/...

    HDFS Shell命令应用数管2101李怡然2021012073(1).docx

    在“/home/hadoop/shuguan21”目录下新建一个 Linux 本地文件“本人姓名-4.txt”,并将该文件追加到 HDFS 中“本人姓名-2.txt”文件的结尾,并显示文件内容。然后,在“/hom/hadoop/shuguan21”目录下新建 Linux ...

    HDFS小文件处理方案

    ### HDFS小文件处理方案详解 #### 一、概述与挑战 HDFS(Hadoop Distributed File System)设计初衷是为了高效地存储和处理大型文件。然而,在面对大量的小文件时,HDFS面临着诸多挑战: 1. **内存限制**:...

    大数据技术之Hadoop(HDFS文件系统).doc

    - `-appendToFile`用于追加本地文件到HDFS文件末尾。 - `-cat`用于查看HDFS文件内容。 - `-count`统计HDFS路径下文件和目录的数量。 - `-cp`复制HDFS上的文件或目录。 - `-get`将HDFS上的文件或目录下载到本地...

    HDFS文件系统技术详解.pdf

    《HDFS文件系统技术详解》 Hadoop分布式文件系统(HDFS)是大数据处理的核心组件之一,它提供了高容错性和高吞吐量的数据存储和访问能力。本文将深入探讨HDFS的文件读写机制、副本策略、Shell接口以及Java API,以...

    Hadoop HDFS文件系统技术概述.pptx

    Hadoop HDFS文件系统技术概述 Hadoop Distributed File System(HDFS)是一种分布式文件系统,旨在提供高容错、可靠、可扩展的文件存储解决方案。HDFS来自Google的GFS(Google File System),是GFS的开源版本。 ...

    Hadoop HDFS文件系统技术概述.pdf

    Hadoop HDFS文件系统技术概述 概述:HDFS(Hadoop Distributed File System)是Hadoop生态系统中的核心组件,作为分布式文件系统,HDFS提供了高容错、可扩展、可靠的存储解决方案,广泛应用于大数据处理和分析领域。...

    Hadoop(HDFS文件系统)命令操作

    - **-appendToFile &lt;localsrc&gt; **:将本地文件追加到 HDFS 文件的末尾。 - **-cat [-ignoreCrc] **:显示 HDFS 文件的内容。忽略 CRC 校验。 - **-checksum **:显示文件的校验和。 - **-chgrp [-R] GROUP PATH**:...

    HDFS分布式文件系统

    - **追加文件内容**:使用`hdfs dfs -appendToFile`命令,如`hdfs dfs -appendToFile bigdata3.txt /user/text01/bigdata.txt`,将`bigdata3.txt`内容追加到`bigdata.txt`末尾。 - **合并文件**:通过`hdfs dfs -...

    深入理解Hadoop HDFS高级教程.txt打包整理.zip

    9. 高级特性:HDFS支持文件的追加操作,以及在文件系统内的文件移动和重命名。HDFS还引入了快照功能,允许用户在特定时间点创建文件系统的快照,用于备份和恢复。 10. 实战应用:HDFS广泛应用于互联网公司,如...

    HDFS命令指南相关学习

    例如,可以使用以下命令将一个或多个本地文件追加到HDFS文件中: - `hdfs dfs -appendToFile localfile /user/hadoop/hadoopfile` - `hdfs dfs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile` - ...

    hdfs源码.zip

    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...

    数据存储实验2-熟悉常用的HDFS操作.doc(实验报告)

    * hadoop dfs:用于管理HDFS文件系统的命令,例如查看文件列表、创建目录、删除文件等。 * hdfs dfs:用于管理HDFS文件系统的命令,例如查看文件列表、创建目录、删除文件等。 实验目的 本实验的目的旨在熟悉常用的...

    HDFS基本命令.docx

    该命令可以将本地文件追加到HDFS中的文件。使用方法:hadoop fs -appendToFile &lt;local_file&gt; &lt;hdfs_file&gt;。 -cat命令 -cat命令用于显示HDFS中的文件内容。该命令可以显示指定文件的内容。使用方法:hadoop fs -cat...

    实验2常用的HDFS操作.doc

    Shell命令和java两种方式完成了常用的HDFS操作,有源代码及运行结果截图 ...(8)向HDFS中指定的文件追加内容,由用户指定内容追加到原有文件的开头或结尾 (9)删除HDFS中指定的文件 (10)在HDFS中,将文件从源路

    分布式文件系统HDFS

    此外,HDFS的客户端库提供了访问HDFS文件的API,使得在Hadoop应用程序中处理文件变得容易。 综上所述,HDFS作为Hadoop生态系统的核心组成部分,不仅在设计理念上借鉴了已有的分布式文件系统的经验,还针对大数据...

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

    在Shell命令操作中,学生首先通过`hdfs dfs -put`命令将本地文件上传至HDFS,然后使用`-test -e`检查文件是否存在,最后通过`-appendToFile`命令追加内容或`-copyFromLocal -f`覆盖原有文件。这些命令展示了HDFS的...

    数据科学导论实验报告 实验2:熟悉常用的HDFS操作

    2. **追加内容**:为了向HDFS中的文件追加内容,我们需要打开已存在的文件并使用`FSDataOutputStream`的`append`方法。这将创建一个输出流,所有写入的数据都会追加到文件的末尾。这里我们使用`FileInputStream`读取...

Global site tag (gtag.js) - Google Analytics