柚子快報邀請碼778899分享:HDFS簡介及元數(shù)據(jù)管理機(jī)制
柚子快報邀請碼778899分享:HDFS簡介及元數(shù)據(jù)管理機(jī)制
目錄
HDFS簡介
HDFS的一些終端指令
HDFS的元數(shù)據(jù)管理機(jī)制
HDFS的安全模式
一、Apache HDFS入門
1.1、HDFS基本概念
首先是一個文件系統(tǒng),就是用來存儲文件、存儲數(shù)據(jù)。是大數(shù)據(jù)最底層一個服務(wù)。
其次是一個分布式的文件系統(tǒng),分布式意味著多臺機(jī)器存儲。
1.2、HDFS設(shè)計目標(biāo)
具備故障檢測和快速恢復(fù)的能力(容錯/可靠)
面對海量數(shù)據(jù)的存儲,注重吞吐能力,而不是交互式。(延遲高,數(shù)據(jù)處理能力強(qiáng))
支持大文件存儲(越大越開心)
存儲方案其實(shí)就是講大文件拆分開,存儲到不同的服務(wù)上
一次寫入多次讀取模型 (不支持修改操作)
文件內(nèi)容,可以追加,但是不能靈活修改內(nèi)部數(shù)據(jù).
異構(gòu)存儲、可移植性
異構(gòu)存儲: 可以存儲不同格式,不同類型的數(shù)據(jù)文件
可移植性: 其實(shí)就是Java的可移植性
1.3、HDFS重要特性(重要)
節(jié)點(diǎn)的意義:
znode節(jié)點(diǎn): 就是ZooKeeper服務(wù)中存儲的一個集合文件和文件夾特性的數(shù)據(jù)
hdfs中的節(jié)點(diǎn): 說的就是一個服務(wù)角色(在這里節(jié)點(diǎn)時數(shù)據(jù)流轉(zhuǎn)的一個分叉口)
在hdfs集群中,數(shù)據(jù)可以在每一個服務(wù)中進(jìn)行流轉(zhuǎn),此時每一個集群角色都是一個節(jié)點(diǎn).
node1,node2,node3 他是服務(wù)器節(jié)點(diǎn): 也就是在多臺服務(wù)器組成的一個串聯(lián)關(guān)系中,每一個服務(wù)器都是一個節(jié)點(diǎn).
master|slaves 主從架構(gòu)
主角色(主節(jié)點(diǎn)): namenode,主要負(fù)責(zé)元數(shù)據(jù)的管理工作
從角色(從節(jié)點(diǎn)): datanode,主要負(fù)責(zé)數(shù)據(jù)的存儲工作
分塊存儲(在HDFS中數(shù)據(jù)都是以Block塊的形式存儲的)
在hadoop2.x版本之后塊的大小變成了128M,在之前是64M (2018年后基本上絕大多數(shù)公司使用的都是128M)
塊的大小是可以通過調(diào)節(jié)參數(shù)進(jìn)行設(shè)置的,但是一般我們不修改
當(dāng)存儲數(shù)據(jù)較大時,我們會按照指定大小將數(shù)據(jù)進(jìn)行分塊,分塊后存儲在不同的服務(wù)器中,這也就為大數(shù)據(jù)的存儲提供了可能
計算數(shù)據(jù)時,可以多個服務(wù)同時計算不同的塊,最終將結(jié)果進(jìn)行合并,提高了計算效率
舉例:
# 1. 文件 1.txt 大小為300M 該文件會分為幾個塊,每個塊大小是多少?? 3個
blk-1 128M
blk-2 128M
blk-3 44M
# 2. 文件 1.txt 20M 2.txt 200M 3.txt 1M 這幾個文件存儲時會分為幾個塊??? 4個
1.txt blk-1 20M
2.txt blk-2 128M
blk-3 72M
# 3. 文件1.txt 大小為128.1M 這個文件存儲會存為幾個塊??? 1個
在一定的范圍內(nèi),可以將超出塊大小一丁點(diǎn)的內(nèi)容保存為一個塊,減少小文件的出現(xiàn)
==副本機(jī)制==
在HDFS中默認(rèn)采用的是三副本機(jī)制(一個文件存儲3份)
在分布式存儲系統(tǒng)中都會進(jìn)行冗余存儲,保證數(shù)據(jù)的安全性
一個數(shù)據(jù)會保存三份,三份數(shù)據(jù),在不同的DataNode節(jié)點(diǎn)中
當(dāng)有一個DataNode節(jié)點(diǎn)宕機(jī)了,數(shù)據(jù)就會丟失,此時副本數(shù)量就不夠3個了
此時NameNode,檢查副本數(shù)量不足3,就會指揮其他的DataNode節(jié)點(diǎn)進(jìn)行數(shù)據(jù)備份,保證副本數(shù)量達(dá)到3
如果宕機(jī)的DataNode 又連接到集群中,NameNode檢測到副本數(shù)量大于3,此時會指揮部分DataNode 刪除副本
副本數(shù)量可以手動調(diào)節(jié),副本數(shù)量越多越安全,但是對于磁盤的消耗也越大,一般情況下,三副本機(jī)制已經(jīng)足夠安全了.
==namespace 名字空間 命名空間==
命名空間可以理解為使用數(shù)據(jù)模擬出一個目錄樹結(jié)構(gòu),方便我們查詢和使用數(shù)據(jù).
我們將所有文件的名稱都背下來不現(xiàn)實(shí),但是我們將文件分目錄管理,并且按照目錄層級進(jìn)行數(shù)據(jù)查詢就可以找到我們想要的數(shù)據(jù)(類似于linux中的目錄結(jié)構(gòu))
NameNode就是來管理這個命名空間的
命名空間中,同一個目錄結(jié)構(gòu)中的文件名稱只能有一個
==metadata 元數(shù)據(jù)==
元數(shù)據(jù): 描述數(shù)據(jù)的數(shù)據(jù)
我們將大文件拆分為多個block,每一個bolck塊從屬于哪一個文件,文件名,文件大小,塊的位置,副本數(shù)量.....都是元數(shù)據(jù)
NameNode專門負(fù)責(zé)管理這些元數(shù)據(jù)
思考: 如果不記錄這些元數(shù)據(jù)會發(fā)生什么?
寫數(shù)據(jù)的時候,不知道該寫入哪一個服務(wù),讀取數(shù)據(jù)時,不知道該從哪一個服務(wù)中讀取
請求數(shù)據(jù)時不知道該文件是否存在,刪除數(shù)據(jù)時不知道該文件是否刪除成功
所以我們想要存儲數(shù)據(jù)時,要先訪問NameNode獲取寫入的位置
想要讀取數(shù)據(jù)時,要先訪問NameNode,獲取讀取數(shù)據(jù)的位置
write one read many(一次寫入,多次讀取)
HDFS服務(wù)一次寫入多次讀取,不支持修改操作
HDFS更加適用于數(shù)據(jù)的分析工作,不適合作為業(yè)務(wù)服務(wù)數(shù)顯,因為延遲較高
hdfs只能作為大數(shù)據(jù)的存儲方案,其他的業(yè)務(wù)會使用其他存儲方案解決
HDFS不需要支持事務(wù) ,因為不可修改
什么是事務(wù): 多個任務(wù),要么同時成功要么同時失敗就是一個事物
舉例: 在銀行轉(zhuǎn)賬,Jack將1000元轉(zhuǎn)賬給Rose Jack的錢減少, 與Rose的錢增加是一個事物操作
二、HDFS shell操作
2.1、shell常見命令操作
常用的linux指令大部分可以用于hadoop的shell中 : ls mkdir rm cp mv cat .....
還有一些指令也比較重要,和linux中使用方式完全相同
chown: 修改文件歸屬
chgrp: 修改用戶組
chmod: 修改文件權(quán)限
get : 下載
put : 上傳
appendToFile : 追加
getmerge : 合并下載
三、HDFS工作機(jī)制
3.1、namenode、datanode職責(zé)(理解)
namenode 管理元數(shù)據(jù) 維護(hù)namespace
datanode 管理數(shù)據(jù)
3.2、讀寫流程圖
上傳文件寫數(shù)據(jù)流程
HDFS默認(rèn)3副本機(jī)制
我們再存儲副本時,要遵循三副本機(jī)制,
默認(rèn)情況下,我們按照如下策略選擇副本的存放位置
第一個副本,存放在clinet客戶端所在的服務(wù)器中,如果客戶端所在位置沒有DataNode,則在集群中隨機(jī)選擇一個DN進(jìn)行存儲
第二個副本,存放在與副本1不同的機(jī)架的隨機(jī)一個服務(wù)器上.
第三個副本,存放在于第二個副本相同機(jī)架的另外一個服務(wù)器上.
下載文件讀數(shù)據(jù)流程
3.3、NameNode與DataNode通信機(jī)制
dn啟動時
#datanode向nameNode進(jìn)行注冊 并行匯報自己持有數(shù)據(jù)塊信息
注冊表示自己啟動成功 匯報是高速namenode自己保存了哪些數(shù)據(jù)塊
dn后續(xù)工作時
#心跳機(jī)制
datanode每隔3S向namenode進(jìn)行心跳 目的:報活 dfs.heartbeat.interval
#數(shù)據(jù)塊匯報機(jī)制 blockreport
datanode每隔6小時向nameNode進(jìn)行數(shù)據(jù)塊匯報自己數(shù)據(jù)塊信息 dfs.blockreport.intervalMsec
四、HDFS namenode元數(shù)據(jù)管理機(jī)制
4.1、namenode元數(shù)據(jù)
元數(shù)據(jù)是什么
元數(shù)據(jù)(Metadata),又稱中介數(shù)據(jù)、中繼數(shù)據(jù),為描述數(shù)據(jù)的數(shù)據(jù)(data about data),主要是描述數(shù)據(jù)屬性(property)的信息,用來支持如指示存儲位置、歷史數(shù)據(jù)、資源查找、文件記錄等功能。
#記錄數(shù)據(jù)的數(shù)據(jù) 描述數(shù)據(jù)的數(shù)據(jù)
hdfs中元數(shù)據(jù)指的是什么
文件系統(tǒng)的元數(shù)據(jù)(namespace、塊的位置)
datanodes狀態(tài)信息(健康、磁盤使用率)
回想首次啟動HDFS集群的時候 進(jìn)行format操作
本質(zhì)就是初始化操作 初始化namenode工作目錄和元數(shù)據(jù)文件。
元數(shù)據(jù)存儲的目錄由參數(shù)dfs.namenode.name.dir決定 在NN部署機(jī)器的本地linux文件系統(tǒng)中
4.2、secondarynamenode功能職責(zé)
要想成為namenode的備份 需要具備兩個東西
數(shù)據(jù)狀態(tài)要和namenode保持一致。
承擔(dān)和namenode一樣的職責(zé)
secondarynamenode根本不是namenode的備份,其主要職責(zé)幫助nameNode進(jìn)行元數(shù)據(jù)的合并。
五、HDFS 安全模式
安全模式(safe mode)是HDFS集群處于一種保護(hù)狀態(tài),文件系統(tǒng)只可以讀,不可以寫。
安全模式如何進(jìn)入離開的?
1.自動進(jìn)入離開
#在HDFS集群剛啟動時候 會自動進(jìn)入 為了演示方便 使用單個進(jìn)程逐個啟動方式
#step1:啟動namenode
hadoop-daemon.sh start namenode
#step2: 執(zhí)行事務(wù)性操作 報錯
[root@node1 ~]# hadoop fs -mkdir /aaaa
mkdir: Cannot create directory /aaaa. Name node is in safe mode.
Safe mode is ON. The reported blocks 0 needs additional 52 blocks to reach the threshold 0.9990 of total blocks 52. The number of live datanodes 0 has reached the minimum number 0. Safe mode will be turned off automatically once the thresholds have been reached.
#1、條件1:已經(jīng)匯報的block達(dá)到總數(shù)據(jù)塊的 0.999
#2、條件2:存活的dn數(shù)量大于等于0 說明這個條件不嚴(yán)格
#step3:依次手動啟動datanode
hadoop-daemon.sh start datanode
Safe mode is ON. The reported blocks 52 has reached the threshold 0.9990 of total blocks 52. The number of live datanodes 2 has reached the minimum number 0. In safe mode extension. Safe mode will be turned off automatically in 25 seconds.
#3、條件3:滿足12條件的情況下 持續(xù)30s 結(jié)束自動離開安全模式
Safemode is off.
#為什么集群剛啟動的時候 要進(jìn)入安全模式
文件系統(tǒng)元數(shù)據(jù)不完整 無法對外提供可高的文件服務(wù) 屬于內(nèi)部的元數(shù)據(jù)匯報、校驗、構(gòu)建的過程。
2.手動進(jìn)入離開
hdfs dfsadmin -safemode enter
hdfs dfsadmin -safemode leave
Safe mode is ON. It was turned on manually. Use "hdfs dfsadmin -safemode leave" to turn safe mode off.
#運(yùn)維人員可以手動進(jìn)入安全模式 進(jìn)行集群的維護(hù)升級等動作 避免了群起群停浪費(fèi)時間。
安全模式的注意事項
剛啟動完hdfs集群之后 等安全模式介紹才可以正常使用文件系統(tǒng) 文件系統(tǒng)服務(wù)才是正??捎?。
后續(xù)如果某些軟件依賴HDFS工作,必須先啟動HDFS且等安全模式結(jié)束才可以使用你的軟件。
啟動-->啟動成功-->可用(安全模式結(jié)束)
柚子快報邀請碼778899分享:HDFS簡介及元數(shù)據(jù)管理機(jī)制
文章來源
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。