天天看點

Hadoop架構:DataNode工作機制詳解一、工作機制二、黑白名單配置三、檔案存檔四、資源回收筒機制五、源代碼位址

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

一、工作機制

1、基礎描述

Hadoop架構:DataNode工作機制詳解一、工作機制二、黑白名單配置三、檔案存檔四、資源回收筒機制五、源代碼位址

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           
<property>
    <name>dfs.hosts.exclude</name>
    <value>/opt/hadoop2.7/etc/hadoop/dfs.hosts.exclude</value>
</property>           
[root@hop01 hadoop2.7]# hdfs dfsadmin -refreshNodes           
[root@hop01 hadoop2.7]# yarn rmadmin -refreshNodes           

三、檔案存檔

HDFS存儲的特點,适合海量資料的大檔案,如果每個檔案都很小,會産生大量的中繼資料資訊,占用過多的記憶體,并且在NaemNode和DataNode互動的時候變的緩慢。

Hadoop架構: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           
Hadoop架構:DataNode工作機制詳解一、工作機制二、黑白名單配置三、檔案存檔四、資源回收筒機制五、源代碼位址

這樣就可以把原來的那些小檔案塊删除即可。

解除歸檔檔案

# 執行解除
[root@hop01 hadoop2.7]# hadoop fs -cp har:///hopdir/haroutput/output.har/* /hopdir/haroutput
# 檢視檔案
[root@hop01 hadoop2.7]# hadoop fs -ls /hopdir/haroutput           

四、資源回收筒機制

如果開啟資源回收筒功能,被删除的檔案在指定的時間内,可以執行恢複操作,防止資料被誤删除情況。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·位址
https://github.com/cicadasmile/big-data-parent
GitEE·位址
https://gitee.com/cicadasmile/big-data-parent           

繼續閱讀