通过 Java API 访问 HDFS 文件系统Java 运行时 HDFS 命令

Accessing HDFS File system via Java API Vs. Java Runtime HDFS command

通过 Java API 访问 HDFS 文件系统的优点和缺点是什么?通过 Java Runtime?

调用 HDFS 命令

HDFS 文件系统基于 Kerberos 身份验证。在我以前的组织中,我们使用 HDFS Java API 来访问 HDFS 文件系统,但在我当前的组织中,我被要求通过 Java 运行时调用来调用 HDFS 命令。使用这种通过 Java 运行时调用调用 HDFS 命令的方法是否合适?

Runtime r = Runtime.getRuntime();
Process p = r.exec("hdfs dfs -copyFromLocal /tmp/localFile /tmp/hdfsDir/");
p.waitFor();

这个问题基本上可以归结为“API vs CLI”,不一定是特定于 Hadoop 的。

在一天结束时,API 调用和 CLI 调用将命中相同的底层代码并执行相同的操作。使用 API 的优点是您可以获得自动采用 Java 可以使用的格式的端点和响应。

如果您在 Java 中从 CLI 调用 hdfs 命令,那么您必须手动将响应解析为字符串,以确定它是否达到了您的预期。您还必须下载这些二进制文件并将它们放在系统上 PATH。与使用 HDFS API 相比:结果 return 实际可用的对象,任何错误都会抛出您可以处理的异常。