Hadoop 如何附加到HDFS上创建的文件
我在附加到我创建的文件时遇到问题。我对手动上传到HDFS的文件没有这样的问题。上传文件和创建文件有什么区别 要追加和创建,我使用下面的代码Hadoop 如何附加到HDFS上创建的文件,hadoop,hdfs,Hadoop,Hdfs,我在附加到我创建的文件时遇到问题。我对手动上传到HDFS的文件没有这样的问题。上传文件和创建文件有什么区别 要追加和创建,我使用下面的代码 import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.h
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class Test {
public static final String hdfs = "hdfs://192.168.15.62:8020";
public static final String hpath = "/user/horton/wko/test.log";
public static void main(String[] args) throws IOException {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", hdfs);
conf.set("hadoop.job.ugi", "hdfs");
FileSystem fs = FileSystem.get(conf);
Path filenamePath = new Path(hpath);
//FSDataOutputStream out = fs.create(filenamePath);
FSDataOutputStream out = fs.append(filenamePath);
out.writeUTF("TEST\n");
out.close();
}
}
我遇到了这样的例外情况:
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=[192.168.15.62:50010], original=[192.168.15.62: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.
我有一个类似的问题,修复了添加
conf.set(“dfs.replication”,“1”)
在我的例子中,集群中只有一个节点,即使在hdfs site.xml
中将dfs.replication
设置为1
,它仍然使用默认值3
请注意,Hadoop将尝试在第一个节点中写入文件块后立即复制它们,并且由于复制的默认值为
3
,因此如果您只有一个节点集群,它将无法访问其他节点 在hdfs-site.xml中是否有dfs.support.append
设置为true
?另外,您有多少个数据节点,复制系数是多少?