如何使用 Maven 构建 Hadoop 作业
How to build Hadoop Job using Maven
我是 maven 和 hadoop 的新手,想了解更多有关如何设置 maven 环境的信息,以便我可以构建一个简单的 hadoop wordcount 作业。如果 wordcount 作业由 map.java、reduce.java 和驱动程序 class wordcount.java 组成,它们应该保存在哪里,以便 maven 可以将它们编译成 .jar?我也有一个pom.xml。如果有人可以提供 ide 详细说明如何使用 maven 运行 wordcount 作业,我将不胜感激。我目前正在 ubuntu 终端上的单节点集群 hadoop tar 上做所有事情。我发现这些链接给了我一些见解,但我并不完全理解整个路径目录方案。具体来说,group id 和 artifact id 的名称可以是任意的,还是与某些路径有关? main 和 src 目录有什么关系?更一般地说,如何在没有 ide.
的情况下构建 hadoop jar
https://azure.microsoft.com/en-us/documentation/articles/hdinsight-develop-deploy-java-mapreduce/
要运行 map reduce 作业,你只需要一个包含作业、mapper 和reducer 的jar class。现在的重点是如何管理依赖的罐子。
Maven 是一种实现方式。在 pom 中,您将 jars 的详细信息作为依赖项提供。如果您在系统中正确设置了 maven,一旦您的项目定义了 pom 和依赖项,jar 将被引用。你可以 运行 maven clean install,并在你的 pom 中定义构建插件(maven-jar-plugin),你应该在目标文件夹中得到一个 jar。
现在,您的 jar 已正确构建。接下来是当你把它带到集群时,它再次需要罐子。
一种方法是在构建你的 jar 时,你可以构建一个 fat jar,这也会将依赖项添加到你的 jar,你不必担心 jar 的集群环境。
另一种方法是继续使用只有你的 classes 的 jar,然后设置指向集群中所有 jar 的 hadoop classpath。
最后完成上述设置,您可以使用 hadoop jar 命令了
问题的答案
有 2 个带有 pom 的主要文件夹。源和目标。 Target一般用来存放构建的输出(可能是jar或者war)。您可以创建目标文件夹作为构建脚本的一部分,也可以在 eclipse 开发期间创建。
如何检查是否安装了 maven - 一旦安装好,并设置了本地存储库路径,然后 运行 maven 安装 - 这将导致获取 pom 中定义的 jars 并将它们存储在本地存储库中。如果发生这种情况,那么你很好。从互联网上的外部来源下载 jar 时,挑战是防火墙问题。
作业是否使用相同的 pom - mapreduce 作业是用 java class 定义的。所以那个 jar 中的所有这些作业都将使用相同的 pom。那很明显。您可以继续阅读有关构建、jar 引用、maven 用法、ant 比较(传统构建方式)与 maven 的内容 - 以提高您的知识
我是 maven 和 hadoop 的新手,想了解更多有关如何设置 maven 环境的信息,以便我可以构建一个简单的 hadoop wordcount 作业。如果 wordcount 作业由 map.java、reduce.java 和驱动程序 class wordcount.java 组成,它们应该保存在哪里,以便 maven 可以将它们编译成 .jar?我也有一个pom.xml。如果有人可以提供 ide 详细说明如何使用 maven 运行 wordcount 作业,我将不胜感激。我目前正在 ubuntu 终端上的单节点集群 hadoop tar 上做所有事情。我发现这些链接给了我一些见解,但我并不完全理解整个路径目录方案。具体来说,group id 和 artifact id 的名称可以是任意的,还是与某些路径有关? main 和 src 目录有什么关系?更一般地说,如何在没有 ide.
的情况下构建 hadoop jarhttps://azure.microsoft.com/en-us/documentation/articles/hdinsight-develop-deploy-java-mapreduce/
要运行 map reduce 作业,你只需要一个包含作业、mapper 和reducer 的jar class。现在的重点是如何管理依赖的罐子。
Maven 是一种实现方式。在 pom 中,您将 jars 的详细信息作为依赖项提供。如果您在系统中正确设置了 maven,一旦您的项目定义了 pom 和依赖项,jar 将被引用。你可以 运行 maven clean install,并在你的 pom 中定义构建插件(maven-jar-plugin),你应该在目标文件夹中得到一个 jar。
现在,您的 jar 已正确构建。接下来是当你把它带到集群时,它再次需要罐子。 一种方法是在构建你的 jar 时,你可以构建一个 fat jar,这也会将依赖项添加到你的 jar,你不必担心 jar 的集群环境。 另一种方法是继续使用只有你的 classes 的 jar,然后设置指向集群中所有 jar 的 hadoop classpath。
最后完成上述设置,您可以使用 hadoop jar 命令了
问题的答案
有 2 个带有 pom 的主要文件夹。源和目标。 Target一般用来存放构建的输出(可能是jar或者war)。您可以创建目标文件夹作为构建脚本的一部分,也可以在 eclipse 开发期间创建。
如何检查是否安装了 maven - 一旦安装好,并设置了本地存储库路径,然后 运行 maven 安装 - 这将导致获取 pom 中定义的 jars 并将它们存储在本地存储库中。如果发生这种情况,那么你很好。从互联网上的外部来源下载 jar 时,挑战是防火墙问题。
作业是否使用相同的 pom - mapreduce 作业是用 java class 定义的。所以那个 jar 中的所有这些作业都将使用相同的 pom。那很明显。您可以继续阅读有关构建、jar 引用、maven 用法、ant 比较(传统构建方式)与 maven 的内容 - 以提高您的知识