成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HDFS小文件治理總結,你學會了嗎?

大數據 Hadoop
對于大量的小文件,可以使用壓縮工具將多個小文件壓縮為一個壓縮包,以減少存儲空間。例如,使用gzip或bzip2壓縮工具壓縮文件,在HDFS上存儲壓縮文件,以減少存儲空間和文件數量.

隨著大數據時代的到來,數據量不斷增長,HDFS也成為了數據存儲和處理的重要組成部分。然而,由于HDFS的設計原理和文件存儲方式,HDFS系統中存在大量的小文件,這些小文件會導致HDFS的性能下降,增加管理和維護的難度,嚴重影響數據處理效率和數據質量。因此,HDFS小文件的治理變得越來越重要。 

一、HDFS小文件的問題影響

HDFS小文件通常指文件大小小于HDFS塊(Block)大小(默認為128MB)的文件。在HDFS系統中,小文件會帶來以下問題:

1.占用過多的存儲空間:由于HDFS文件系統的特點,每個文件都會占用一個獨立的Block,因此大量的小文件會導致內存空間的浪費,增加HDFS系統的內存開銷;

2.影響數據處理效率:HDFS是為大量的數據處理而設計的,而小文件會導致數據處理效率下降,增加數據處理時間和開銷;

3.增加管理和維護難度:當HDFS系統中存在大量的小文件時,管理和維護變得更加困難,需要耗費更多的精力和時間來維護系統。

二、HDFS小文件的治理方法

針對HDFS小文件的問題,有以下幾種治理方法:

1.合并小文件:將多個小文件合并為一個大文件,減少文件數量。這種方法需要注意文件的內容和格式,以免合并后的文件無法使用或者存在數據丟失等問題;

2.壓縮文件:將多個小文件壓縮為一個壓縮包,減少存儲空間。這種方法可以使用Hadoop自帶的壓縮工具,如gzip、bzip2等;

3.刪除無用文件:刪除不再需要的小文件,釋放存儲空間;

4.設置文件過期時間:對于不再需要的文件,可以設置其過期時間,自動刪除過期文件;

5.使用SequenceFile:使用Hadoop自帶的SequenceFile格式存儲小文件,將多個小文件合并到一個SequenceFile中,以減少文件數量,提高處理效率。

3、HDFS小文件治理的實踐案例

以下是一些HDFS小文件治理的實踐案例:

1.合并小文件:對于日志文件等大量的小文件,可以使用Hadoop自帶的合并工具將多個小文件合并為一個大文件。下面是通過hive的重寫方式合并小文件,核心參數如下;

set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
set hive.merge.mapfiles = true;
set hive.merge.mapredfiles = true;
set hive.merge.smallfiles.avgsize=256000000;
set hive.merge.size.per.task=12800000;
set mapred.max.split.size=256000000;
set mapred.min.split.size=64000000;
set mapred.min.split.size.per.node=64000000;
set mapred.min.split.size.per.rack=64000000;

2.壓縮文件:對于大量的小文件,可以使用壓縮工具將多個小文件壓縮為一個壓縮包,以減少存儲空間。例如,使用gzip或bzip2壓縮工具壓縮文件,在HDFS上存儲壓縮文件,以減少存儲空間和文件數量;

3.刪除無用文件:對于不再需要的小文件,可以使用Hadoop自帶的命令hadoop fs -rm命令刪除文件,或者使用定時任務腳本定期刪除過期文件; 

4.設置文件過期時間:使用hadoop fs -touchz命令設置文件的過期時間,當文件過期后,自動刪除文件。例如,使用hadoop fs -touchz命令設置文件的過期時間為30天,當文件超過30天未被訪問時,自動刪除文件;

5.使用SequenceFile:對于大量的小文件,可以使用SequenceFile格式存儲文件,將多個小文件合并成一個SequenceFile文件。例如,使用Hadoop自帶的SequenceFile.Writer類將多個小文件寫入SequenceFile文件中,以減少存儲空間和文件數量。

4、HDFS小文件監控

HDFS的fsimage是HDFS文件系統的一個重要組成部分,記錄了HDFS文件系統的元數據信息,包括文件、目錄、權限、塊等信息。通過監控HDFS的fsimage,可以了解HDFS文件系統的整體情況,包括文件數量、文件大小、文件類型等信息,進而實現對HDFS小文件的監控和治理。

具體來說,可以通過以下步驟對HDFS小文件進行監控:

1.獲取HDFS的fsimage:使用Hadoop自帶的命令hdfs oiv -p XML -i fsimage命令獲取HDFS的fsimage文件。該命令會將HDFS的fsimage文件以XML格式輸出,包括HDFS中所有文件和目錄的元數據信息;

2.解析fsimage文件:使用Python等腳本語言解析獲取到的fsimage文件,提取其中的文件、目錄、塊等信息。可以使用Python的ElementTree模塊等工具對XML文件進行解析,提取需要的信息;

3.統計文件數量和文件大小:根據解析后的文件信息,統計HDFS中小文件的數量和大小。通常可以根據文件大小和文件數量的閾值來定義小文件,例如文件大小小于128MB或文件數量小于1000個等;

4.可視化展示:使用可視化工具,如Grafana、Kibana等將統計結果進行可視化展示,以便于對HDFS小文件的監控和管理。

5、HDFS小文件監控案例

下面是解析HDFS的fsimage文件,導入hive表進行分析得到最終結果表導入clickhouse通過grafana進行數據展示;

解析fsimage文件為txt文件:

hdfs oiv -i  fsimage_0000000192578352133 -o /data2/data/fsimage/$day/fsimage.txt -p Delimited -t /data2/data/fsimage/$day/tmp

fsimage文件重要的字段釋義:

INODE_ID:文件或目錄的唯一標識符;
NAME:文件或目錄的名稱;
PARENT_ID:父目錄的INODE_ID;
MODIFICATION_TIME:最后修改時間;
ACCESS_TIME:最后訪問時間;
BLOCK_IDS:文件的數據塊ID列表;
BLOCK_SIZE:數據塊大小;
NUM_BLOCKS:數據塊數量;
PERMISSIONS:文件或目錄的權限信息;
USER_NAME:文件或目錄所屬用戶;
GROUP_NAME:文件或目錄所屬用戶組;
SYMLINK:如果是符號鏈接,則包含符號鏈接的目標路徑;
UNDER_CONSTRUCTION:如果文件正在寫入中,則為true;
UNDER_RECOVERY:如果文件正在恢復中,則為true;
FILE_LENGTH:文件長度;
NS_QUOTA:命名空間配額;
DS_QUOTA:磁盤配額;
STORAGE_POLICY:存儲策略。

下面是基于解析后的文件映射到hive表最終處理后的數據表和最終數據樣例:

CREATE TABLE `tmp_fsimage_info_log_clean`(
  `path` string, 
  `replication` int, 
  `db` string, 
  `table_name` string, 
  `parttition_nm1` string, 
  `parttition_nm2` string, 
  `parttition_nm3` string, 
  `file_name` string, 
  `modificationtime` string, 
  `accesstime` string, 
  `preferredblocksize_mb` decimal(20,5), 
  `blockscount` int, 
  `filesize_mb` decimal(20,5), 
  `filesize_gb` decimal(20,5), 
  `username` string, 
  `groupname` string)
PARTITIONED BY ( 
  `stat_day` string COMMENT '分區時間:yyyy-mm-dd')
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'

圖片

同步hive數據到CK的工具使用的是seatunnel,下面貼一份相關的配置文件:

env {
  spark.app.name = "hive_to_clickhouse"
  spark.executor.instances = 10
  spark.executor.cores = 4
  spark.executor.memory = "12g"
}


source {
  file {
    path = "hdfs://ds01:8020/user/hive/warehouse/paas_test.db/db_table_file_all/stat_day="${day}""   
    result_table_name = "db_table_file_all"
    format = "orc"
  }
}


transform {
 sql {
    sql = "SELECT  '"${dayStr}"' as stat_day, _col0 as db, _col1 as table_name,_col2 as sum_filesize,_col3 as count_filesize,_col4 as count_filesize_less_10,_col5 as count_filesize_less_50,_col6 as count_filesize_less_150,_col7 as count_filesize_less_250,_col8 as count_filesize_less_300,_col9 as count_filesize_less_10_diff,_col10 as count_filesize_less_50_diff,_col11  as count_filesize_less_150_diff,_col12 as count_filesize_less_250_diff,_col13 as count_filesize_less_300_diff,_col14 as table_storage_increase,_col15 as count_filesize_diff,_col16 as latest_accesstime  from db_table_file_all"
 }
}




sink {
  clickhouse {
    host = "ds03:8123"
    clickhouse.socket_timeout = 50000
    database = "fsimage_info"
    table = "db_table_file_all"
    fields = ["db","table_name","sum_filesize","count_filesize","count_filesize_less_10","count_filesize_less_50","count_filesize_less_150","count_filesize_less_250","count_filesize_less_300","count_filesize_less_10_diff","count_filesize_less_50_diff","count_filesize_less_150_diff","count_filesize_less_250_diff","count_filesize_less_300_diff","table_storage_increase","count_filesize_diff","latest_accesstime","stat_day"]
    username = ""
    password = ""
  }


}

最終展示在grafana中效果:

圖片

本文轉載自微信公眾號「滌生大數據」,作者「滌生-強哥」,可以通過以下二維碼關注。轉載本文請聯系「滌生大數據」公眾號。

責任編輯:武曉燕 來源: 滌生大數據
相關推薦

2022-12-26 07:48:04

敏捷項目

2022-10-18 17:59:46

Bootstrap源碼父類

2023-01-26 00:28:45

前端測試技術

2022-07-26 00:25:57

PandasQuery索引器

2024-01-19 08:25:38

死鎖Java通信

2023-01-10 08:43:15

定義DDD架構

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具

2024-01-02 12:05:26

Java并發編程

2023-08-01 12:51:18

WebGPT機器學習模型

2023-06-06 07:50:07

權限管理hdfsacl

2022-08-09 08:25:44

Stream創建流流計算

2023-10-10 11:04:11

Rust難點內存

2024-05-06 00:00:00

InnoDBView隔離

2023-01-30 09:01:54

圖表指南圖形化

2024-07-31 08:39:45

Git命令暫存區

2023-12-12 08:02:10

2024-08-06 09:47:57

2022-07-08 09:27:48

CSSIFC模型

2024-02-06 08:33:54

文件系統SSD
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线观看av网站永久 | 久久av网 | 午夜电影福利 | 正在播放国产精品 | 午夜小视频在线播放 | 久久中文视频 | 国产精品嫩草影院精东 | 中文字幕在线精品 | 最新国产视频 | 欧美综合一区二区 | 久久日韩精品 | 91精品国产高清一区二区三区 | 韩日一区| 色播视频在线观看 | 国产精品视频一区二区三区不卡 | 免费在线看a| 欧美一区免费 | 羞羞的视频免费在线观看 | 国产在视频一区二区三区吞精 | 伊人春色成人网 | 99久久精品免费看国产四区 | 日韩在线精品视频 | 青青草久久| 亚洲精品久久久久久一区二区 | 9porny九色视频自拍 | 91视频一区二区三区 | 久久久久久久久久久久久91 | 免费激情av | 欧洲精品视频一区 | 欧美日韩视频 | 欧美a区 | 久久99精品久久久久久国产越南 | 久久久福利 | 午夜丰满寂寞少妇精品 | 91精品国产色综合久久不卡98 | 亚洲入口 | 欧美久久一区二区三区 | 亚洲图片视频一区 | 国产精品久久久久久吹潮 | 国产永久免费 | 日韩在线中文字幕 |