【问题标题】:Running a hadoop job using java command使用 java 命令运行 hadoop 作业
【发布时间】:2015-01-17 16:19:40
【问题描述】:

我有一个简单的 java 程序来设置 MR 作业。我可以使用“hadoop jar”在 Hadoop 基础架构(hadoop 2x)中成功执行此操作。但我想用下面的 java 命令来实现同样的事情。

java 类名

  1. 如何将 hadoop 配置传递给这个 className?
  2. 我需要提供哪些额外的参数?
  3. 我们将不胜感激任何链接/文档。

【问题讨论】:

    标签: hadoop mapreduce hadoop2


    【解决方案1】:

    当您使用其他参数运行“hadoop jar”命令时,您可以使用 java 运行同样的方式。

    检查此命令是否计算为 hadoop 类路径

    $ hadoop classpath
    

    那么无论你的自定义 jar 是什么,都应该添加到类路径中

    $ java -cp `hadoop classpath`:/my/tools/jar/tools.jar
    

    我可以在我的 hadoop 集群上使用它

    【讨论】:

      【解决方案2】:

      我认为您找不到关于此的文档。 hadoop 命令是一个脚本,那里使用了很多类,例如。用于访问文件系统 FsShell 的类,运行 jar RunJar 时使用的类等。添加 hadoop 相关库,配置文件到类路径在 hadoop 命令本身中处理。

      你最好看看 hadoop 脚本。

      【讨论】:

        【解决方案3】:

        你怎么能做到这一点?任何 jar 文件执行意味着,它必须在分布式环境中执行,所有守护进程协同工作以完成执行。 我们不在本地或本地文件系统上运行。所以,它需要按照 hdfs 的规范执行,所以我认为我们不能像在本地文件系统中那样执行。

        【讨论】:

          【解决方案4】:

          Hadoop 是一个简化分布式计算的框架。在 hadoop 之前,程序员也了解并行处理和多线程概念。但是当你处理多台机器时,你需要知道如何

          1. 机器之间通信
          2. 网络处理
          3. 如果一台机器出现故障怎么办?容错 还有很多!这是一个巨大的,这就是 hadoop 简化你的工作的地方。它负责您所有的操作级别的东西,您可以只专注于您的业务逻辑。

          因此,就您而言,根据您的要求,没有直接的答案。因为通过传递参数,您的程序不起作用。您将需要编写大量库来处理分布式计算。如果您想探索它们,那么我建议您继续阅读 hadoop 源代码。

          http://hadoop.apache.org/version_control.html 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-30
            • 2014-10-07
            • 2017-02-19
            • 2013-07-24
            相关资源
            最近更新 更多