Hadoop如何配置hdfs默认路径JavaAPI?
How to configure hdfs default path with Hadoop Java API?
我在 Windows 10 上使用带有 Hadoop Java 客户端 API 的 Hadoop 文件系统 3.3.0。下面是 Hadoop 配置文件。
核心-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.http.address</name>
<value>localhost:50070</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///C:/hadoop-3.3.0/data/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///C:/hadoop-3.3.0/data/hdfs/datanode</value>
</property>
</configuration>
并且我尝试使用 Java API.
将一些文件保存到 Hadoop 文件系统中
Configuration conf = new Configuration();
conf.addResource(new Path("file:///C:/hadoop-3.3.0/etc/hadoop/core-site.xml"));
conf.addResource(new Path("file:///C:/hadoop-3.3.0/etc/hadoop/hdfs-site.xml"));
FileSystem hadoopFs = FileSystem.get(conf);
Path hadoopPath = new Path(filename);
FSDataOutputStream hadoopOutStream = null;
BufferedWriter bw = null;
if(hadoopFs.exists(hadoopPath)) {
hadoopOutStream =hadoopFs.append(hadoopPath);
} else {
hadoopOutStream = hadoopFs.create(hadoopPath, true);
}
bw = new BufferedWriter(new OutputStreamWriter(hadoopOutStream,StandardCharsets.UTF_8));
bw.write("data....");
bw.close();
hadoopOutStream.close();
文件写入成功,没有异常。但问题是保存文件的路径不是我在配置文件中描述的 Hadoop 主文件夹。
当我执行Hadoop命令界面时,输出如下,
>hdfs dfs -ls /user/joseph
Found 1 items
-rw-r--r-- 1 joseph supergroup 172120 2020-12-11 17:34 /user/joseph/saved_data.csv
保存文件的默认文件夹不在hadoop_home,而是在Windows用户文件夹。如何修改默认保存文件夹?
HADOOP_HOME是你的Hadoop安装路径,与hdfs路径无关。
默认情况下,HDFS 将在其 /user/nameOfUser 目录中存储一个目录。
/user 部分可由 config dfs.user.home.dir.prefix 配置,默认值为 /user
您可以在您的 hdfs 客户端配置中更改它,以使用其他前缀而不是 /user
我在 Windows 10 上使用带有 Hadoop Java 客户端 API 的 Hadoop 文件系统 3.3.0。下面是 Hadoop 配置文件。
核心-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.http.address</name>
<value>localhost:50070</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///C:/hadoop-3.3.0/data/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///C:/hadoop-3.3.0/data/hdfs/datanode</value>
</property>
</configuration>
并且我尝试使用 Java API.
将一些文件保存到 Hadoop 文件系统中Configuration conf = new Configuration();
conf.addResource(new Path("file:///C:/hadoop-3.3.0/etc/hadoop/core-site.xml"));
conf.addResource(new Path("file:///C:/hadoop-3.3.0/etc/hadoop/hdfs-site.xml"));
FileSystem hadoopFs = FileSystem.get(conf);
Path hadoopPath = new Path(filename);
FSDataOutputStream hadoopOutStream = null;
BufferedWriter bw = null;
if(hadoopFs.exists(hadoopPath)) {
hadoopOutStream =hadoopFs.append(hadoopPath);
} else {
hadoopOutStream = hadoopFs.create(hadoopPath, true);
}
bw = new BufferedWriter(new OutputStreamWriter(hadoopOutStream,StandardCharsets.UTF_8));
bw.write("data....");
bw.close();
hadoopOutStream.close();
文件写入成功,没有异常。但问题是保存文件的路径不是我在配置文件中描述的 Hadoop 主文件夹。
当我执行Hadoop命令界面时,输出如下,
>hdfs dfs -ls /user/joseph
Found 1 items
-rw-r--r-- 1 joseph supergroup 172120 2020-12-11 17:34 /user/joseph/saved_data.csv
保存文件的默认文件夹不在hadoop_home,而是在Windows用户文件夹。如何修改默认保存文件夹?
HADOOP_HOME是你的Hadoop安装路径,与hdfs路径无关。 默认情况下,HDFS 将在其 /user/nameOfUser 目录中存储一个目录。 /user 部分可由 config dfs.user.home.dir.prefix 配置,默认值为 /user 您可以在您的 hdfs 客户端配置中更改它,以使用其他前缀而不是 /user