0
因此,據我瞭解,當hdfs存儲一個塊大小爲64 MB的bzip2壓縮1GB文件時,該文件將被存儲爲16個不同的塊。如果我想在此壓縮文件上運行map-reduce作業,map reduce會嘗試再次分割文件。爲什麼mapreduce不會自動使用hdfs中的16個塊而不是再次分割文件?爲什麼mapreduce將壓縮文件拆分爲輸入拆分?
因此,據我瞭解,當hdfs存儲一個塊大小爲64 MB的bzip2壓縮1GB文件時,該文件將被存儲爲16個不同的塊。如果我想在此壓縮文件上運行map-reduce作業,map reduce會嘗試再次分割文件。爲什麼mapreduce不會自動使用hdfs中的16個塊而不是再次分割文件?爲什麼mapreduce將壓縮文件拆分爲輸入拆分?
我想我明白你的困惑來自哪裏。我會嘗試清除它。
HDFS將您的文件切成塊。這些是文件的物理分區。
MapReduce創建邏輯拆分這些塊的頂部。這些分割是基於許多參數定義的,塊邊界和位置是一個巨大的因素。您可以將最小分割大小設置爲128MB,在這種情況下,每個分割可能只有兩個64MB塊。
所有這些與您的bzip2壓縮無關。如果您使用過gzip壓縮,則每個分割將是一個完整的文件,因爲gzip不是可分割的壓縮。
你是什麼意思「再次分裂」?你是說MapReduce選擇不同於你期望的分割? – climbage
例如,您有自己的輸入格式,需要按照序列'abc123'拆分文件。顯然,你必須通過文件並重新將其分解。 –
嗨@climbage將文件分割成塊存儲在hdfs中,並且爲map減少作業分割文件是兩個獨立的進程。我的問題:如果文件在hdfs上以塊的形式存儲,地圖如何以及爲什麼減少作業再次拆分文件?我希望這個問題更清楚。 – bhuvana