运行hdinsight作业如何

6bc51xsx  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(324)

关于hdinsight jobs方法的几个问题。
1) 如何安排hdinsight作业?有什么现成的解决办法吗?例如,如果我的系统将不断收集大量新的输入文件,我们需要在这些文件上运行map/reduce作业,那么建议采用什么方法来实现正在进行的处理?
2) 从价格的Angular 来看,建议在没有作业运行时删除hdinsight集群。据我所知,如果我们决定每天运行作业,就没有办法自动化这个过程?有什么建议吗?
3) 有没有办法确保相同的文件不会被多次处理?你如何解决这个问题?
4) 我可能弄错了,但看起来每个hdinsight作业都需要一个新的输出存储文件夹来存储结果。合并这些结果的最佳做法是什么,以便报告始终适用于整个数据集?

lh80um4z

lh80um4z1#

好吧,里面有很多问题!我希望这里有一些快速的答案。
在hdinsight中实际上没有一种安排作业提交的方法,当然您可以安排一个程序来运行作业提交。根据您的工作流程,可能值得一看oozie,它可能有点尴尬,但应该会有所帮助。
在价格方面,我建议如果您不使用集群,您应该销毁它,并在需要时重新使用它(这些计算时间真的可以加起来!)。请注意,这将丢失hdfs中的所有内容(主要是中间结果),asv存储中保存的任何输出或输入数据都将保留在和azure存储帐户中。您当然可以通过使用cli工具或cli工具使用的rest接口来实现自动化(在azure上的hadoop上看到我的答案(创建新集群,第一个已经过时了)。
为此,我要确保每个文件只提交一次作业,并依靠hadoop处理重试和可靠性方面的问题,这样就不需要管理应用程序中的任何重试。
一旦您拥有了来自初始流程的输出,如果您想要将它们减少到单个输出以进行报告,那么最佳匹配可能是一个辅助mapreduce作业,它将输出作为其输入。
如果您不关心单个中间作业,您可以通过作业链接将它们直接链接到一个mapreduce作业(该作业可以包含任意多个map和reduce步骤)中请参见hadoop中的链接多个mapreduce作业以获取基于java的示例。遗憾的是.NETAPI目前不支持这种形式的作业链接。
但是,如果您的案例允许使用reducer->combiner方法,那么您可以只使用reducercombinerbase类。

相关问题