Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Hadoop配置上使用应用程序配置_Java_Hadoop_Log4j_Hdfs_Slf4j - Fatal编程技术网

Java 在Hadoop配置上使用应用程序配置

Java 在Hadoop配置上使用应用程序配置,java,hadoop,log4j,hdfs,slf4j,Java,Hadoop,Log4j,Hdfs,Slf4j,我使用Maven构建了一个Java应用程序。它使用Maven Shade插件打包为可执行jar。这个应用程序做了几件事——其中之一是将数据上传到Hadoop集群。我使用以下命令执行程序: $ hadoop jar <app_name>.jar <app_arg1> <app_arg2> ... 其次,我设置了HADOOP\u OPTS环境变量来告诉Log4J我的配置文件的名称: HADOOP_OPTS=-Dlog4j.configurationi=log4j

我使用Maven构建了一个Java应用程序。它使用Maven Shade插件打包为可执行jar。这个应用程序做了几件事——其中之一是将数据上传到Hadoop集群。我使用以下命令执行程序:

$ hadoop jar <app_name>.jar <app_arg1> <app_arg2> ...
其次,我设置了
HADOOP\u OPTS
环境变量来告诉Log4J我的配置文件的名称:

HADOOP_OPTS=-Dlog4j.configurationi=log4j-<app_name>.properties

通过这些更改,我的应用程序现在按照预期使用了自己的Log4J配置文件。感觉像是一个黑客(因为我更喜欢使用
java-jar
命令),但它解决了我的问题。

默认情况下,Hadoop框架jar出现在
类路径中的用户jar之前。您可以使用命令中的参数Dmapreduce.job.user.classpath.first=true设置(用户)JAR的首选项。新命令将在下面显示

hadoop jar <app_name>.jar -Dmapreduce.job.user.classpath.first=true <<app_arg1>> <<app_arg2>> ...
您可以在作业配置中以编程方式进行设置

job.getConfiguration().set("mapreduce.job.user.classpath.first", "true");

您可以通过任何方式进行设置,它永远不会迟到。

默认情况下,Hadoop框架JAR出现在
类路径中的用户JAR之前。您可以使用命令中的参数Dmapreduce.job.user.classpath.first=true设置(用户)JAR的首选项。新命令将在下面显示

hadoop jar <app_name>.jar -Dmapreduce.job.user.classpath.first=true <<app_arg1>> <<app_arg2>> ...
您可以在作业配置中以编程方式进行设置

job.getConfiguration().set("mapreduce.job.user.classpath.first", "true");

您可以通过任何方式进行设置,它永远不会迟到。

有什么方法可以通过编程方式进行设置吗?或者,以编程方式执行此操作会导致覆盖必要配置的过程延迟吗?@Kasa您可以通过编程方式进行设置。我已经更新了同样的答案。谢谢你的快速回复。你提到的选项对我不起作用。任何其他建议都很好,但如果没有,我应该如何开始进一步调试?@Kasa这些方法优先考虑用户jar,然后是hadoop jars。你犯了什么错?我这边没有错。我的log4j.properties配置似乎从未被选中。我不确定如何进一步调试,任何建议都会有所帮助。基于其他地方的研究,你的建议似乎是准确的,但肯定有什么我无法确定的地方,因为没有产生任何错误。有没有一种方法可以通过编程来设置它?或者,以编程方式执行此操作会导致覆盖必要配置的过程延迟吗?@Kasa您可以通过编程方式进行设置。我已经更新了同样的答案。谢谢你的快速回复。你提到的选项对我不起作用。任何其他建议都很好,但如果没有,我应该如何开始进一步调试?@Kasa这些方法优先考虑用户jar,然后是hadoop jars。你犯了什么错?我这边没有错。我的log4j.properties配置似乎从未被选中。我不确定如何进一步调试,任何建议都会有所帮助。基于其他地方的研究,你的建议似乎是准确的,但肯定有什么我无法确定的地方,因为没有任何错误产生。