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基準測試_Hadoop TeraSort基準測試Hadoop
- 2. TeraSort在Hadoop分散式叢集中的執行Hadoop分散式
- 【Hadoop篇】--Hadoop常用命令總結Hadoop
- Hadoop面試題總結Hadoop面試題
- 2024.7.13(hadoop學習總結)Hadoop
- Cloudera hadoop認證總結CloudHadoop
- hadoop(二)—hadoop配置、執行錯誤總結Hadoop
- Hadoop架構的初略總結(1)Hadoop架構
- Hadoop架構的初略總結(2)Hadoop架構
- 基於桶的排序之基數排序以及排序方法總結排序
- Hadoop安裝錯誤總結Hadoop
- PHP 中的氣泡排序總結PHP排序
- java集合物件排序總結Java物件排序
- Hadoop面試題總結(三)——MapReduceHadoop面試題
- 排序演算法全總結排序演算法
- C++ sort排序函式的用法總結C++排序函式
- 常用的比較排序演算法總結排序演算法
- 常見排序演算法總結排序演算法
- 常用排序演算法總結(1)排序演算法
- 常用排序演算法總結(2)排序演算法
- 八大基礎排序總結排序
- Hadoop/Spark相關面試問題總結HadoopSpark面試
- 幾種常見的排序演算法總結排序演算法
- PHP 排序演算法原理及總結PHP排序演算法
- MYSQL order by排序與索引關係總結MySql排序索引
- Redshift關於SORTKEY排序鍵、DISTKEY分配鍵的總結排序
- Hadoop自定義輸出排序方式Hadoop排序
- 幾種常見排序演算法總結排序演算法
- 資料結構與演算法整理總結---排序 2資料結構演算法排序
- [資料結構拾遺]字串排序演算法總結資料結構字串排序演算法
- 六種排序演算法的JavaScript實現以及總結排序演算法JavaScript
- 史上最全排序演算法總結!建議收藏排序演算法
- 排序演算法分析總結(附js實現)排序演算法JS
- 排序演算法原理總結和Python實現排序演算法Python
- 對資料結構和演算法的總結和思考(六)--計數排序資料結構演算法排序
- 對資料結構和演算法的總結和思考(三)--希爾排序資料結構演算法排序
- Hadoop習題彙總Hadoop
- 《演算法筆記》5. 字首樹、桶排序、排序演算法總結演算法筆記排序
- 『演算法』之 初級排序演算法總結演算法排序