HDFS是不是不支持 追加 append

曹宇 2013-11-28 04:23:54
我用的是hadoop1.1.2版本
我修改了hdfs-site.xml中的配置 将dfs.support.append设置为true
可是追加数据还是提示我不支持。

请问怎么做。

我观看hadoop源码中发现源码中的注释说明了 append已被放弃,不支持。源码中默认这个配置是没有值的

是不是我的版本问题,还是hadoop以后就不支持了。

还请大神解答,谢谢啦。
...全文
3240 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱人间 2015-04-17
  • 打赏
  • 举报
回复
上传文件到hadoop,断点续传是不是得用append
  • 打赏
  • 举报
回复
怎么解决的啊,搞了一天了,愁的
codeFarmer212010 2014-04-10
  • 打赏
  • 举报
回复
检查一下是不是Slave上的hdfs-site.xml配置文件也修改了
javark 2014-02-13
  • 打赏
  • 举报
回复
请问楼主找到问题所在了吗?
xyzshary 2014-01-27
  • 打赏
  • 举报
回复
1.2.1版本的追加配置项名字不一样,叫“dfs.support.append.broken”, 你是配置错了吧?
孙鹤超 2014-01-09
  • 打赏
  • 举报
回复
谢谢 收下了 受益匪浅
无边的绿波 2013-12-03
  • 打赏
  • 举报
回复
支持追加的,但是在追加的过程中存在bug,官方建议不要在生产环境中使用!
曹宇 2013-12-03
  • 打赏
  • 举报
回复
引用 8 楼 hqshaozhu 的回复:
ChecksumFileSystem 这个我不知道是啥 但是DistributedFileSystem 才是hdfs采用的文件系统 这两个是不一样的文件系统 所以实现方式是不同的 也就是说DistributedFileSystem支持append 而ChecksumFileSystem不支持
嗯 好的谢谢您了,我去翻翻资料。 也谢谢其他人的帮助哈!!!
夜半唱浮夸 2013-12-02
  • 打赏
  • 举报
回复
不是很清楚~~~~~····
beowulf2005 2013-12-02
  • 打赏
  • 举报
回复
早期是不支持append, 后来说append是实验性特性,支持但不推荐用,出错后果自负。 最新版应该是的支持的。 不过我还是怕怕,能不用就不用。
少主无翼 2013-12-02
  • 打赏
  • 举报
回复
ChecksumFileSystem 这个我不知道是啥 但是DistributedFileSystem 才是hdfs采用的文件系统 这两个是不一样的文件系统 所以实现方式是不同的 也就是说DistributedFileSystem支持append 而ChecksumFileSystem不支持
曹宇 2013-12-02
  • 打赏
  • 举报
回复
引用 6 楼 hqshaozhu 的回复:
你为什么会使用ChecksumFileSystem,而不是DistributedFileSystem?很可能是配置文件core-default.xml中的下面那个参数值被修改了,换成了ChecksumFileSystem,或者你们压根使用的就不是hdfs文件系统,具体ChecksumFileSystem这个是啥文件系统我也不知道,但是hadoop有这个类,下面有他的append方法代码,一目了然。 <property> <name>fs.hdfs.impl</name> <value>org.apache.hadoop.hdfs.DistributedFileSystem</value> <description>The FileSystem for hdfs: uris.</description> </property>
  
/** {@inheritDoc} */
  public FSDataOutputStream append(Path f, int bufferSize,
      Progressable progress) throws IOException {
    throw new IOException("Not supported");
  }
[quote=引用 5 楼 ProgrammingPower 的回复:] [quote=引用 4 楼 hqshaozhu 的回复:] 把你的操作代码和错误信息贴出来
代码
public class TestHDFS {

	public static void main(String[] args) throws Exception{
		long start = System.currentTimeMillis();
		Configuration configuration = new Configuration();
		configuration.set("dfs.support.append","true");
		FileSystem fs = FileSystem.get(configuration);
		Path target = new Path("/2.csv");
		FSDataOutputStream append = fs.append(target);
		BufferedReader br = new BufferedReader(new FileReader(new File("./2.csv")));
		String line = "";
		while((line=br.readLine())!=null){
			append.writeChars(line);
			append.flush();
		}
		
		append.close();
		br.close();
		
		long end = System.currentTimeMillis();
		System.out.println("耗时"+(end-start)+"ms");
	}
	
}
错误提示:
Exception in thread "main" java.io.IOException: Not supported
	at org.apache.hadoop.fs.ChecksumFileSystem.append(ChecksumFileSystem.java:290)
	at org.apache.hadoop.fs.FileSystem.append(FileSystem.java:650)
	at test.TestHDFS.main(TestHDFS.java:21)
因为公司用的HADOOP是别人封装的,配置文件完全不知道在哪里,所以这里只能在代码上设置conf修改 谢谢拉[/quote][/quote] 嗯 非常感谢您,不过这个ChecksumFileSystem和DistributedFileSystem不都是FileSystem的子类吗? 我用的是FileSystem 请问DistributedFileSystem 和 ChecksumFileSystem 有什么区别吗? 谢谢您了
少主无翼 2013-11-29
  • 打赏
  • 举报
回复
把你的操作代码和错误信息贴出来
曹宇 2013-11-29
  • 打赏
  • 举报
回复
额 我的配置文件也是这样写的 我配置了 append为true 可是为什么 我用api追加的时候 终端一直提示我append不被支持 求大神谢谢了
少主无翼 2013-11-29
  • 打赏
  • 举报
回复
你为什么会使用ChecksumFileSystem,而不是DistributedFileSystem?很可能是配置文件core-default.xml中的下面那个参数值被修改了,换成了ChecksumFileSystem,或者你们压根使用的就不是hdfs文件系统,具体ChecksumFileSystem这个是啥文件系统我也不知道,但是hadoop有这个类,下面有他的append方法代码,一目了然。 <property> <name>fs.hdfs.impl</name> <value>org.apache.hadoop.hdfs.DistributedFileSystem</value> <description>The FileSystem for hdfs: uris.</description> </property>
  
/** {@inheritDoc} */
  public FSDataOutputStream append(Path f, int bufferSize,
      Progressable progress) throws IOException {
    throw new IOException("Not supported");
  }
引用 5 楼 ProgrammingPower 的回复:
[quote=引用 4 楼 hqshaozhu 的回复:] 把你的操作代码和错误信息贴出来
代码
public class TestHDFS {

	public static void main(String[] args) throws Exception{
		long start = System.currentTimeMillis();
		Configuration configuration = new Configuration();
		configuration.set("dfs.support.append","true");
		FileSystem fs = FileSystem.get(configuration);
		Path target = new Path("/2.csv");
		FSDataOutputStream append = fs.append(target);
		BufferedReader br = new BufferedReader(new FileReader(new File("./2.csv")));
		String line = "";
		while((line=br.readLine())!=null){
			append.writeChars(line);
			append.flush();
		}
		
		append.close();
		br.close();
		
		long end = System.currentTimeMillis();
		System.out.println("耗时"+(end-start)+"ms");
	}
	
}
错误提示:
Exception in thread "main" java.io.IOException: Not supported
	at org.apache.hadoop.fs.ChecksumFileSystem.append(ChecksumFileSystem.java:290)
	at org.apache.hadoop.fs.FileSystem.append(FileSystem.java:650)
	at test.TestHDFS.main(TestHDFS.java:21)
因为公司用的HADOOP是别人封装的,配置文件完全不知道在哪里,所以这里只能在代码上设置conf修改 谢谢拉[/quote]
曹宇 2013-11-29
  • 打赏
  • 举报
回复
引用 4 楼 hqshaozhu 的回复:
把你的操作代码和错误信息贴出来
代码
public class TestHDFS {

	public static void main(String[] args) throws Exception{
		long start = System.currentTimeMillis();
		Configuration configuration = new Configuration();
		configuration.set("dfs.support.append","true");
		FileSystem fs = FileSystem.get(configuration);
		Path target = new Path("/2.csv");
		FSDataOutputStream append = fs.append(target);
		BufferedReader br = new BufferedReader(new FileReader(new File("./2.csv")));
		String line = "";
		while((line=br.readLine())!=null){
			append.writeChars(line);
			append.flush();
		}
		
		append.close();
		br.close();
		
		long end = System.currentTimeMillis();
		System.out.println("耗时"+(end-start)+"ms");
	}
	
}
错误提示:
Exception in thread "main" java.io.IOException: Not supported
	at org.apache.hadoop.fs.ChecksumFileSystem.append(ChecksumFileSystem.java:290)
	at org.apache.hadoop.fs.FileSystem.append(FileSystem.java:650)
	at test.TestHDFS.main(TestHDFS.java:21)
因为公司用的HADOOP是别人封装的,配置文件完全不知道在哪里,所以这里只能在代码上设置conf修改 谢谢拉
  • 打赏
  • 举报
回复
h d s f不支持随机写,追加还是ok的
少主无翼 2013-11-28
  • 打赏
  • 举报
回复
怎么会呢 文件追加功能以默认添加了 不然Hbase不得哭死 下面是1.2.1的hdfs-default.xml中对那个参数的描述 <property> <name>dfs.support.append</name> <description> This option is no longer supported. HBase no longer requires that this option be enabled as sync is now enabled by default. See HADOOP-8230 for additional information. </description> </property>

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧