天天看點

Hadoop3.0新特性介紹,比Spark快10倍的Hadoop3.0新特性

Hadoop3.0新特性介紹,比Spark快10倍的Hadoop3.0新特性 Apache hadoop 項目組最新消息,hadoop3.x以後将會調整方案架構,将Mapreduce 基于記憶體+io+磁盤,共同處理資料。 其實最大改變的是hdfs,hdfs 通過最近black塊計算,根據最近計算原則,本地black塊,加入到記憶體,先計算,通過IO,共享記憶體計算區域,最後快速形成計算結果。

Hadoop3.0新特性介紹,比Spark快10倍的Hadoop3.0新特性

Apache hadoop 項目組最新消息,hadoop3.x以後将會調整方案架構,将Mapreduce 基于記憶體+io+磁盤,共同處理資料。

其實最大改變的是hdfs,hdfs 通過最近black塊計算,根據最近計算原則,本地black塊,加入到記憶體,先計算,通過IO,共享記憶體計算區域,最後快速形成計算結果。

1. Hadoop 3.0簡介

Hadoop 2.0是基于JDK 1.7開發的,而JDK 1.7在2015年4月已停止更新,這直接迫使Hadoop社群基于JDK 1.8重新釋出一個新的Hadoop版本,而這正是hadoop 3.0。

Hadoop 3.0的alpha版預計今年夏天釋出,GA版本11月或12月釋出。

Hadoop 3.0中引入了一些重要的功能和優化,包括HDFS 可擦除編碼、多Namenode支援、MR Native Task優化、YARN基于cgroup的記憶體和磁盤IO隔離、YARN container resizing等。

Hadoop3.0新特性介紹,比Spark快10倍的Hadoop3.0新特性

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版預計2016夏天釋出,GA版本11月或12月釋出。

Hadoop3.0新特性介紹,比Spark快10倍的Hadoop3.0新特性
Hadoop3.0新特性介紹,比Spark快10倍的Hadoop3.0新特性
Hadoop3.0新特性介紹,比Spark快10倍的Hadoop3.0新特性
Hadoop3.0新特性介紹,比Spark快10倍的Hadoop3.0新特性

大自然,飄然的風,QQ群: python技術交流群:453879716,人工智能深度學習群:251088643

golang技術交流群:316397059,vuejs技術交流群:458915921 滲透技術:534096581,囤币一族:621258209,有興趣的可以加入

微信公衆号: 心禅道(xinchandao)

繼續閱讀