Hadoop 複合 XDF 區塊大小
MapReduce 會將每個輸入的文字檔案分割成一或多個輸入分割在預設狀況是 HDFS 的區塊大小,例如 128 MB
-
每個輸入的分割會從未壓縮的未剖析文字轉換至輸出目錄 – xdfd 的一組標頭資訊的 「 資料 」 子目錄中的二進位的 xdfd 檔案位於 「 中繼資料 」 目錄中的單一 xdfm 中繼資料檔的壓縮和剖析輸出
-
為了提高效率,後續的分析中,每個輸出的 xdfd 檔案應該大致符合 HDFS 的區塊大小
-
為了彌補 XDF 壓縮,因此通常需要增加輸出 xdfd 檔案的大小,藉由增加輸入分割使用這項參數為 RxHadoopMR() 的大小︰
-
hadoopSwitches="-Dmapred.min.split.size=1000000000"
-
對於較新的 Hadoop 安裝使用 YARN,參數是 mapreduce.input.fileinputformat.split.minsize
-
-
增加分割大小進一步的輸入,則可能會降低複合的 XDF 檔案的數目以及因此平行化的對應數目工作在後續的分析。這可能是很有用,如果可用的地圖位置或容器的數目很小,相對於分割數目。相反地,當有許多對應介面槽或容器是可用時,較小的輸入分割及多個 xdfd 可能會導致更快完成。
-
範例
匯入的 670 MB,在使用分割大小 (32 MB) 的預設輸入 Hortonworks 沙箱內輸入的 CSV 建立 670/32 = 21 xdfd 的 rxSummary 效能 185"使用。 輸入的分割的大小增加至 150 MB 建立 5 xdfd 的每一個約 32 MB 的 68"rxSummary 效能。
rxSetComputeContext (RxHadoopMR(hadoopSwitches =
"-Dmapreduce.input.fileinputformat.split.minsize=150000000"))
rxImport (myCSV,myCXdf,覆寫 = TRUE)
完成後重新 rxSetComputeContext(RxHadoopMR()) # 組