Apache Hadoop 3.0.0 GA版正式發(fā)布,可以部署到線上
日前Apache Hadoop 3.0.0 GA 版本正式發(fā)布,這意味著我們就可以正式在線上使用 Hadoop 3.0.0 了!這個(gè)版本是 Apache Hadoop 3.0.0 的***個(gè)穩(wěn)定版本,有很多重大的改進(jìn),比如支持 EC、支持多于2個(gè)的NameNodes、Intra-datanode均衡器等等。下面是關(guān)于 Apache Hadoop 3.0.0 GA 的正式介紹。
Java最低版本要求從Java7 更改成Java8
所有的Hadoop JARs都是針對(duì)Java 8 編譯的。仍在使用Java 7 或更低版本的用戶必須升級(jí)至Java 8。
HDFS支持糾刪碼(Erasure Coding)
與副本相比糾刪碼是一種更節(jié)省空間的數(shù)據(jù)持久化存儲(chǔ)方法。標(biāo)準(zhǔn)編碼(比如Reed-Solomon(10,4))會(huì)有
1.4 倍的空間開(kāi)銷;然而HDFS副本則會(huì)有3倍的空間開(kāi)銷。因?yàn)榧m刪碼額外開(kāi)銷主要是在重建和執(zhí)行遠(yuǎn)程讀,它傳統(tǒng)用于存儲(chǔ)冷數(shù)據(jù),即不經(jīng)常訪問(wèn)的數(shù)據(jù)。當(dāng)部署這個(gè)新特性時(shí)用戶應(yīng)該考慮糾刪碼的網(wǎng)絡(luò)和CPU 開(kāi)銷。更多關(guān)于HDFS的糾刪碼可以參見(jiàn)http://hadoop.apache.org/docs/r3.0.0-beta1/hadoop-project-dist/hadoop-hdfs/HDFSErasureCoding.html 。
YARN Timeline Service v.2
本版本引入了Yarn時(shí)間抽服務(wù)v.2,主要用于解決2大挑戰(zhàn):改善時(shí)間軸服務(wù)的可伸縮性和可靠性,通過(guò)引入流和聚合增強(qiáng)可用性。
YARN Timeline Service v.2 alpha 1可以讓用戶和開(kāi)發(fā)者測(cè)試以及反饋,以便使得它可以替換現(xiàn)在的Timeline Service v.1.x。請(qǐng)?jiān)跍y(cè)試環(huán)境中使用。更多關(guān)于YARN Timeline Service v.2的知識(shí)請(qǐng)參見(jiàn)http://hadoop.apache.org/docs/r3.0.0-beta1/hadoop-yarn/hadoop-yarn-site/TimelineServiceV2.html
Shell腳本重寫
Hadoop的Shell腳本被重寫解決了之前很多長(zhǎng)期存在的bug,并且引入了一些新的特性。絕大部分都保持兼容性,不過(guò)仍有些變化可能使得現(xiàn)有的安裝不能正常運(yùn)行。不兼容的改變可以參見(jiàn)HADOOP-9902。更多內(nèi)容請(qǐng)參見(jiàn)Unix Shell Guide文檔。即使你是資深用戶,也建議看下這個(gè)文檔,因?yàn)槠涿枋隽嗽S多新的功能,特別是與可擴(kuò)展性有關(guān)的功能。
Shaded client jars
在 Hadoop 2.x 版本,hadoop-client Maven artifact將 Hadoop 所有的依賴都加到 Hadoop 應(yīng)用程序的環(huán)境變量中,這樣會(huì)可能會(huì)導(dǎo)致應(yīng)用程序依賴的類和 Hadoop 依賴的類有沖突。這個(gè)問(wèn)題在 HADOOP-11804 得到了解決。
支持 Opportunistic Containers 和分布式調(diào)度
Opportunistic Container引入新 Opportunistic 類型的 Container 后,這種 Container 可以利用節(jié)點(diǎn)上已分配但未真正使用的資源。原有 Container 類型定義為 Guaranteed 類型。相對(duì)于 Guaranteed 類型Container, Opportunistic 類型的Container優(yōu)先級(jí)更低。
MapReduce任務(wù)級(jí)本地優(yōu)化
MapReduce添加了Map輸出collector的本地實(shí)現(xiàn)。對(duì)于shuffle密集型的作業(yè)來(lái)說(shuō),這將會(huì)有30%以上的性能提升。更多內(nèi)容請(qǐng)參見(jiàn) MAPREDUCE-2841
支持多于2個(gè)的NameNodes
最初的HDFS NameNode high-availability實(shí)現(xiàn)僅僅提供了一個(gè)active NameNode和一個(gè)Standby NameNode;并且通過(guò)將編輯日志復(fù)制到三個(gè)JournalNodes上,這種架構(gòu)能夠容忍系統(tǒng)中的任何一個(gè)節(jié)點(diǎn)的失敗。然而,一些部署需要更高的容錯(cuò)度。我們可以通過(guò)這個(gè)新特性來(lái)實(shí)現(xiàn),其允許用戶運(yùn)行多個(gè)Standby NameNode。比如通過(guò)配置三個(gè)NameNode和五個(gè)JournalNodes,這個(gè)系統(tǒng)可以容忍2個(gè)節(jié)點(diǎn)的故障,而不是僅僅一個(gè)節(jié)點(diǎn)。HDFS high-availability文檔已經(jīng)對(duì)這些信息進(jìn)行了更新,我們可以閱讀這篇文檔了解如何配置多于2個(gè)NameNodes。
多個(gè)服務(wù)的默認(rèn)端口被改變
在此之前,多個(gè)Hadoop服務(wù)的默認(rèn)端口都屬于Linux的臨時(shí)端口范圍(32768-61000)。這就意味著我們的服務(wù)在啟動(dòng)的時(shí)候可能因?yàn)楹推渌麘?yīng)用程序產(chǎn)生端口沖突而無(wú)法啟動(dòng)?,F(xiàn)在這些可能會(huì)產(chǎn)生沖突的端口已經(jīng)不再屬于臨時(shí)端口的范圍,這些端口的改變會(huì)影響NameNode, Secondary NameNode, DataNode以及KMS。與此同時(shí),官方文檔也進(jìn)行了相應(yīng)的改變,具體可以參見(jiàn) HDFS-9427以及HADOOP-12811。下面表格列出了端口變化的情況

支持Microsoft Azure Data Lake filesystem連接器
Hadoop現(xiàn)在支持集成Microsoft Azure Data Lake,并作為替代Hadoop默認(rèn)的文件系統(tǒng)。
Intra-datanode均衡器
一個(gè)DataNode可以管理多個(gè)磁盤,正常寫入操作,各磁盤會(huì)被均勻填滿。然而,當(dāng)添加或替換磁盤時(shí)可能導(dǎo)致此DataNode內(nèi)部的磁盤存儲(chǔ)的數(shù)據(jù)嚴(yán)重內(nèi)斜。這種情況現(xiàn)有的HDFS balancer是無(wú)法處理的。這種情況是由新intra-DataNode平衡功能來(lái)處理,通過(guò)hdfs diskbalancer CLI來(lái)調(diào)用。更多請(qǐng)參考HDFS Commands Guide
重寫守護(hù)進(jìn)程以及任務(wù)的堆內(nèi)存管理
Hadoop守護(hù)進(jìn)程和MapReduce任務(wù)的堆內(nèi)存管理發(fā)生了一系列變化。
- HADOOP-10950:介紹了配置守護(hù)集成heap大小的新方法。主機(jī)內(nèi)存大小可以自動(dòng)調(diào)整,HADOOP_HEAPSIZE 已棄用。
- MAPREDUCE-5785:map和reduce task堆大小的配置方法,所需的堆大小不再需要通過(guò)任務(wù)配置和Java選項(xiàng)實(shí)現(xiàn)。已經(jīng)指定的現(xiàn)有配置不受此更改影響。
- S3Guard:S3A文件系統(tǒng)客戶機(jī)的一致性和元數(shù)據(jù)緩存
HADOOP-13345 里面為 Amazon S3 存儲(chǔ)系統(tǒng)的 S3A 客戶端引入了一個(gè)新的可選特性,也就是可以使用 DynamoDB 表作為文件和目錄元數(shù)據(jù)的快速一致的存儲(chǔ)。
HDFS Router-Based Federation
HDFS Router-Based Federation 添加了一個(gè) RPC路由層,提供了多個(gè) HDFS 命名空間的聯(lián)合視圖。與現(xiàn)有 ViewFs 和 HDFS Federation 功能類似,不同之處在于掛載表(mount table)由服務(wù)器端(server-side)的路由層維護(hù),而不是客戶端。這簡(jiǎn)化了現(xiàn)有 HDFS客戶端 對(duì) federated cluster 的訪問(wèn)。 詳細(xì)請(qǐng)參見(jiàn):HDFS-10467
基于API來(lái)配置 Capacity Scheduler 隊(duì)列的配置
OrgQueue 擴(kuò)展了 capacity scheduler ,通過(guò) REST API 提供了以編程的方式來(lái)改變隊(duì)列的配置,This enables automation of queue configuration management by administrators in the queue’s administer_queue ACL.。詳細(xì)請(qǐng)參見(jiàn):YARN-5734
YARN Resource Types
YARN 資源模型(YARN resource model)已被推廣為支持用戶自定義的可數(shù)資源類型(support user-defined countable resource types),不僅僅支持 CPU 和內(nèi)存。比如集群管理員可以定義諸如 GPUs、軟件許可證(software licenses)或本地附加存儲(chǔ)器(locally-attached storage)之類的資源。YARN 任務(wù)可以根據(jù)這些資源的可用性進(jìn)行調(diào)度。