輸入塊(inputsplit):乙個輸入塊描述了構成mapreduce程式中單個map任務的乙個單元。把乙個mapreduce程式應用到乙個資料集上,即是指乙個作業,會由幾個(也可能幾百個)任務組成。map任務可能會讀取整個檔案,但一般是讀取檔案的一部分。預設情況下,fileinputformat及其子類會以64mb(與hdfs的block預設大小相同,譯註:hadoop建議split大小與此相同)為基數來拆分檔案。你可以在hadoop-site.xml(譯註:0.20.*以後是在mapred-default.xml裡)檔案內設定mapred.min.split.size引數來控制具體劃分大小,或者在具體mapreduce作業的jobconf物件中重寫這個引數。通過以塊形式處理檔案,我們可以讓多個map任務並行的操作乙個檔案。如果檔案非常大的話,這個特性可以通過並行處理大幅的提公升效能。更重要的是,因為多個塊(block)組成的檔案可能會分散在集群內的好幾個節點上(譯註:事實上就是這樣),這樣就可以把任務排程在不同的節點上;因此所有的單個塊都是本地處理的,而不是把資料從乙個節點傳輸到另外乙個節點。當然,日誌檔案可以以明智的塊處理方式進行處理,但是有些檔案格式不支援塊處理方式。針對這種情況,你可以寫乙個自定義的inputformat,這樣你就可以控制你檔案是如何被拆分(或不拆分)成檔案塊的。自定義的檔案格式在
第五部分有描述。
輸出格式 描述
textoutputformat
預設的輸出格式, 以 "key \t value" 的方式輸出行
sequencefileoutputformat
輸出二進位制檔案,適合於讀取為子mapreduce作業的輸入
nulloutputformat
忽略收到的資料,即不做輸出
MapReduce資料流(一)
在 作業由那些基本元件組成,從高層來看,所有的元件在一起工作時如下圖所示 圖4.4高層mapreduce工作流水線 近距離觀察 圖4.5細節化的hadoop mapreduce資料流 圖4.5展示了流線水中的更多機制。雖然只有2個節點,但相同的流水線可以複製到跨越大量節點的系統上。下去的幾個段落會詳...
hdfs 資料流(二)
大部分的hdfs程式對檔案操作需要的是一次寫多次讀取的操作模式。乙個檔案一旦建立 寫入 關閉之後就不需要修改了。這個假定簡單化了資料一致的問題和並使高吞吐量的資料訪問變得可能。1.讀檔案 從上圖可以看出,客戶端讀取資料時,首先從namenode獲取如下資訊 這些元資料資訊是在記憶體中,所以查詢速度很...
TCP互動資料流 成塊資料流
tcp資料流分類 基於tcp的各類解決方案,可以根據資料吞吐量來大致分成兩大類 1 互動資料型別,例如telnet,ssh,這種型別的協議在大多數情況下只是做小流量的資料交換,比如說按一下鍵盤,回顯一些文字等等。2 資料成塊型別,例如ftp,這種型別的協議要求tcp能盡量的運載資料,把資料的吞吐量做...