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。
分享到:
相关推荐
hdfs文件的查看 hdfs fs -cat /文件名
hdfs文件的下载
hdfs 文件的上传,hdfs fs -put /文件名
Java管理hdfs文件和文件夹的工具类,最近版本hadoop2.4。
本文档是关于hadoop中HDFS的文件读写操作的一份ppt,适用于学习hadoop新手.
HDFS文件系统,大数据资源文件
文档详细的讲述了Hadoop中HDFS文件操作命令和HDFS编程
本文档时Hadoop云计算平台下运用Hadoop API对HDFS进行相关的操作,详细的记录了程序在eclipse中的应用,代码内容和运行结果,是学习Hadoop非常有用的资料。
storm-hdfs, 用于与HDFS文件系统交互的风暴组件 风暴 HDFS用于与HDFS文件系统交互的风暴组件用法以下示例将在每 1,000个元组同步后将管道("|") -delimited文件写入HDFS路径 hdfs://localhost:54310/foo.,使它的对...
hdfs文件传输调优,hdfs文件传输调优 hdfs文件传输调优
Hadoop hdfs文件操作,单词统计MR代码 demo,topN求解编程代码 demo
python解析hdfs文件内容生成本地文件、及相关插件包安装实现方式
主要介绍了Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
java对大数据HDFS文件操作jar包和maven2个项目,有jar包,有依赖,2个项目呦
java 读写 hdfs文件系统例子(包括权限设置);java 读写 hdfs文件系统例子(包括权限设置)java 读写 hdfs文件系统例子(包括权限设置)
hdfs dfs -test -e 文件或目录名 第三步,查看检测结果: echo $? 若输出结果为0,则说明文件或目录存在,若为1,则说明文件或目录不存在。 二、Java代码实现 import org.apache.hadoop.conf.Configuration; ...
在搭建完hadoop大数据系统(CDH5.16.1)后,如何访问hdfs文件系统上的数据呢?那当然是通过构建maven项目 使用java api接口进行文件了。为此,特别进行了hdfs文件系统java api访问的整理。
3、HDFS的使用(读写、上传、下载、遍历、查找文件、整个目录拷贝、只拷贝文件、列出文件夹下文件、删除文件及目录、获取文件及文件夹属性等)-java 网址:...
hadoop及eclipse操作HDFS需要文件、、
windows平台下的HDFS文件浏览器,就像windows管理器一样管理你的hdfs文件系统。现在官网已经停止更新这款软件。具体配置如下: HDFS配置页面及端口http://master:50070 配置HDFS服务器 配置WebHDFS HDFS Explorer...