2013-08-29 55 views
1

關於HDInsight作業方法的幾個問題。運行HDInsight作業howto

1)如何安排HDInsight工作?有沒有現成的解決方案?例如,如果我的系統將不斷獲取大量收集的我們需要運行map/reduce作業的新輸入文件,那麼實施正在進行的處理的推薦方式是什麼?

2)從價格的角度來看,建議在沒有作業運行的時候刪除HDInsight羣集。據我所知,如果我們決定每天運行這項工作,就沒有辦法讓這個過程自動化了。任何建議嗎?

3)有沒有辦法確保相同的文件不會被多次處理?你如何解決這個問題?

4)我可能會誤解,但它看起來像每個hdinsight作業需要一個新的輸出存儲文件夾來存儲reducer結果。合併這些結果的最佳做法是什麼,以便報告始終適用於整個數據集?

回答

2

好的,那裏有很多問題!這裏是我希望的幾個快速答案。

  1. 是不是真的在HDInsight調度作業提交的方式,不過當然你也可以安排一個程序運行作業提交給你的。根據您的工作流程,可能需要看看Oozie,這對於開始使用HDInsight可能有些尷尬,但應該有所幫助。在價格方面,我會建議如果你不使用集羣,你應該銷燬它,並在需要時將其重新帶回(這些計算時間可以真正加起來!)。請注意,這會丟失HDFS中的任何內容,這應該主要是中間結果,asv存儲中保存的任何輸出或輸入數據都將保留在Azure存儲帳戶中。您當然可以通過使用CLI工具或CLI工具使用的其他接口自動執行此操作。 (請參閱我的回答Hadoop on Azure Create New Cluster,第一個已過時)。

  2. 我會這樣做,通過確保我只爲每個文件提交一次作業,並依靠Hadoop來處理重試和可靠性方面,因此無需管理應用程序中的任何重試。

  3. 一旦您從初始流程中獲得輸出,如果您希望將它們減少爲單個輸出以進行報告,那麼最佳投注可能是以輸出爲輸入的輔助MapReduce作業。

    如果您不關心個別中間作業,可以通過Job鏈接將這些直接鏈接到一個MapReduce作業(可以包含儘可能多的地圖並減少步驟),請參閱Chaining multiple MapReduce jobs in Hadoop例。可悲的是,.NET api目前不支持這種形式的工作鏈。

    但是,如果您的情況允許使用Reducer-> Combiner方法,則可以使用ReducerCombinerBase類。