日期:2016-06-02]apache
Apache hadoop 項目組最新消息,hadoop3.x之後將會調整方案架構,將Mapreduce 基於內存+io+磁盤,共同處理數據。架構
其實最大改變的是hdfs,hdfs 經過最近black塊計算,根據最近計算原則,本地black塊,加入到內存,先計算,經過IO,共享內存計算區域,最後快速造成計算結果。oop
Hadoop 3.0中引入了一些重要的功能和優化,包括HDFS 可擦除編碼、多Namenode支持、MR Native Task優化、YARN基於cgroup的內存和磁盤IO隔離、YARN container resizing等。性能
http://event.chinahadoop.com/verifyuser.php?r_id=2&c_id=324&t=ppt&f=liuyi.pdf優化
2. Hadoop 3.0新特性
Hadoop 3.0在功能和性能方面,對hadoop內核進行了多項重大改進,主要包括:
2.1 Hadoop Common
(1)精簡Hadoop內核,包括剔除過時的API和實現,將默認組件實現替換成最高效的實現(好比將FileOutputCommitter缺省實現換爲v2版本,廢除hftp轉由webhdfs替代,移除Hadoop子實現序列化庫org.apache.hadoop.Records
(2)Classpath isolation以防止不一樣版本jar包衝突,好比google Guava在混合使用Hadoop、HBase和Spark時,很容易產生衝突。(https://issues.apache.org/jira/browse/HADOOP-11656)
(3)Shell腳本重構。 Hadoop 3.0對Hadoop的管理腳本進行了重構,修復了大量bug,增長了新特性,支持動態命令等。https://issues.apache.org/jira/browse/HADOOP-9902
2.2 Hadoop HDFS
(1)HDFS支持數據的擦除編碼,這使得HDFS在不下降可靠性的前提下,節省一半存儲空間。(https://issues.apache.org/jira/browse/HDFS-7285)
(2)多NameNode支持,即支持一個集羣中,一個active、多個standby namenode部署方式。注:多ResourceManager特性在hadoop 2.0中已經支持。(https://issues.apache.org/jira/browse/HDFS-6440)
2.3 Hadoop MapReduce
(1)Tasknative優化。爲MapReduce增長了C/C++的map output collector實現(包括Spill,Sort和IFile等),經過做業級別參數調整就可切換到該實現上。對於shuffle密集型應用,其性能可提升約30%。(https://issues.apache.org/jira/browse/MAPREDUCE-2841)
(2)MapReduce內存參數自動推斷。在Hadoop 2.0中,爲MapReduce做業設置內存參數很是繁瑣,涉及到兩個參數:mapreduce.{map,reduce}.memory.mb和mapreduce.{map,reduce}.java.opts,一旦設置不合理,則會使得內存資源浪費嚴重,好比將前者設置爲4096MB,但後者倒是「-Xmx2g」,則剩餘2g實際上沒法讓java heap使用到。(https://issues.apache.org/jira/browse/MAPREDUCE-5785)
2.4 Hadoop YARN
(1)基於cgroup的內存隔離和IO Disk隔離(https://issues.apache.org/jira/browse/YARN-2619)
(2)用curator實現RM leader選舉(https://issues.apache.org/jira/browse/YARN-4438)
(3)containerresizing(https://issues.apache.org/jira/browse/YARN-1197)
(4)Timelineserver next generation (https://issues.apache.org/jira/browse/YARN-2928)
如下是hadoop-3.0的最新參數
hadoop-3.0
- HADOOP
- Move to JDK8+
-
Classpath isolation on by default HADOOP-11656
-
Shell script rewrite HADOOP-9902
-
Move default ports out of ephemeral range HDFS-9427
- HDFS
-
Removal of hftp in favor of webhdfs HDFS-5570
-
Support for more than two standby NameNodes HDFS-6440
-
Support for Erasure Codes in HDFS HDFS-7285
-
- YARN
- MAPREDUCE
-
Derive heap size or mapreduce.*.memory.mb automatically MAPREDUCE-5785
-
在HDFS-7285中,實現了Erasure Coding這個新功能.鑑於此功能還遠沒有到發佈的階段,可能後面此塊相關的代碼還會進行進一步的改造,所以只是作一個所謂的預分析,幫助你們提早了解Hadoop社區目前是如何實現這一功能的.本人以前也沒有接觸過Erasure Coding技術,中間過程也確實有些偶然,相信本文能夠帶給你們收穫.
Erasure coding糾刪碼技術簡稱EC,是一種數據保護技術.最先用於通訊行業中數據傳輸中的數據恢復,是一種編碼容錯技術.他經過在原始數據中加入新的校驗數據,使得各個部分的數據產生關聯性.在必定範圍的數據出錯狀況下,經過糾刪碼技術均可以進行恢復.下面結合圖片進行簡單的演示,首先有原始數據n個,而後加入m個校驗數據塊.以下圖所示:
Parity部分就是校驗數據塊,咱們把一行數據塊組成爲Stripe條帶,每行條帶由n個數據塊和m個校驗塊組成.原始數據塊和校驗數據塊均可以經過現有的數據塊進行恢復,原則以下:
若是校驗數據塊發生錯誤,經過對原始數據塊進行編碼從新生成若是原始數據塊發生錯誤, 經過校驗數據塊的解碼能夠從新生成。
並且m和n的值並非固定不變的,能夠進行相應調整。可能有人會好奇,這其中究竟是什麼原理呢? 其實道理很簡單,你把上面這圖當作矩陣,因爲矩陣的運算具備可逆性,因此就能使數據進行恢復,給出一張標準的矩陣相乘圖,你們能夠將兩者關聯。
3. Hadoop3.0 總結
Hadoop 3.0的alpha版預計今年夏天發佈,GA版本11月或12月發佈。
Hadoop 3.0中引入了一些重要的功能和優化,包括HDFS 可擦除編碼、多Namenode支持、MR Native Task優化、YARN基於cgroup的內存和磁盤IO隔離、YARN container resizing等。