Apache hadoop 項(xiàng)目組最新消息,hadoop3.x以后將會(huì)調(diào)整方案架構(gòu),將Mapreduce 基于內(nèi)存+io+磁盤(pán),共同處理數(shù)據(jù)。
其實(shí)最大改變的是hdfs,hdfs 通過(guò)最近black塊計(jì)算,根據(jù)最近計(jì)算原則,本地black塊,加入到內(nèi)存,先計(jì)算,通過(guò)IO,共享內(nèi)存計(jì)算區(qū)域,最后快速形成計(jì)算結(jié)果。
1. Hadoop 3.0簡(jiǎn)介Hadoop 2.0是基于JDK 1.7開(kāi)發(fā)的,而JDK 1.7在2015年4月已停止更新,這直接迫使Hadoop社區(qū)基于JDK 1.8重新發(fā)布一個(gè)新的Hadoop版本,而這正是hadoop 3.0。
Hadoop 3.0的alpha版預(yù)計(jì)今年夏天發(fā)布,GA版本11月或12月發(fā)布。
Hadoop 3.0中引入了一些重要的功能和優(yōu)化,包括HDFS 可擦除編碼、多Namenode支持、MR Native Task優(yōu)化、YARN基于cgroup的內(nèi)存和磁盤(pán)IO隔離、YARN container resizing等。
2. Hadoop 3.0新特性Hadoop 3.0在功能和性能方面,對(duì)hadoop內(nèi)核進(jìn)行了多項(xiàng)重大改進(jìn),主要包括:
2.1 Hadoop Common
(1)精簡(jiǎn)Hadoop內(nèi)核,包括剔除過(guò)期的API和實(shí)現(xiàn),將默認(rèn)組件實(shí)現(xiàn)替換成最高效的實(shí)現(xiàn)(比如將FileOutputCommitter缺省實(shí)現(xiàn)換為v2版本,廢除hftp轉(zhuǎn)由webhdfs替代,移除Hadoop子實(shí)現(xiàn)序列化庫(kù)org.apache.hadoop.Records
(2)Classpath isolation以防止不同版本jar包沖突,比如google Guava在混合使用Hadoop、HBase和Spark時(shí),很容易產(chǎn)生沖突。(https://issues.apache.org/jira/browse/HADOOP-11656)
(3)Shell腳本重構(gòu)。 Hadoop 3.0對(duì)Hadoop的管理腳本進(jìn)行了重構(gòu),修復(fù)了大量bug,增加了新特性,支持動(dòng)態(tài)命令等。https://issues.apache.org/jira/browse/HADOOP-9902
2.2 Hadoop HDFS(1)HDFS支持?jǐn)?shù)據(jù)的擦除編碼,這使得HDFS在不降低可靠性的前提下,節(jié)省一半存儲(chǔ)空間。(https://issues.apache.org/jira/browse/HDFS-7285)
(2)多NameNode支持,即支持一個(gè)集群中,一個(gè)active、多個(gè)standby namenode部署方式。注:多ResourceManager特性在hadoop 2.0中已經(jīng)支持。(https://issues.apache.org/jira/browse/HDFS-6440)
2.3 Hadoop MapReduce(1)Tasknative優(yōu)化。為MapReduce增加了C/C++的map output collector實(shí)現(xiàn)(包括Spill,Sort和IFile等),通過(guò)作業(yè)級(jí)別參數(shù)調(diào)整就可切換到該實(shí)現(xiàn)上。對(duì)于shuffle密集型應(yīng)用,其性能可提高約30%。(https://issues.apache.org/jira/browse/MAPREDUCE-2841)
(2)MapReduce內(nèi)存參數(shù)自動(dòng)推斷。在Hadoop 2.0中,為MapReduce作業(yè)設(shè)置內(nèi)存參數(shù)非常繁瑣,涉及到兩個(gè)參數(shù):mapreduce.{map,reduce}.memory.mb和mapreduce.{map,reduce}.java.opts,一旦設(shè)置不合理,則會(huì)使得內(nèi)存資源浪費(fèi)嚴(yán)重,比如將前者設(shè)置為4096MB,但后者卻是“-Xmx2g”,則剩余2g實(shí)際上無(wú)法讓java heap使用到。(https://issues.apache.org/jira/browse/MAPREDUCE-5785)
2.4 Hadoop YARN(1)基于cgroup的內(nèi)存隔離和IO Disk隔離(https://issues.apache.org/jira/browse/YARN-2619)
(2)用curator實(shí)現(xiàn)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的最新參數(shù)
hadoop-3.0HADOOPMove to JDK8+Classpath isolation on by default HADOOP-11656
Shell script rewrite HADOOP-9902
Move default ports out of ephemeral range HDFS-9427
HDFSRemoval 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
YARNMAPREDUCEDerive heap size or mapreduce.*.memory.mb automatically MAPREDUCE-5785
在HDFS-7285中,實(shí)現(xiàn)了Erasure Coding這個(gè)新功能.鑒于此功能還遠(yuǎn)沒(méi)有到發(fā)布的階段,可能后面此塊相關(guān)的代碼還會(huì)進(jìn)行進(jìn)一步的改造,因此只是做一個(gè)所謂的預(yù)分析,幫助大家提前了解Hadoop社區(qū)目前是如何實(shí)現(xiàn)這一功能的.本人之前也沒(méi)有接觸過(guò)Erasure Coding技術(shù),中間過(guò)程也確實(shí)有些偶然,相信本文可以帶給大家收獲.
Erasure coding糾刪碼技術(shù)簡(jiǎn)稱EC,是一種數(shù)據(jù)保護(hù)技術(shù).最早用于通信行業(yè)中數(shù)據(jù)傳輸中的數(shù)據(jù)恢復(fù),是一種編碼容錯(cuò)技術(shù).他通過(guò)在原始數(shù)據(jù)中加入新的校驗(yàn)數(shù)據(jù),使得各個(gè)部分的數(shù)據(jù)產(chǎn)生關(guān)聯(lián)性.在一定范圍的數(shù)據(jù)出錯(cuò)情況下,通過(guò)糾刪碼技術(shù)都可以進(jìn)行恢復(fù).下面結(jié)合圖片進(jìn)行簡(jiǎn)單的演示,首先有原始數(shù)據(jù)n個(gè),然后加入m個(gè)校驗(yàn)數(shù)據(jù)塊.如下圖所示:
Parity部分就是校驗(yàn)數(shù)據(jù)塊,我們把一行數(shù)據(jù)塊組成為Stripe條帶,每行條帶由n個(gè)數(shù)據(jù)塊和m個(gè)校驗(yàn)塊組成.原始數(shù)據(jù)塊和校驗(yàn)數(shù)據(jù)塊都可以通過(guò)現(xiàn)有的數(shù)據(jù)塊進(jìn)行恢復(fù),原則如下:
如果校驗(yàn)數(shù)據(jù)塊發(fā)生錯(cuò)誤,通過(guò)對(duì)原始數(shù)據(jù)塊進(jìn)行編碼重新生成如果原始數(shù)據(jù)塊發(fā)生錯(cuò)誤, 通過(guò)校驗(yàn)數(shù)據(jù)塊的解碼可以重新生成。
而且m和n的值并不是固定不變的,可以進(jìn)行相應(yīng)調(diào)整。可能有人會(huì)好奇,這其中到底是什么原理呢? 其實(shí)道理很簡(jiǎn)單,你把上面這圖看成矩陣,由于矩陣的運(yùn)算具有可逆性,所以就能使數(shù)據(jù)進(jìn)行恢復(fù),給出一張標(biāo)準(zhǔn)的矩陣相乘圖,大家可以將二者關(guān)聯(lián)。
3. Hadoop3.0 總結(jié)
Hadoop 3.0的alpha版預(yù)計(jì)今年夏天發(fā)布,GA版本11月或12月發(fā)布。
Hadoop 3.0中引入了一些重要的功能和優(yōu)化,包括HDFS 可擦除編碼、多Namenode支持、MR Native Task優(yōu)化、YARN基于cgroup的內(nèi)存和磁盤(pán)IO隔離、YARN container resizing等。