Azure 如何运行HDInsight作业

Azure 如何运行HDInsight作业,azure,hadoop,azure-hdinsight,Azure,Hadoop,Azure Hdinsight,关于HDInsight jobs方法的几个问题 1) 如何安排HDInsight作业?有什么现成的解决办法吗?例如,如果我的系统将不断收集大量新的输入文件,我们需要在这些文件上运行map/reduce作业,那么建议采用什么方法来实现持续处理 2) 从价格角度来看,建议在没有作业运行时删除HDInsight群集。据我所知,如果我们决定每天运行作业,就没有办法自动化这个过程?这里有什么建议吗 3) 是否有办法确保相同的文件不会被多次处理?你如何解决这个问题 4) 我可能弄错了,但看起来每个hdins

关于HDInsight jobs方法的几个问题

1) 如何安排HDInsight作业?有什么现成的解决办法吗?例如,如果我的系统将不断收集大量新的输入文件,我们需要在这些文件上运行map/reduce作业,那么建议采用什么方法来实现持续处理

2) 从价格角度来看,建议在没有作业运行时删除HDInsight群集。据我所知,如果我们决定每天运行作业,就没有办法自动化这个过程?这里有什么建议吗

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


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

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

  • 在HDInsight中,实际上没有安排作业提交的方法,不过您当然可以安排一个程序来运行作业提交。根据您的工作流程,可能值得一看Oozie,它可能会有点尴尬,但应该会有所帮助

  • 在价格方面,我建议如果您不使用集群,您应该销毁它,并在需要时将其带回来(这些计算时间真的可以加起来!)。请注意,这将丢失HDFS中的所有内容,主要是中间结果,asv存储中保存的任何输出或输入数据将保留在和Azure存储帐户中。您当然可以通过使用CLI工具或CLI工具使用的rest接口来实现自动化。(见我的答案,第一个已经过时了)

  • 我会确保每个文件只提交一次作业,并依靠Hadoop处理重试和可靠性方面的问题,这样就不需要管理应用程序中的任何重试

  • 获得初始流程的输出后,如果要将其减少为单个输出以进行报告,最好的选择可能是使用输出作为输入的辅助MapReduce作业

    如果您不关心单个中间作业,可以通过作业链接将它们直接链接到一个MapReduce作业中(该作业可以包含任意多个map和reduce步骤),请参见基于java的示例。遗憾的是,.NETAPI目前不支持这种形式的作业链接

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