我注意到500個mappers中差不多有3倍的完成時間差。如何檢查映射器的輸入大小(以字節爲單位)?
當我檢查日誌(通過JobTracker Web界面)時,我發現差異主要在第一次泄漏時間(「完成泄漏0」)。
這似乎意味着每個映射器的輸入文件大小差異並不是真正的因素。可能是不同節點之間的性能差異?任何見解/評論將受到歡迎!
我注意到500個mappers中差不多有3倍的完成時間差。如何檢查映射器的輸入大小(以字節爲單位)?
當我檢查日誌(通過JobTracker Web界面)時,我發現差異主要在第一次泄漏時間(「完成泄漏0」)。
這似乎意味着每個映射器的輸入文件大小差異並不是真正的因素。可能是不同節點之間的性能差異?任何見解/評論將受到歡迎!
這實際上取決於你的mapper正在做什麼來調查差異。您必須根據地圖工作職能以及涉及哪些I/O和處理進行調查。
有三個問題可能導致mappers中不同的性能差異。
此外,如果您正在執行命令行你的工作,你應該看到類似這樣的輸出(用於網絡I/O)
mapred.JobClient: SLOTS_MILLIS_MAPS=2958530
mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0
mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0
mapred.JobClient: Launched map tasks=1
mapred.JobClient: SLOTS_MILLIS_REDUCES=0
mapred.JobClient: FileSystemCounters
mapred.JobClient: HDFS_BYTES_READ=87
mapred.JobClient: FILE_BYTES_WRITTEN=58294
mapred.JobClient: HDFS_BYTES_WRITTEN=248301
mapred.JobClient: Map-Reduce Framework
mapred.JobClient: Map input records=1679
mapred.JobClient: Physical memory (bytes) snapshot=267583488
mapred.JobClient: Spilled Records=0
mapred.JobClient: CPU time spent (ms)=2580
mapred.JobClient: Total committed heap usage (bytes)=158334976
mapred.JobClient: Virtual memory (bytes) snapshot=927236096
mapred.JobClient: Map output records=1679
mapred.JobClient: SPLIT_RAW_BYTES=87
mapreduce.ImportJobBase: Transferred 242.4814 KB in 2,964.2976 seconds (83.7639 bytes/sec)
mapreduce.ImportJobBase: Retrieved 1679 records.
您可以從數據處理和寫入看到文件以及傳輸時間。
[編輯:]
有基準可用,可以幫助你檢查出Hadoop集羣的特點:
你能提供之間的一些詳細信息更快,更慢地運行地圖任務(地圖輸入記錄,地圖輸出記錄,數據和機架位置?) –