Hadoop框架:DataNode工作機制詳解

本文源碼:GitHub·點這裡 || GitEE·點這裡

一、工作機制

1、基礎描述

DataNode上數據塊以文件形式存儲在磁碟上,包括兩個文件,一個是數據本身,一個是數據塊元數據包括長度、校驗、時間戳;

DataNode啟動後向NameNode服務註冊,並周期性的向NameNode上報所有的數據塊元數據資訊;

DataNode與NameNode之間存在心跳機制,每3秒一次,返回結果帶有NameNode給該DataNode的執行命令,例如數據複製刪除等,如果超過10分鐘沒有收到DataNode的心跳,則認為該節點不可用。

2、自定義時長

通過hdfs-site.xml配置文件,修改超時時長和心跳,其中中的heartbeat.recheck.interval的單位為毫秒,dfs.heartbeat.interval的單位為秒。

<property>
    <name>dfs.namenode.heartbeat.recheck-interval</name>
    <value>600000</value>
</property>
<property>
    <name>dfs.heartbeat.interval</name>
    <value>6</value>
</property>

3、新節點上線

當前機器的節點為hop01、hop02、hop03,在此基礎上新增節點hop04。

基本步驟

基於當前一個服務節點克隆得到hop04環境;

修改Centos7相關基礎配置,並刪除data和log文件;

啟動DataNode,即可關聯到集群;

4、多目錄配置

該配置同步集群下服務,格式化啟動hdfs及yarn,上傳文件測試。

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///${hadoop.tmp.dir}/dfs/data01,file:///${hadoop.tmp.dir}/dfs/data02</value>
</property>

二、黑白名單配置

1、白名單設置

配置白名單,該配置分發到集群服務下;

[root@hop01 hadoop]# pwd
/opt/hadoop2.7/etc/hadoop
[root@hop01 hadoop]# vim dfs.hosts
hop01
hop02
hop03

配置hdfs-site.xml,該配置分發到集群服務下;

<property>
    <name>dfs.hosts</name>
    <value>/opt/hadoop2.7/etc/hadoop/dfs.hosts</value>
</property>

刷新NameNode

[root@hop01 hadoop2.7]# hdfs dfsadmin -refreshNodes

刷新ResourceManager

[root@hop01 hadoop2.7]# yarn rmadmin -refreshNodes

2、黑名單設置

配置黑名單,該配置分發到集群服務下;

[root@hop01 hadoop]# pwd
/opt/hadoop2.7/etc/hadoop
[root@hop01 hadoop]# vim dfs.hosts.exclude
hop04

配置hdfs-site.xml,該配置分發到集群服務下;

<property>
    <name>dfs.hosts.exclude</name>
    <value>/opt/hadoop2.7/etc/hadoop/dfs.hosts.exclude</value>
</property>

刷新NameNode

[root@hop01 hadoop2.7]# hdfs dfsadmin -refreshNodes

刷新ResourceManager

[root@hop01 hadoop2.7]# yarn rmadmin -refreshNodes

三、文件存檔

1、基礎描述

HDFS存儲的特點,適合海量數據的大文件,如果每個文件都很小,會產生大量的元數據資訊,佔用過多的記憶體,並且在NaemNode和DataNode交互的時候變的緩慢。

HDFS可以對一些小的文件進行歸檔存儲,這裡可以理解為壓縮存儲,即減少NameNode的消耗,也較少交互的負擔,同時還允許對歸檔的小文件訪問,提高整體的效率。

2、操作流程

創建兩個目錄

# 存放小文件
[root@hop01 hadoop2.7]# hadoop fs -mkdir -p /hopdir/harinput
# 存放歸檔文件
[root@hop01 hadoop2.7]# hadoop fs -mkdir -p /hopdir/haroutput

上傳測試文件

[root@hop01 hadoop2.7]# hadoop fs -moveFromLocal LICENSE.txt /hopdir/harinput
[root@hop01 hadoop2.7]# hadoop fs -moveFromLocal README.txt /hopdir/harinput

歸檔操作

[root@hop01 hadoop2.7]# bin/hadoop archive -archiveName output.har -p /hopdir/harinput /hopdir/haroutput

查看歸檔文件

[root@hop01 hadoop2.7]# hadoop fs -lsr har:///hopdir/haroutput/output.har

這樣就可以把原來的那些小文件塊刪除即可。

解除歸檔文件

# 執行解除
[root@hop01 hadoop2.7]# hadoop fs -cp har:///hopdir/haroutput/output.har/* /hopdir/haroutput
# 查看文件
[root@hop01 hadoop2.7]# hadoop fs -ls /hopdir/haroutput

四、回收站機制

1、基礎描述

如果開啟回收站功能,被刪除的文件在指定的時間內,可以執行恢復操作,防止數據被誤刪除情況。HDFS內部的具體實現就是在NameNode中啟動一個後台執行緒Emptier,這個執行緒專門管理和監控系統回收站下面的文件,對於放進回收站的文件且超過生命周期,就會自動刪除。

2、開啟配置

該配置需要同步到集群下的所有服務;

[root@hop01 hadoop]# vim /opt/hadoop2.7/etc/hadoop/core-site.xml 
# 添加內容
<property>
   <name>fs.trash.interval</name>
    <value>1</value>
</property>

fs.trash.interval=0,表示禁用回收站機制,=1表示開啟。

五、源程式碼地址

GitHub·地址
//github.com/cicadasmile/big-data-parent
GitEE·地址
//gitee.com/cicadasmile/big-data-parent

推薦閱讀:編程體系整理

序號 項目名稱 GitHub地址 GitEE地址 推薦指數
01 Java描述設計模式,演算法,數據結構 GitHub·點這裡 GitEE·點這裡 ☆☆☆☆☆
02 Java基礎、並發、面向對象、Web開發 GitHub·點這裡 GitEE·點這裡 ☆☆☆☆
03 SpringCloud微服務基礎組件案例詳解 GitHub·點這裡 GitEE·點這裡 ☆☆☆
04 SpringCloud微服務架構實戰綜合案例 GitHub·點這裡 GitEE·點這裡 ☆☆☆☆☆
05 SpringBoot框架基礎應用入門到進階 GitHub·點這裡 GitEE·點這裡 ☆☆☆☆
06 SpringBoot框架整合開發常用中間件 GitHub·點這裡 GitEE·點這裡 ☆☆☆☆☆
07 數據管理、分散式、架構設計基礎案例 GitHub·點這裡 GitEE·點這裡 ☆☆☆☆☆
08 大數據系列、存儲、組件、計算等框架 GitHub·點這裡 GitEE·點這裡 ☆☆☆☆☆