最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

干貨分享|袋鼠云數(shù)棧離線開發(fā)平臺(tái)在小文件治理上的探索實(shí)踐之路

2023-03-29 10:54 作者:袋鼠云  | 我要投稿

日常生產(chǎn)中 HDFS 上小文件產(chǎn)生是一個(gè)很正常的事情,同時(shí)小文件也是 Hadoop 集群運(yùn)維中的常見挑戰(zhàn),尤其對(duì)于大規(guī)模運(yùn)行的集群來說可謂至關(guān)重要。

數(shù)據(jù)地圖是離線開發(fā)產(chǎn)品的基本使用單位,包含全部表和項(xiàng)目的相關(guān)信息,可以對(duì)表做相關(guān)的權(quán)限管理和脫敏管理操作,以及可以展示對(duì)應(yīng)項(xiàng)目占用情況和其表的占用情況。數(shù)據(jù)地圖可以幫助用戶更好地查找、理解和使用數(shù)據(jù)。

本文將結(jié)合兩者,和大家聊聊數(shù)據(jù)地圖中的小文件治理應(yīng)該怎么做。

小文件的危害

小文件通常指文件大小要比 HDFS 塊大小還要小很多的文件,大量的小文件會(huì)給 Hadoop 集群的擴(kuò)展性和性能帶來嚴(yán)重的影響。

NameNode 在內(nèi)存中維護(hù)整個(gè)文件系統(tǒng)的元數(shù)據(jù)鏡像、用戶 HDFS 的管理,其中每個(gè) HDFS 文件元信息(位置、大小、分塊等)對(duì)象約占150字節(jié),如果小文件過多,會(huì)占用大量?jī)?nèi)存,直接影響 NameNode 的性能。相對(duì)地,HDFS 讀寫小文件也會(huì)更加耗時(shí),因?yàn)槊看味夹枰獜?NameNode 獲取元信息,并與對(duì)應(yīng)的 DataNode 建立連接。如果 NameNode 在宕機(jī)中恢復(fù),也需要更多的時(shí)間從元數(shù)據(jù)文件中加載。

同時(shí),小文件會(huì)給 Spark SQL 等查詢引擎造成查詢性能的損耗,大量的數(shù)據(jù)分片信息以及對(duì)應(yīng)產(chǎn)生的 Task 元信息也會(huì)給?Spark Driver?的內(nèi)存造成壓力,帶來單點(diǎn)問題。此外,入庫操作最后的 commit job 操作,在 Spark Driver 端單點(diǎn)做,很容易出現(xiàn)單點(diǎn)的性能問題。

數(shù)據(jù)地圖中小文件治理的做法

存儲(chǔ)在 HDFS 中的文件被分成塊,然后將這些塊復(fù)制到多個(gè)計(jì)算機(jī)中(DataNode),塊的大小默認(rèn)為128MB,當(dāng)文件大小為128時(shí),Hadoop 集群的計(jì)算效率最高。因此對(duì)非分區(qū)表按表進(jìn)行數(shù)據(jù)文件合并,使表/分區(qū)數(shù)據(jù)文件的大小接近128M,以此進(jìn)行小文件的優(yōu)化。

具體到數(shù)據(jù)地圖中是怎么做的呢?

在離線開發(fā)平臺(tái)中創(chuàng)建出來的表或者底層表都可以通過數(shù)據(jù)地圖功能維護(hù),我們每天會(huì)定時(shí)更新這些表的基本信息進(jìn)行統(tǒng)一維護(hù)管理。

在數(shù)據(jù)地圖中可以根據(jù)文件數(shù)量和占用存儲(chǔ)創(chuàng)建相應(yīng)的治理規(guī)則,按照每天每周或每月治理。

參數(shù)說明?

· 規(guī)則名稱:新建規(guī)則的名稱

· 選擇項(xiàng)目:小文件合并規(guī)則生效的項(xiàng)目

· 選擇表:這里配置的是圈定需要合并的表范圍,判斷條件是 and,例如表的文件數(shù)量大于1000并且占用總存儲(chǔ)小于10M時(shí),才會(huì)對(duì)該表中的文件進(jìn)行合并操作

· 治理時(shí)間:該規(guī)則的調(diào)度周期,例如每天的凌晨00:00~01:00進(jìn)行小文件合并,注意如果小文件合并時(shí)間到了結(jié)束的時(shí)間,還沒有合并完成,則會(huì)結(jié)束當(dāng)前的合并,等待下次處理

根據(jù)治理規(guī)則查詢出所有符合信息的表,判斷該表是否為分區(qū)表。如果為非分區(qū)表則對(duì)該表進(jìn)行文件治理,如果為分區(qū)表則按照分區(qū)進(jìn)行治理,最后創(chuàng)建治理記錄。

每天定時(shí)任務(wù)觸發(fā),根據(jù)告警記錄查詢記錄中滿足條件的表的基本信息狀態(tài)。

● 小文件合并的具體步驟

1)備份文件

先創(chuàng)建臨時(shí)路徑,把文件復(fù)制到臨時(shí)路徑中去,再創(chuàng)建要合并的臨時(shí)文件

2)小文件合并

執(zhí)行 HDFS 的 fileMerge 請(qǐng)求合并文件

真正調(diào)用 hive-exec 方法處理,判斷是否達(dá)到閾值合并文件

3)將合并的文件覆蓋到原文件中去

判斷如果合并完成,刪除原路徑下的數(shù)據(jù),把臨時(shí)路徑修改為原來的真實(shí)路徑

全部處理完成后,查詢 rdos_file_merge_partition 表是否為異常信息打印,若不存在異常信息,更新治理記錄表完成治理,并更新數(shù)據(jù)地圖中的表信息

治理記錄表把握整體的治理成功失敗狀態(tài),分區(qū)信息治理信表維護(hù)了整個(gè)治理記錄哪些表治理失敗的記錄,最后全量返回對(duì)應(yīng)的是失敗或成功狀態(tài)。

· 分區(qū)信息治理信表:rdos_file_merge_partition

· 治理記錄表:rdos_file_merge_record

最后把表結(jié)構(gòu)放在下面,有興趣的小伙伴可以自行查看:

《數(shù)據(jù)治理行業(yè)實(shí)踐白皮書》下載地址:https://fs80.cn/l134d5?

想了解或咨詢更多有關(guān)袋鼠云大數(shù)據(jù)產(chǎn)品、行業(yè)解決方案、客戶案例的朋友,瀏覽袋鼠云官網(wǎng):https://www.dtstack.com/?src=szbzhan

同時(shí),歡迎對(duì)大數(shù)據(jù)開源項(xiàng)目有興趣的同學(xué)加入「袋鼠云開源框架釘釘技術(shù) qun」,交流最新開源技術(shù)信息,qun 號(hào)碼:30537511,項(xiàng)目地址:https://github.com/DTStack


干貨分享|袋鼠云數(shù)棧離線開發(fā)平臺(tái)在小文件治理上的探索實(shí)踐之路的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
玉田县| 阿合奇县| 清徐县| 襄汾县| 凤凰县| 双流县| 阜新市| 双峰县| 静安区| 巴中市| 佛教| 吉林省| 崇义县| 富宁县| 吐鲁番市| 邯郸县| 贵阳市| 怀化市| 鲁甸县| 南城县| 武功县| 青阳县| 昭苏县| 郎溪县| 潍坊市| 华宁县| 吉隆县| 建平县| 贵港市| 耒阳市| 万州区| 三江| 安达市| 皋兰县| 海城市| 琼海市| 寿宁县| 新宁县| 繁峙县| 平湖市| 芦溪县|