hadoop的terasort排序總結
hadoop傳統的排序是各個map任務對每個資料塊進行區域性排序,然後由一個reduce任務對所有資料進行全域性排序,這樣雖然map的並行度高,但reduce的單行化操作卻是排序的瓶頸,terasort排序利用trie樹(詞典查詢樹)的相關性質,讓reduce任務同樣並行化大大提高了大資料的排序效率。
(1)trie樹介紹
Trie樹,是一種樹形結構,是一種根節點不包含字元,除根節點外每一個節點都只包含一個字元; 從根節點到某一節點,路徑上經過的字元連線起來,為該節點對應的字串; 每個節點的所有子節點包含的字元都不相同。雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串(但不僅限於字串),所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是:利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較,查詢效率比雜湊表高。
根節點不包含字元,除根節點外每一個節點都只包含一個字元; 從根節點到某一節點,路徑上經過的字元連線起來,為該節點對應的字串; 每個節點的所有子節點包含的字元都不相同。
用trie樹排序原理:採用陣列的方式建立字典樹,這棵樹的每個結點的所有兒子很顯然地按照其字母大小排序。對這棵樹進行先序遍歷即可
(2)terasort排序原理
Terasort排序要經過:取樣->map對資料記錄做標記(標識出所屬的reduce編號)-》各個reduce區域性排序,再順序輸出。
a、 取樣
由jobclient對源資料進行全域性取樣,抽取部分資料然後排序,按reduce的個數對排序的資料進行分割,並將分割點暫存於分散式快取中。
b、每個map從快取中讀取出分割點,以陣列形式建立trie樹,並按先根遍歷標記出每條記錄所屬的reduce編號,此過程結束後,每個split將被map task分成r個塊,並且第i塊總是比第i+1塊大。
c、每個reduce進行區域性排序後,順序輸出即為最終的排序結果。
例子參照:http://dongxicheng.org/mapreduce/hadoop-terasort-analyse/
相關文章
- Hadoop-MapReduce-TeraSort-大資料排序例子Hadoop大資料排序
- Hadoop TerasortHadoop
- Hadoop的TeraSort問題Hadoop
- 修改 Hadoop TeraSort演算法 —— 按照LongWritable型別的Key排序Hadoop演算法型別排序
- Hadoop測試TeraSortHadoop
- 測試眼裡的Hadoop系列 之TerasortHadoop
- Hadoop TeraSort 基準測試實驗Hadoop
- Hadoop學習筆記 - Sort / TeraSort / TestDFSIOHadoop筆記
- hadoop基準測試_Hadoop TeraSort基準測試Hadoop
- 2. TeraSort在Hadoop分散式叢集中的執行Hadoop分散式
- Hadoop異常總結Hadoop
- hadoop實踐總結Hadoop
- 基於桶的排序之基數排序以及排序方法總結排序
- PHP 中的氣泡排序總結PHP排序
- 排序演算法總結之堆排序排序演算法
- 排序演算法總結之希爾排序排序演算法
- 【Hadoop篇】--Hadoop常用命令總結Hadoop
- Cloudera hadoop認證總結CloudHadoop
- java集合物件排序總結Java物件排序
- 排序演算法總結排序演算法
- Spark 與 Hadoop 關於 TeraGen/TeraSort 的對比實驗(包含原始碼)SparkHadoop原始碼
- 排序演算法總結之歸併排序排序演算法
- Hadoop架構的初略總結(1)Hadoop架構
- Hadoop架構的初略總結(2)Hadoop架構
- 面試中的排序演算法總結面試排序演算法
- hadoop(二)—hadoop配置、執行錯誤總結Hadoop
- Hadoop面試題總結(三)——MapReduceHadoop面試題
- Hadoop安裝錯誤總結Hadoop
- hadoop之 HDFS fs 命令總結Hadoop
- 排序演算法全總結排序演算法
- 前端 排序演算法總結前端排序演算法
- 常用排序演算法總結排序演算法
- Hadoop學習筆記之TeraSort修改後輸出翻倍異常Hadoop筆記
- 排序演算法總結之直接選擇排序排序演算法
- #排序演算法#【6】排序演算法總結排序演算法
- C++ sort排序函式的用法總結C++排序函式
- 常用的比較排序演算法總結排序演算法
- Java集合和陣列的排序方式總結Java陣列排序