歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

hadoop3新特性

hadoop3新特性,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等。

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

YARNMAPREDUCE

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等。

Copyright © Linux教程網 All Rights Reserved