4.2 排序(SORT) 在MapReduce中,排序的目的有兩個: MapReduce可以通過排序將Map輸出的鍵分組。然后每組鍵調用一次reduce。 在某些需要排序的特定場景中,用 ...
4.2 排序(SORT) 在MapReduce中,排序的目的有兩個: MapReduce可以通過排序將Map輸出的鍵分組。然后每組鍵調用一次reduce。 在某些需要排序的特定場景中,用 ...
6.2 診斷性能瓶頸 有的時候作業的執行時間會長得驚人。想靠猜也是很難猜對問題在哪。這一章中將介紹如何界定問題,找到根源。涉及的工具中有的是Hadoop自帶的,有的是本書提供的。 ...
4.1.3 半連接(Semi-join) 假設一個場景,需要連接兩個很大的數據集,例如,用戶日志和OLTP的用戶數據。任何一個數據集都不是足夠小到可以緩存在map作業的內存中。這樣看來,似乎就不能使 ...
4.1 連接(Join) 連接是關系運算,可以用於合並關系(relation)。對於數據庫中的表連接操作,可能已經廣為人知了。在MapReduce中,連接可以用於合並兩個或多個數據集。例如,用戶基本 ...
6.4.4 減小數據傾斜的性能損失 數據傾斜是數據中的常見情況。數據中不可避免地會出現離群值(outlier),並導致數據傾斜。這些離群值會顯著地拖慢MapReduce的執行。常見的數據傾斜有以下幾 ...
5.1 小文件 大數據這個概念似乎意味着處理GB級乃至更大的文件。實際上大數據可以是大量的小文件。比如說,日志文件通常增長到MB級時就會存檔。這一節中將介紹在HDFS中有效地處理小文件的技術。 ...
5.2 基於壓縮的高效存儲 (僅包括技術25,和技術26) 數據壓縮可以減小數據的大小,節約空間,提高數據傳輸的效率。在處理文件中,壓縮很重要。在處理Hadoop的文件時,更是如此。為了讓Hado ...
4.2.2 總排序(Total order sorting) 有的時候需要將作業的的所有輸出進行總排序,使各個輸出之間的結果是有序的。有以下實例: 如果要得到某個網站中最受歡迎的網址(URL ...
6.4.3 優化洗牌(shuffle)和排序階段 洗牌和排序階段都很耗費資源。洗牌需要在map和reduce任務之間傳輸數據,會導致過大的網絡消耗。排序和合並操作的消耗也是很顯著的。這一節將介紹一系 ...
4.3 抽樣(Sampling) 用基於MapReduce的程序來處理TB級的數據集,要花費的時間可能是數以小時計。僅僅是優化代碼是很難達到良好的效果。 在開發和調試代碼的時候,沒有必要處理整個數 ...