Hadoop新特性

Stayhungry Stayyoung發表於2020-10-20

一、Hadoop2x的新特性
1.叢集間的資料拷貝
(1)scp實現兩個遠端主機之間的檔案複製
scp -r hello.txt root@hadoop100:/user/zheng/hello.txt // 推 push
scp -r root@hadoop100:/user/zheng/hello.txt hello.txt // 拉 pull
scp -r root@hadoop100:/user/zheng/hello.txt root@hadoop101:/user/zheng //是通過本地主機中轉實現兩個遠端主機的檔案複製;如果在兩個遠端主機之間ssh沒有配置的情況下可以使用該方式。
(2)採用distcp命令實現兩個Hadoop叢集之間的遞迴資料複製
[zheng@hadoop102 hadoop-3.1.3]$ bin/hadoop distcp hdfs://hadoop101:9820/user/atguigu/hello.txt hdfs://hadoop104:9820/user/zheng/hello.txt
2.小檔案存檔
(1)HDFS儲存小檔案弊端
因為大量小檔案會耗盡NameNode中的大部分記憶體。但注意,儲存小檔案所需要的磁碟容量和資料塊的大小無關
(2)解決儲存小檔案具體辦法
具體來說,HDFS存檔檔案對內還是一個一個獨立檔案,對NameNode而言卻是一個整體,減少了NameNode的記憶體
(3)案例實操(需要一臺配有hadoop的虛擬機器)
步驟一:需要啟動YARN程式
[atguigu@hadoop102 hadoop-3.1.3]$ start-yarn.sh
步驟二:歸檔檔案
把/user/atguigu/input目錄裡面的所有檔案歸檔成一個叫input.har的歸檔檔案,並把歸檔後檔案儲存 到/user/atguigu/output路徑下。
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop archive -archiveName input.har -p /user/atguigu/input /user/atguigu/output
步驟三:檢視歸檔
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -ls /user/atguigu/output/input.har
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -ls har:///user/atguigu/output/input.har
步驟四:解歸檔檔案
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -cp har:/// user/atguigu/output/input.har/* /user/atguigu
3.回收站
(1)開啟回收站功能引數說明
1、預設值fs.trash.interval=0,0表示禁用回收站:其他值表示設定檔案的存活時間。
2、預設值fs.trash.checkpoint.interval=0,檢查回收站的間隔時間。如果該值為0,則該值設定和fs.trash.interval的引數值相等。
3、要求fs.trash.checkpoint.interval<=fs.trash.interval。
(2)回收站工作機制
在這裡插入圖片描述

(3)案例實操
步驟一:啟用回收站
修改core-site.xml,配置垃圾回收時間為1分鐘。

fs.trash.interval
1

步驟二:檢視回收站
回收站目錄在hdfs叢集中的路徑:/user/atguigu/.Trash/….
步驟三:通過程式刪除的檔案不會經過回收站,需要呼叫moveToTrash()才進入回收站
Trash trash = New Trash(conf);
trash.moveToTrash(path);
步驟四:通過網頁上直接刪除的檔案也不會走回收站。
步驟五:只有在命令列利用hadoop fs -rm命令刪除的檔案才會走回收站。
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -rm -r /user/atguigu/input
2020-07-14 16:13:42,643 INFO fs.TrashPolicyDefault: Moved: ‘hdfs://hadoop102:9820/user/atguigu/input’ to trash at: hdfs://hadoop102:9820/user/atguigu/.Trash/Current/user/atguigu/input
步驟六:恢復回收站資料
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -mv
/user/atguigu/.Trash/Current/user/atguigu/input /user/atguigu/input

二、Hadoop3x的新特性
1.多NN的HA架構
HDFS NameNode高可用性的初始實現為單個活動NameNode和單個備用NameNode,將edits複製到三個JournalNode。該體系結構能夠容忍系統中一個NN或一個JN的故障。
但是,某些部署需要更高程度的容錯能力。Hadoop3.x允許使用者執行多個備用NameNode。例如,通過配置三個NameNode和五個JournalNode,群集能夠容忍兩個節點而不是一個節點的故障。
2.糾刪碼
HDFS中的預設3副本方案在儲存空間和其他資源(例如,網路頻寬)中具有200%的開銷。但是,對於I / O活動相對較低暖和冷資料集,在正常操作期間很少訪問其他塊副本,但仍會消耗與第一個副本相同的資源量。
糾刪碼(Erasure Coding)能夠在不到50% 的資料冗餘情況下提供和3副本相同的容錯能力,因此,使用糾刪碼作為副本機制的改進是自然而然的。
檢視叢集支援的糾刪碼策略:hdfs ec -listPolicies
3.所需的最小Java版本從Java 7增加到Java 8
所有的Hadoop jar現在都針對Java 8的執行時版本進行了編譯。仍然使用Java 7或更低版本的使用者必須升級到Java 8。
4.在HDFS中支援擦除編碼
擦除編碼是一種持久儲存資料的方法,與複製相比可以節省大量空間。像Reed-Solomon(10,4)這樣的標準編碼有1.4倍的空間開銷,而標準HDFS複製有3倍的開銷。
由於擦除編碼在重建過程中增加了額外的開銷,並且主要執行遠端讀取,因此傳統上它被用於儲存較冷的、訪問頻率較低的資料。在部署此功能時,使用者應該考慮擦除編碼的網路和CPU開銷。
5.Yarn時間線服務v.2
我們正在介紹一個紗線時間線服務的主要修訂的早期預覽(alpha 2): v.2。v.2解決了兩個主要的挑戰:提高時間軸服務的可伸縮性和可靠性,以及通過引入流和聚合來增強可用性。
提供YARN Timeline Service v.2 alpha 2是為了讓使用者和開發人員可以測試它,並提供反饋和建議,使其成為Timeline Service v.1.x的替代品。它應該只在測試容量中使用。
6.Shell指令碼重寫
Hadoop shell指令碼已經被重寫,以修復許多長期存在的錯誤,幷包括一些新特性。在關注相容性的同時,一些變化可能會破壞現有的安裝。
7.支援機會容器和分散式排程
引入了ExecutionType的概念,應用程式現在可以請求具有機會執行型別的容器。即使在排程時沒有可用的資源,這種型別的容器也可以在NM上被排程執行。在這種情況下,這些容器將在NM處排隊,等待啟動可用的資源。機會容器的優先順序低於預設的保證容器,因此在需要時被搶佔,為保證容器騰出空間。這將提高叢集的利用率。
機會容器在預設情況下是由中央RM分配的,但是也增加了支援,允許由作為AMRMProtocol攔截器實現的分散式排程器分配機會容器。
8.MapReduce任務級原生優化
MapReduce增加了對對映輸出收集器本地實現的支援。對於移動密集的任務,這可以導致30%或更多的效能改進。
9.多個服務的預設埠已更改
以前,多個Hadoop服務的預設埠都在Linux臨時埠範圍內(32768-61000)。這意味著在啟動時,服務有時會由於與另一個應用程式的衝突而無法繫結到該埠。
這些衝突的埠已經被移出短暫的範圍,影響NameNode、Secondary NameNode、DataNode和KMS。
10.支援Microsoft Azure資料湖和阿里雲物件儲存系統檔案系統聯結器
11.Intra-datanode均衡器
一個DataNode管理多個磁碟。在正常的寫操作期間,磁碟將被均勻地填滿。但是,新增或替換磁碟可能會導致DataNode中的嚴重傾斜。現有的HDFS均衡器不能處理這種情況,它只關注DN之間而不是內部的傾斜。
這種情況由新的datanode內平衡功能處理,該功能是通過hdfs diskbalancer CLI呼叫的。
12.重新工作的守護程式和任務堆管理
對Hadoop守護程式和MapReduce任務的堆管理進行了一系列更改。
HADOOP-10950引入了配置守護程式堆大小的新方法。值得注意的是,現在可以根據主機的記憶體大小進行自動調優,而且HADOOP_HEAPSIZE變數已經不贊成使用。
MAPREDUCE-5785簡化了map的配置並減少了任務堆大小,因此所需的堆大小不再需要在任務配置中指定,也不再作為Java選項指定。已經指定了兩者的現有配置不會受到此更改的影響。
13.HDFS Router-Based聯合會
14.基於api的容量排程器佇列配置
15.Yarn源型別
Yarn資源模型已經被一般化,以支援除CPU和記憶體之外的使用者定義的可計數資源型別。例如,叢集管理員可以定義gpu、軟體許可證或本地附加儲存等資源。然後可以根據這些資源的可用性來安排Yarn任務。