有人在大數據上提交作業時遇到任何問題。數據大約爲5-10 TB未壓縮,大約在500K文件中。當我們嘗試提交一個簡單的java map reduce作業時,它大部分時間花在getsplits()函數調用上。並需要多個小時才能出現在工作追蹤器中。有沒有可能的解決方案來解決這個問題?Hadoop - 在大數據上提交作業的時間
-1
A
回答
0
它很大程度上取決於您的提交服務器(或您的筆記本電腦客戶端)的「強大」,也許您需要升級RAM和CPU以使getSplits調用速度更快。
我相信你會遇到交換問題,並且計算時間會比平常長多倍。
1
帶有500k個文件,您正花費大量時間樹步行來查找所有這些文件,然後需要將其分配給InputSplits列表(getSplits的結果)。
正如Thomas在他的回答中指出的那樣,如果執行作業提交的機器的JVM的內存分配量較低,那麼您將發現JVM執行垃圾回收的問題以嘗試查找內存需要建立這些500K文件的分割。
更糟糕的是,如果這些500K文件是可拆分的,並且大於單個塊大小,那麼您將得到更多的輸入拆分來處理文件(大小爲1GB的文件,塊大小爲256MB,假設輸入格式和文件壓縮支持分割文件,默認情況下會獲得4個地圖任務來處理該文件)。如果這適用於您的工作(查看您的工作產生的地圖任務數量,是否有超過500k?),那麼您可以通過修改mapred.min.split.size
配置屬性的大小來強制創建較少的映射器:塊大小(前面的例子設置爲1GB意味着你將得到一個映射器來處理文件,而不是4)。這將有助於getSplits方法的性能,getSplits的結果列表將更小,需要更少的內存。
問題的第二個症狀是將輸入拆分序列化到文件(客戶端),然後在作業追蹤器結束時的反序列化時間所需的時間。 500K +拆分需要時間,如果JVM內存限制較低,jobtracker將具有類似的GC問題。
相關問題
- 1. 提交Hadoop作業
- 2. 在Windows上使用Hadoop 2.6.0提交作業時出錯
- 3. 如何從另一個hadoop作業提交hadoop作業
- 4. Hadoop HDInsight .NET SDK API提交作業
- 5. 加載大文件時Flink作業在提交時掛起
- 6. 從oozie提交豬作業
- 7. 如何在linux上提交R作業?
- 8. 使用qsub在SGE上提交作業
- 9. 在lsf集羣上提交mpi作業
- 10. 在倍頻上Coursera ML提交作業
- 11. 如何在作業提交前將jar分發給hadoop
- 12. 在Sqoop2客戶端API中提交作業時出現問題
- 13. 的Hadoop - 提交作業,有很多的依賴(jar文件)
- 14. 的Hadoop作業失敗,本地SimString C代碼大型數據
- 15. hadoop FIFO調度不會使提交的作業並行運行?
- 16. Hadoop:提交作業後客戶端的CPU負載過高
- 17. 提交Hadoop作業有哪些不同的方式?
- 18. 使用AWS Hadoop集羣設置的Spark作業提交
- 19. Ambari HDP在提交mapreduce作業時拋出mapreduce.tar.gz的FileNotFoundException
- 20. 作業提交在星火作業服務器提供的NullPointerException
- 21. YARN REST API - Spark作業提交
- 22. 配置的MapReduce作業提交
- 23. 提取hadoop作業的屬性
- 24. 完成作業後提交批作業
- 25. 如何將多個作業提交到hadoop羣集
- 26. 從哪裏提交hadoop作業,重要嗎?
- 27. 鏈接多個hadoop作業,無需等待提交
- 28. 如何從Web應用程序提交作業到hadoop羣集?
- 29. Hadoop - 編譯成功但提交作業失敗後
- 30. Hadoop YARN作業提交後狀態保持未定義