MapReduce的shuffle阶段
生活随笔
收集整理的這篇文章主要介紹了
MapReduce的shuffle阶段
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Shuffle
為何需要shuffle
? Reduce階段的數據來源于不同的Map
Shuffle由Map端和Reduce端組成
Shuffle的核心機制
? 數據分區+排序
Map端
? 對Map輸出結果進行spill
Reduce端
? 拷貝Map端輸出結果到本地
? 對拷貝的數據進行歸并排序Shuffle Map端
Map端會源源不斷的把數據輸入到一個環形內存緩沖區
達到閾值(默認80%)時
? 新啟動一個線程
? 把內存緩沖區的數據溢寫到磁盤
在溢出的過程中
? Partitioner分組
? 對于每個組,按照key排序
Map處理完成后
? 對溢出到磁盤上的多個文件進行Merge操作
? 合并為一個大文件和一個索引文件Shuffle Reduce端
Map端完成之后后暴露一個Http Server給Reduce端獲取數據使用
Reduce啟動拷貝線程從各個Map端拷貝結果
? 大量的網絡IO開銷
一邊拷貝一邊進行Merge操作(歸并排序)
總結
以上是生活随笔為你收集整理的MapReduce的shuffle阶段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联发科天玑9000+跑分首曝:安卓CPU
- 下一篇: Spark-三大数据结构之-广播变量