1

关于 HDInsight 作业方法的几个问题。

1) 如何安排 HDInsight 作业?有没有现成的解决方案?例如,如果我的系统会不断收集大量新的输入文件,我们需要在这些文件上运行 map/reduce 作业,那么推荐的实现持续处理的方法是什么?

2)从价格上看,建议在没有作业运行的时候去掉HDInsight集群。据我了解,如果我们决定每天运行这项工作,就没有办法自动化这个过程?这里有什么建议吗?

3)有没有办法确保相同的文件不会被多次处理?你如何解决这个问题?

4)我可能弄错了,但看起来每个 hdinsight 作业都需要一个新的输出存储文件夹来存储减速器结果。合并这些结果以使报告始终适用于整个数据集的最佳做法是什么?

4

1 回答 1

3

好的,里面有很多问题!这里是我希望一些快速的答案。

  1. 在 HDInsight 中并没有真正安排作业提交的方法,尽管您当然可以安排一个程序来为您运行作业提交。根据您的工作流程,可能值得看一下 Oozie,这对于开始使用 HDInsight 可能有点尴尬,但应该会有所帮助。

  2. 在价格方面,我建议如果您不使用集群,您应该销毁它并在需要时将其重新带回(这些计算时间真的可以加起来!)。请注意,这将丢失您在 HDFS 中的所有内容,这应该主要是中间结果,保存在 asv 存储中的任何输出或输入数据都将保留在 Azure 存储帐户中。您当然可以通过使用 CLI 工具或 CLI 工具使用的其余接口来自动执行此操作。(请参阅我在 Azure Create New Cluster上对 Hadoop 的回答,第一个已过时)。

  3. 我会通过确保我只为每个文件提交一次作业来做到这一点,并依靠 Hadoop 来处理重试和可靠性方面,因此无需管理应用程序中的任何重试。

  4. 一旦您获得了初始流程的输出,如果您想将它们减少为单个输出以报告最佳选择,则可能是将输出作为其输入的辅助 MapReduce 作业。

    如果您不关心各个中间作业,您可以通过作业链接将它们直接链接到一个 MapReduce 作业(它可以包含任意数量的 map 和 reduce 步骤),请参阅Chaining multiple MapReduce jobs in Hadoop for a java基于示例。遗憾的是 .NET api 目前不支持这种形式的作业链接。

    但是,如果您的案例允许使用 Reducer->Combiner 方法,则您可以只使用 ReducerCombinerBase 类。

于 2013-08-30T10:48:16.297 回答