自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我們一起學(xué)習(xí)Hdfs的異構(gòu)存儲

大數(shù)據(jù) 數(shù)據(jù)分析
在我們實(shí)際的開發(fā)過程中,我們的某些數(shù)據(jù)可能經(jīng)常使用,但是過了一段時間,這個數(shù)據(jù)就不怎么使用了,即我們的數(shù)據(jù)存在一個熱、溫、冷等這些特性。那么針對數(shù)據(jù)的熱度,我們可以采用不同的策略,存儲到不同的存儲介質(zhì)上。

1 背景

在我們實(shí)際的開發(fā)過程中,我們的某些數(shù)據(jù)可能經(jīng)常使用,但是過了一段時間,這個數(shù)據(jù)就不怎么使用了,即我們的數(shù)據(jù)存在一個、、等這些特性。那么針對數(shù)據(jù)的熱度,我們可以采用不同的策略,存儲到不同的存儲介質(zhì)上。
比如:

  • 針對經(jīng)常訪問的數(shù)據(jù),我們可以存儲在SSD上。
  • 針對訪問頻率不高的,我們可以存儲在DISK,即普通的硬盤上。
  • 針對幾乎不會訪問的數(shù)據(jù),保存在歸檔介質(zhì)上。

注意:那么hdfs自己知道哪些數(shù)據(jù)是熱數(shù)據(jù),哪些數(shù)據(jù)是冷數(shù)據(jù)嗎,貌似是不知道的,需要我們自己去判斷。

2 hdfs異構(gòu)存儲類型和存儲策略

2.1 hdfs支持的存儲類型

hdfs支持如下4中存儲類型

  • ARCHIVE: 它具有高存儲密度(PB級存儲)但計算能力弱,一般用于歸檔文件的存儲。
  • DISK : 普通磁盤,默認(rèn)的存儲類型
  • SSD : SSD固態(tài)硬盤
  • RAM_DISK: 支持在內(nèi)存中寫入單個副本文件

hdfs支持的存儲類型

2.2 hdfs如何知道數(shù)據(jù)存儲目錄是那種存儲類型

hdfs是不會自動檢測我們指定的數(shù)據(jù)存儲目錄是何種存儲類型的,需要我們在配置的時候告訴hdfs。

指定目錄的存儲類型

vim hdfs-site.xml

<property>
<name>dfs.datanode.data.dir</name>
<value>[SSD]file:///var/hadoop/dfs/data1,[DISK]file:///var/hadoop/dfs/data2</value>
</property>

從上面的配置中可以 /var/hadoop/dfs/data1前面指定了[SSD],則說明data1 這個目錄是一個 SSD的存儲介質(zhì),但是具體是不是真的SSD類型,這個是不會去校驗(yàn)的。

hdfs如何知道數(shù)據(jù)存儲目錄是那種存儲類型

2.3 存儲策略

2.3.1 在hdfs中支持如下存儲策略

  •  Hot: 用于存儲和計算。當(dāng)我們的數(shù)據(jù)是數(shù)據(jù)時,可以使用這種存儲策略,所有的副本都在DISK中。
  • Warm: 僅適用于計算有限的存儲。不再使用的數(shù)據(jù)或需要?dú)w檔的數(shù)據(jù)從熱存儲移動到冷存儲。當(dāng)一個塊時,所有副本都存儲在ARCHIVE中。
  • Cold:部分熱和部分冷。當(dāng)一個塊是熱的時,它的一些副本存儲在DISK中,其余的副本存儲在ARCHIVE中。
  • All_SSD:用于將所有副本存儲在SSD中。
  • One_SSD:用于將其中一個副本存儲在SSD中。其余副本存儲在DISK中。
  • Lazy_Persist:用于在內(nèi)存中寫入具有單個副本的塊。副本首先用RAM_DISK寫入,然后懶惰地保存在DISK中。
  • Provided:用于在HDFS之外存儲數(shù)據(jù)hdfs支持的存儲策略

2.3.2 存儲策略表

存儲策略表

2.3.2 Storage Policy Resolution

創(chuàng)建文件或目錄時,未指定其存儲策略。可以使用storagePolicy -setStoragePolicy命令指定存儲策略。文件或目錄的有效存儲策略由以下規(guī)則解析。

  • 如果文件或目錄指定了存儲策略,則返回它。
  • 對于未指定的文件或目錄,如果是根目錄,則返回默認(rèn)存儲策略。否則,返回其父級的有效存儲策略。

有效的存儲策略可以通過storagePolicy -getStoragePolicy命令檢索。

2.3.4 配置存儲策略

  • dfs.storage.policy.enabled 用于啟用或禁止存儲策略特性,默認(rèn)值是true
  • dfs.datanode.data.dir 在每個數(shù)據(jù)節(jié)點(diǎn)上,逗號分隔的存儲位置應(yīng)標(biāo)記其存儲類型。這允許存儲策略根據(jù)策略將塊放置在不同的存儲類型上。

舉例說明?

  • 如果一個datanode 上的存儲位置 /grid/dn/disk0是 DISK類型,應(yīng)該配置為[DISK]file:///grid/dn/disk0
  • 如果一個datanode 上的存儲位置 /grid/dn/disk0是 SSD類型,應(yīng)該配置為[SSD]file:///grid/dn/disk0
  • 如果一個datanode 上的存儲位置 /grid/dn/disk0是 ARCHIVE類型,應(yīng)該配置為[ARCHIVE]file:///grid/dn/disk0
  • 如果沒有顯式標(biāo)記的存儲類型,則datanode存儲位置的默認(rèn)存儲類型將是DISK

2.3.5 基于存儲策略的數(shù)據(jù)移動

已經(jīng)存在文件/目錄設(shè)置新的存儲策略將改變命名空間中的策略,但它不會在存儲介質(zhì)之間物理移動塊。 此處介紹基于Mover來解決這個問題,具體的細(xì)節(jié)需要看官方文檔。

mover工具的使用

2.3.6 存儲策略命令

2.3.6.1 列出所有存儲策略

hdfs storagepolicies -listPolicies

2.3.6.2 為文件或目錄設(shè)置存儲策略

hdfs storagepolicies -setStoragePolicy -path <path> -policy <policy>

<path>:需要設(shè)置存儲策略的文件或目錄
<policy>:存儲策略的名字

2.3.6.3 取消存儲策略

hdfs storagepolicies -unsetStoragePolicy -path <path>

取消對文件或目錄的存儲策略設(shè)置。在unset命令之后,將應(yīng)用最近祖先的存儲策略,如果沒有任何祖先的策略,則將應(yīng)用默認(rèn)存儲策略。

2.3.6.4 獲取文件或目錄的存儲策略。

hdfs storagepolicies -getStoragePolicy -path <path>

2.3.6.5 查看文件塊分布

hdfs fsck xxx -files -blocks -locations

3 hdfs異構(gòu)存儲案例

3.1 環(huán)境準(zhǔn)備

ip地址節(jié)點(diǎn)名存儲類型192.168.121.140hadoop01DISK,ARCHIVE192.168.121.141hadoop02DISK,SSD192.168.121.142hadoop03SSD,ARCHIVE

3.2 節(jié)點(diǎn) hdfs-site.xml配置文件

3.2.1 hadoop01

<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 開啟hdfs異構(gòu)存儲策略 -->
<property>
<name>dfs.storage.policy.enabled</name>
<value>true</value>
</property>
<!-- 配置block塊的存儲目錄,配置hdfds數(shù)據(jù)的存儲目錄 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>[DISK]file:///opt/bigdata/hadoop-3.3.4/data/disk,[ARCHIVE]file:///opt/bigdata/hadoop-3.3.4/data/archive</value>
</property>

3.2.2 hadoop02

<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 開啟hdfs異構(gòu)存儲策略 -->
<property>
<name>dfs.storage.policy.enabled</name>
<value>true</value>
</property>
<!-- 配置block塊的存儲目錄,配置hdfds數(shù)據(jù)的存儲目錄 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>[DISK]file:///opt/bigdata/hadoop-3.3.4/data/disk,[SSD]file:///opt/bigdata/hadoop-3.3.4/data/ssd</value>
</property>

3.2.3 hadoop03

<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 開啟hdfs異構(gòu)存儲策略 -->
<property>
<name>dfs.storage.policy.enabled</name>
<value>true</value>
</property>
<!-- 配置block塊的存儲目錄,配置hdfds數(shù)據(jù)的存儲目錄 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>[SSD]file:///opt/bigdata/hadoop-3.3.4/data/ssd,[ARCHIVE]file:///opt/bigdata/hadoop-3.3.4/data/archive</value>
</property>

3.3 重啟hdfs集群,并看數(shù)據(jù)目錄存儲類型是否正確

查看數(shù)據(jù)目錄的存儲類型

3.4 案例演示

此處僅僅只是演示 Warm類型。

由之前的存儲策略表(2.3.2)可知,Warm類型的策略,只有一個塊存儲在DISK存儲上,其余的全部存儲在ARCHIVE存儲上。

# hdfs 上創(chuàng)建目錄
[hadoopdeploy@hadoop01 hadoop]$ hadoop fs -mkdir -p /var/data/storage
# 上傳文件到 hdfs 目錄中
[hadoopdeploy@hadoop01 hadoop]$ hadoop fs -put /etc/profile /var/data/storage/profile
# 設(shè)置 /var/data/storage 目錄的存儲策略為 warm
[hadoopdeploy@hadoop01 hadoop]$ hdfs storagepolicies -setStoragePolicy -path /var/data/storage -policy WARM
Set storage policy WARM on /var/data/storage
# 查看 /var/data/storage 目錄的文件塊分布,發(fā)現(xiàn)還是 2個 DISK,說明歷史數(shù)據(jù)需要遷移,使用 mover 命令
[hadoopdeploy@hadoop01 hadoop]$ hdfs fsck /var/data/storage -files -blocks -locations
Connecting to namenode via http://hadoop01:9870/fsck?ugi=hadoopdeploy&files=1&blocks=1&locations=1&path=%2Fvar%2Fdata%2Fstorage
FSCK started by hadoopdeploy (auth:SIMPLE) from /192.168.121.140 for path /var/data/storage at Sat Mar 18 17:49:48 CST 2023

/var/data/storage <dir>
/var/data/storage/profile 2098 bytes, replicated: replication=2, 1 block(s): OK
0. BP-1760725553-192.168.121.140-1676791226380:blk_1073741858_1036 len=2098 Live_repl=2 [DatanodeInfoWithStorage[192.168.121.141:9866,DS-e86f80ba-6f04-4074-ab96-f58212c3c0e2,DISK], DatanodeInfoWithStorage[192.168.121.140:9866,DS-ca40e8cf-4d38-4a42-bfcb-e636087e9025,DISK]]
......

# 將 /var/data/storage 按照存儲策略移動數(shù)據(jù)塊
[hadoopdeploy@hadoop01 hadoop]$ hdfs mover /var/data/storage
2023-03-18 17:52:04,620 INFO mover.Mover: namenodes = {hdfs://hadoop01:8020=null}
2023-03-18 17:52:04,630 INFO balancer.NameNodeConnector: getBlocks calls for hdfs://hadoop01:8020 will be rate-limited to 20 per second
2023-03-18 17:52:05,368 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.121.142:9866
2023-03-18 17:52:05,368 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.121.140:9866
2023-03-18 17:52:05,368 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.121.141:9866
2023-03-18 17:52:05,402 INFO balancer.Dispatcher: Start moving blk_1073741858_1036 with size=2098 from 192.168.121.140:9866:DISK to 192.168.121.140:9866:ARCHIVE through 192.168.121.140:9866
2023-03-18 17:52:05,412 INFO balancer.Dispatcher: Successfully moved blk_1073741858_1036 with size=2098 from 192.168.121.140:9866:DISK to 192.168.121.140:9866:ARCHIVE through 192.168.121.140:9866
Mover Successful: all blocks satisfy the specified storage policy. Exiting...
2023-3-18 17:52:15 Mover took 10sec
# 重新查看 /var/data/storage 目錄的文件塊分布,發(fā)現(xiàn)還是 一個是 DISK 另外一個 ARCHIVE,說明存儲策略生效了
pdeploy@hadoop01 hadoop]$ hdfs fsck /var/data/storage -files -blocks -locations
Connecting to namenode via http://hadoop01:9870/fsck?ugi=hadoopdeploy&files=1&blocks=1&locations=1&path=%2Fvar%2Fdata%2Fstorage
FSCK started by hadoopdeploy (auth:SIMPLE) from /192.168.121.140 for path /var/data/storage at Sat Mar 18 17:53:23 CST 2023

/var/data/storage <dir>
/var/data/storage/profile 2098 bytes, replicated: replication=2, 1 block(s): OK
0. BP-1760725553-192.168.121.140-1676791226380:blk_1073741858_1036 len=2098 Live_repl=2 [DatanodeInfoWithStorage[192.168.121.141:9866,DS-e86f80ba-6f04-4074-ab96-f58212c3c0e2,DISK], DatanodeInfoWithStorage[192.168.121.140:9866,DS-cf50253c-ea3f-46f6-bdd9-4ac1ad3907d2,ARCHIVE]]

查看文件塊分布

4 參考文檔

1、https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/ArchivalStorage.html

2、https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-06-28 07:56:46

2021-11-26 09:44:42

鏈表節(jié)點(diǎn)定位

2021-05-19 10:37:16

WebFlux 前置工具

2022-02-14 10:16:22

Axios接口HTTP

2022-12-01 09:59:57

內(nèi)核觀測性方法

2021-05-20 07:15:34

RSA-PSS算法簽名

2023-03-26 12:45:52

Linux內(nèi)核頭文件

2023-04-03 06:57:38

DataNode工具命令行

2021-10-11 10:25:33

排列nums數(shù)組

2021-03-18 00:04:13

C# 類型數(shù)據(jù)

2025-03-05 08:02:45

2022-10-08 00:00:05

SQL機(jī)制結(jié)構(gòu)

2023-04-26 07:30:00

promptUI非結(jié)構(gòu)化

2017-01-22 15:09:08

架構(gòu)閉環(huán)演進(jìn)

2023-08-04 08:20:56

DockerfileDocker工具

2022-03-31 18:59:43

數(shù)據(jù)庫InnoDBMySQL

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-09-10 21:42:31

2023-06-30 08:18:51

敏捷開發(fā)模式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號