組合器適用的用例和組合器不適用的用例有哪些。我知道組合器的功能,但我想了解組合器有意義的不同用例。Apache hadoop組合器
回答
源:Hadoop的明確指導:
運行組合器功能使得更緊湊的地圖輸出,所以有較少的數據寫入到本地磁盤和轉移到減速機。
如果只有一個或兩個溢出,地圖輸出大小的潛在減少不值得調用組合器的開銷,所以它不會再爲該地圖輸出運行。
什麼是溢出:每個map任務都有一個循環的內存緩衝區,它將輸出寫入。當緩衝區的內容達到特定的閾值大小(80%)時,後臺線程將開始將內容溢出到磁盤。
如果組合器符合標準(交換和關聯),IMO總是運行組合器。 Hadoop框架將決定是否運行組合器(基於地圖輸出大小/沒有溢出),因此您不必擔心性能下降。
普通地圖輸出字數例如在處理文件以下是
file1的:
這是一本書
這是一個書架
地圖O/P:
這個1
是1
a 1
book 1
th是1
是1
1個
書架爲了避免這樣的在網絡中的龐大的數據傳輸1
現在,組合器被使用,這是一種正常減速碼,因此,如果我們將自定義寫入組合器的地圖O/p將是:
此1,1
是1,1-
1,1-
書1
書架1
這樣減少了網絡中數據傳輸到reducer節點。
2.關於降低性能:現在如果在文件中的總線是非常大的,而不是避免大的數據傳送組合是有用的,但如果其僅總線是2,比組合器將添加上述示例它的執行開銷。
合併器主要用於減少Reducers需要處理的數據量。他們被稱爲迷你減速器。
一個用例,以更好地解釋:
輸出從映射器輸入到減速在沒有合的
<What,1> <do,1> <you,1> <mean,1> <by,1> <Object,1>
<What,1> <do,1> <you,1> <know,1> <about,1> <Java,1>
<What,1> <is,1> <Java,1> <Virtual,1> <Machine,1>
<How,1> <Java,1> <enabled,1> <High,1> <Performance,1>
輸出從映射器 - >合,其輸入到減速器與組合器功能
<What,1,1,1> <do,1,1> <you,1,1> <mean,1> <by,1> <Object,1>
<know,1> <about,1> <Java,1,1,1>
<is,1> <Virtual,1> <Machine,1>
<How,1> <enabled,1> <High,1> <Performance,1>
即使在這個小例子中,您可以明顯看到使用組合器的數據傳輸減少量。想象一下具有萬億字節數據的萬字的情景,您可以看到巨大的網絡帶寬節省。
何時使用組合器?
您可以使用Combiner作爲字數統計的例子。
組合器只能在是可交換 (A·B = b.a)和關聯的功能可以使用(一個。(b.c)=(A·B).c)中。
當你不應該使用Combiner?
簡單。如果上述情況無效。例如將字數計算示例替換爲從員工列表中計算平均(平均)年齡。如果你將所有的值從Mapper傳遞給Reducer,你會得到不同的年齡平均值(平均值)。如果您從單個映射器發送數據子集,則會得到不同的年齡平均值。
合和減速機之間的差異,可以檢查here和
當不使用合成器可以檢查here
- 1. Hadoop/Hbase:java.lang.NoClassDefFoundError:org/apache/hadoop/hbase/HBaseConfiguration
- 2. Hadoop將數據從映射器減少到組合器
- 3. 當Hadoop MapReduce運行一個組合器時的確切來源
- 4. 在hadoop streaming mapreduce中使用組合器(使用mrjob)
- 5. MultipleOutputs了Apache的Hadoop 0.20.203
- 6. Apache Pig和Hadoop的實現
- 7. java.lang.NoClassDefFoundError:org/apache/hadoop/security/authorize/RefreshAuthorizationPolicyProtocol
- 8. 不能在Apache Hadoop的2.7.3
- 9. 沒有hadoop的Apache Flume
- 10. Apache Hadoop字數錯誤
- 11. httpfs for hadoop apache下載
- 12. Apache Ignite Hadoop加速器MapReduce作業不在JobHistory服務器中
- 13. 用於文本的Hadoop合併器類
- 14. apache hadoop,hbase和nutch組件分佈爲4個服務器集羣
- 15. Hadoop合併文件
- 16. 合砍Hadoop的流
- 17. Apache的重寫和別名組合
- 18. Apache Ignite SQL查詢組合主鍵NET
- 19. 使用APACHE Web服務器訪問HDFS HADOOP Linux CentOS
- 20. 哪個Hadoop版本符合RHive要求
- 21. 在Cognos BI環境中使用Apache Hadoop
- 22. Apache Spark與Hadoop方法有何不同?
- 23. Spark SqlContext和Hbase:java.lang.NoClassDefFoundError:org/apache/hadoop/hbase/util/Bytes
- 24. Spark Streaming + Hbase:NoClassDefFoundError:org/apache/hadoop/hbase/spark/HBaseContext
- 25. JBoss Drools與Apache Hadoop的集成
- 26. Spark是Apache Hadoop的替代品
- 27. 在Apache Marathon上運行Hadoop/Storm任務
- 28. 構建Apache Pig for Hadoop 2.4版本
- 29. 在Apache的Hadoop的執行helloworld.java
- 30. 在Apache Hadoop和Hive上安裝Hue(Redhat)
看一看這個問題:http://stackoverflow.com/questions/33406566/combiner -inplementation和內部加工/ 33408776#33408776 –