本文原始碼: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·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://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·點這里 | ☆☆☆☆☆ |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/182716.html
標籤:Java
