Hadoop中FileSystem的append方法

  今天在使用Hadoop 1.1.2版本进行FileSystem的append操作时报以下异常:

1  org.apache.hadoop.ipc.RemoteException: java.io.IOException: Append is not supported. Please see the dfs.support.append configuration parameter.

Google了一下,发现Hadoop 1.x版本不支持FileSystem的append操作,官方Hadoop 1.1.2 Release Notes如下:

    • HADOOP-8230. Major improvement reported by eli2 and fixed by eli 
      Enable sync by default and disable append

      Append is not supported in Hadoop 1.x. Please upgrade to 2.x if you need append. If you enabled dfs.support.append for HBase, you‘re OK, as durable sync (why HBase required dfs.support.append) is now enabled by default. If you really need the previous functionality, to turn on the append functionality set the flag "dfs.support.broken.append" to true.

  上面的解释明显的提到如果需要使用append操作,需要升级到hadoop 2.x版本。并且需要在Conf的hdfs.site.xml文件中加入如下配置: 

1  <property>
2     <name>dfs.support.append</name>
3     <value>true</value>
4   </property>

Hadoop的API中也提供了设置项来支持内容追加,代码如下:

1 Configuration conf = new Configuration();
2 conf.setBoolean("dfs.support.append", true);

  不过,在已有的文件中追加内容是一件需要斟酌的操作,原因如下:

【Raghava的邮件回复:】
In short, appends in HDFS are extremely experimental and dangerous. Most
would advise you to leave this disabled. Your best option for "append"
like behavior is to rewrite the file with new content being added at the
end. Append support was briefly introduced and then removed as a number
of issues came up. I believe the open (parent) JIRA issue tracking this is:
http://issues.apache.org/jira/browse/HDFS-265

  如果想深究其原因,可以参考网址:http://issues.apache.org/jira/browse/HDFS-265

Hadoop中FileSystem的append方法

时间: 2024-10-06 05:54:21

Hadoop中FileSystem的append方法的相关文章

Java中StringBuffer类append方法的使用

Java中StringBuffer类append方法的使用 append方法的作用是在一个StringBuffer对象后面追加字符串. 例如StringBuffer s = new StringBuffer("Hello");s.append("World");则s的内容是HelloWorld

JAVA中Stringbuffer的append( )方法

Stringbuffer是动态字符串数组,append( )是往动态字符串数组添加,跟“xxxx”+“yyyy”相当‘+’号. 跟String不同的是Stringbuffer是放一起的,String1+String2和Stringbuffer1.append("yyyy")虽然打印效果一样,但在内存中表示却不一样. String1+String2 存在于不同的两个地址内存,Stringbuffer1.append(Stringbuffer2)放再一起. 例如: StringBuffer

hadoop中secondarynamenode节点添加方法

当时,hadoop已经安装成功,但是secondarynamenode没有启动 后来经过研究,原来是配置的目录有问题 首先修改一下shell文件 文件路径:/home/work/hadoop/bin 原来:master  现在:secondarynamenode [[email protected] bin]$ cat start-dfs.sh #!/usr/bin/env bash # Licensed to the Apache Software Foundation (ASF) under

Hadoop中两表JOIN的处理方法(转)

1. 概述 在传统数据库(如:MYSQL)中,JOIN操作是非常常见且非常耗时的.而在HADOOP中进行JOIN操作,同样常见且耗时,由于Hadoop的独特设计思想,当进行JOIN操作时,有一些特殊的技巧. 本文首先介绍了Hadoop上通常的JOIN实现方法,然后给出了几种针对不同输入数据集的优化方法. 2. 常见的join方法介绍 假设要进行join的数据分别来自File1和File2. 2.1 reduce side join reduce side join是一种最简单的join方式,其主

java.lang.Comparable, java.util.Compartor区别以及Hadoop中关于自定义类型中的compare方法

public interface Comparable<T> { public int compareTo(T o); } 规定了对象内部比较的方法 public interface Comparator<T> { int compare(T o1, T o2); boolean equals(Object obj); } 定义外部比较器的基本方法,其中equals是用来确定两个比较器是否相等. 关于对象内部比较和外部比较这两个接口的区别和使用场景如下: 个人总结: Compara

hadoop 中对Vlong 和 Vint的压缩方法

hadoop 中对java的基本类型进行了writeable的封装,并且所有这些writeable都是继承自WritableComparable的,都是可比较的:并且,它们都有对应的get() 和 set()方法, 其中对整型(int 和 long)进行编码的时候,有固定长度格式(intWritable和LongWritable)和可变长度格式(VIntWritable 和 VLongWritable),其中VIntWritable和VLongWritable的编码规则是一样的, 所以VIntW

python中的 list (列表)append()方法 与extend()方法的用法 和 区别

append()方法使用 首先看官方文档中的描述: list.extend(L)             Extend the list by appending all the items in the given list; equivalent to a[len(a):] = L. 翻译成汉语就是:        通过将所有元素追加到已知list来扩充它,相当于a[len(a):]= L 举个例子,更能明白这句话 >>> la [1, 2, 3] >>> lb [

Hadoop中客户端和服务器端的方法调用过程

Java 动态代理一个简单的demo:(用以对比Hadoop中的动态代理) Hello接口: public interface Hello { void sayHello(String to); void print(String p); } Hello接口的实现类: public class HelloImpl implements Hello { public void sayHello(String to) { System.out.println("Say hello to "

比较jquery中的after(),append(),appendTo()方法

html页面: <p id="myp1">我的兴趣爱好是:</p> <button id="b1">after函数</button> <button id="b2">append函数</button> <button id="b3">appendTo函数</button> js页面 $(document).ready(functio