hadoop追加到单个文件的数据丢失

wanghu555 2018-05-08 02:13:50
hadoop版本2.7.3,单机部署在centos6.7系统上;通过java API以行追加的方式写文件,所有的数据存储到一个文件里。写文件的代码:

/**以行追加的方式写数据到hdfs
* @param str 文件内容
* @param hdfs hdfs文件路径
* @throws ClassNotFoundException
* @throws IOException
*/
public static void WriteFile(String str, String hdfs) throws ClassNotFoundException, IOException {
InputStream in = new ByteArrayInputStream(str.getBytes("UTF-8"));
Configuration conf = new Configuration();
conf.setBoolean("dfs.support.append", true);
conf.set("dfs.client.block.write.replace-datanode-on-failure.policy",
"NEVER"
);
conf.set("dfs.client.block.write.replace-datanode-on-failure.enable",
"true"
);
FileSystem fs = null;
try {
fs = FileSystem.get(URI.create(hdfs),conf);
Path path = new Path(hdfs);
OutputStream fo = null;
try {
fo = fs.append(path);
}catch(Exception e) {
fo = fs.create(path);
}
IOUtils.copyBytes(in, fo, 4096, true);
in.close();
fo.close();
System.out.println("write file success...");
}catch(Exception e) {
e.printStackTrace();
}
}

hadoop的相关配置文件:

hdfs-site.xml:



<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/tmp/dfs/data</value>
</property>
</configuration>

core-site.xml:



<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node3:9000</value>
</property>
</configuration>

项目持续往一个hdfs文件中追加数据,运行一段时间后,发现这个文件中,之前的数据没有了,只有最近1,2天的数据。

请教各位,这种情况是什么原因引起的,是不是我的配置文件,哪里写错了?还是我追加数据的方式不对?

谢谢各位,请不吝赐教!!
...全文
836 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
appleyk 2018-07-19
  • 打赏
  • 举报
回复
兄弟不是你这样追加的,本人写了一套HDFS的Java API:




文件追加内容应该这样写:






想要更多信息,请关注我的博客:https://blog.csdn.net/appleyk


Java HDFS API 追加文件写入内容异常问题的解决


20,808

社区成员

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

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