Hadoop之HDFS——【模塊一】元數據架構

一、元數據是什么

在HDFS中,元數據主要指的是文件相關的元數據,通過兩種形式來進行管理維護,第一種是內存,維護集群數據的最新信息,第二種是磁盤,對內存中的信息進行維護與持久化,由namenode管理維護。從廣義的角度來說,因為namenode還需要管理眾多的DataNode結點,因此DataNode的位置和健康狀態信息也屬于元數據。

二、文件的組成

meta:文件的索引,文件和目錄是文件系統的基本元素,HDFS將這些元素抽象成INode,每一個文件或目錄都對應一個唯一的INode。

block:真實的數據存儲的位置,Block是對于文件內容組織而言的,按照固定大小,順序對文件進行劃分并編號,劃分好的每一個塊就稱之為一個Block。

三、namenode的功能

1、管理HDFS命名空間(文件目錄樹及其目錄與文件的元數據),并以fsimage進行持久化保存。

2、處理客戶端的訪問,并將修改動作記錄到edits文件中。

3、在內存中維護數據塊的映射信息,即塊文件與datanode的對應關系,namenode只在內存中維護此關系,不會永久化到磁盤上,因此在集群剛啟動是,namenode中并沒有塊文件與datanode的對應關系,需要datanode上報自身的塊文件信息后,才可以正常工作。

4、實施副本冗余策略,當實際副本數小于配置數時,會啟動復制塊的線程,直到個數達配置數。

四、namenode的啟動過程

  1. 加載預先生成的持久化文件fsimage。
  2. 加載沒有完成處理的edit log文件。
  3. 等待DataNode注冊和匯報其所包含的block數據,校驗meta信息和block數據是否一致。

五、datanode的全量上報過程

  • DataNode啟動后通過RPC方式向NameNode注冊,注冊時攜帶的信息有:Software Version(當前DataNode版本號) storageInfo(集群信息)DataNodeId(節點自身信息)
  • 全量上報當前DataNode所有的block塊信息,包括block ID、所屬文件、存儲位置等,目的分別是使用NameNode維護集群數據,與meta進行校驗。
  1. 維護集群數據:NameNode需要知道集群中每個DataNode上存儲了哪些block塊以及其所屬的文件信息,以便在需要時能夠有效地管理和調度這些數據塊。DataNode會周期性地向NameNode報告自己所存儲的所有block塊的信息,包括block ID、所屬文件、存儲位置等。

  2. 校驗meta:在Hadoop集群中,為了確保數據的一致性和完整性,通常會使用Checksum來對數據進行校驗。當DataNode上報block塊信息時,NameNode會使用這些信息來驗證各個DataNode上的block塊是否完整、準確,并且與元數據中記錄的信息一致。這樣可以確保數據在集群中的可靠性。

  3. 例如,當一個DataNode上報block塊信息給NameNode時,NameNode會檢查這些信息,確保每個block塊的ID、所屬文件、復本數量等信息都是正確的。同時,NameNode也會對這些block塊所在的DataNode進行通信,驗證每個block塊的Checksum值,以確保數據的完整性和一致性,Checksum是存儲在DataNode的塊信息中的,與數據一起存儲。全量上報的時候,通過RPC一次性將所有的block發送給namenode比較浪費資源,采用限制分批次的方式,一次只能處理100w的block。
  • NameNode收到后,向元數據中記錄
  • DataNode每周期上報塊信息(默認6小時,可配置)
  • 心跳檢測,三秒一次
  • DataNode超過10分鐘+30秒沒有上報心跳,則NameNode將該節點移出認為該節點不可用

六、FSNamesystem的主要功能

  1. 命名空間管理: FSNamesystem負責維護HDFS的命名空間,包括文件和目錄的創建、刪除、重命名等操作,以及管理命名空間中的元數據信息。FSDirectory

  2. 數據塊管理: FSNamesystem負責管理HDFS中數據塊的分配、復制、移動和刪除等操作,確保數據塊的可靠性和高可用性。BlockManager(維護集群中的數據塊信息和數據塊狀態)

  3. 安全性管理: FSNamesystem負責對HDFS中的文件和目錄進行權限控制,驗證用戶對文件系統的訪問權限,并確保數據的安全性。

  4. 故障處理: FSNamesystem能夠檢測和處理DataNode的故障,及時調整數據塊的復制策略,以保證數據的可靠性和完整性。

  5. 元數據持久化:</

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/713161.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713161.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713161.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【測試開發面試復習(一)】計算機網絡:應用層詳解(P2)補充ing

復習自用&#xff0c;若有錯漏&#xff0c;歡迎一起交流一下~~ 一、高頻面試題記錄 uri 和 url 的區別 &#xff1f; dns 是啥工作原理&#xff0c;主要解析過程是啥&#xff1f; 用戶輸入網址到顯示對應頁面的全過程是啥&#xff1f; http 頭部包含哪些信息&#xff1f; http…

IEEE Trans. On Robotics ?“受護理人員啟發的雙臂機器人穿衣”研究工作

開發能夠協助穿衣的輔助機器人&#xff0c;可以極大地改善老年人和殘疾人的生活。然而&#xff0c;大多數機器人穿衣策略只考慮使用單個機器人&#xff0c;這大大限制了穿衣輔助的性能。事實上&#xff0c;專業護理人員是通過雙臂來完成這項任務的。受其啟發&#xff0c;我們提…

【YOLO v5 v7 v8 小目標改進】Non-local 注意力實現非局部神經網絡,解決長空間和時間數據依賴問題

Non-local 注意力實現非局部神經網絡&#xff0c;解決長空間和時間數據依賴問題 提出背景長距離技術對比Non-local Block是怎么設計Non-local 神經網絡效果 小目標漲點YOLO v5 魔改YOLO v7 魔改YOLO v8 魔改 提出背景 論文&#xff1a;https://arxiv.org/pdf/1711.07971.pdf …

用 tensor-parallel 多卡并發推理大模型

利用 tensor-parallel 把模型訓練與推理的 workload 平均分布到多塊 GPU&#xff0c;一方面可以提高推理速度&#xff0c;另一方面 vram 的負載平衡也讓復雜的 prompt 能被輕松處理。 import 相關的 libs&#xff1a; # torch version 2.0.0 import torch # tensor-parallel …

抽象類與抽象方法

文章目錄 抽象類抽象類的特點 抽象方法抽象方法的特點 模板設計模式模板設計模式能解決的問題示例 #抽象類與抽象方法 抽象類 用abstract關鍵字來修飾一個類時&#xff0c;這個類就叫抽象類。 public abstract 類名{... }抽象類的特點 1&#xff09;抽象類不能被實例化。 2&…

AOP(黑馬學習筆記)

AOP基礎 學習完spring的事務管理之后&#xff0c;接下來我們進入到AOP的學習。 AOP也是spring框架的第二大核心&#xff0c;我們先來學習AOP的基礎。 在AOP基礎這個階段&#xff0c;我們首先介紹一下什么是AOP&#xff0c;再通過一個快速入門程序&#xff0c;讓大家快速體驗A…

JAVASE初認識

1.初認識其結構 1.源文件&#xff08;擴展名為*.java)&#xff1a;源文件帶有類的定義。類用來表示程序的一個組件&#xff0c;小程序或許只會有一個類。類的內容必須包含在花括號里面。 2.類&#xff1a;類中帶有一個或多個方法。方法必須在類的內部聲明。 3.方法&#xff1…

vue3創建h5 項目使用rem做響應式的配置

第一步 安裝依賴&#xff1a; npm install amfe-flexible -S npm install postcss-px2rem -S第二步 main.ts文件中導入 import "amfe-flexible/index.js";第三步 進行配置&#xff1a; vue3 項目中創建 postcss.cinfig.js文件&#xff0c;這里是基于設計稿是750px…

gRPC知識歸檔

文章目錄 gRPC知識歸檔gRPC原理什么是gRPCgRPC的特性gRPC支持語言gRPC使用場景gRPC設計的動機和原則 數據封裝和數據傳輸問題網絡傳輸中的內容封裝和數據體積問題JSONProtobuf&#xff08;微服務之間的服務器調用&#xff0c;一般采用二進制序列化&#xff0c;比如protobuf&…

精讀《React Hooks 最佳實踐》

簡介 React 16.8 于 2019.2 正式發布&#xff0c;這是一個能提升代碼質量和開發效率的特性&#xff0c;筆者就拋磚引玉先列出一些實踐點&#xff0c;希望得到大家進一步討論。 然而需要理解的是&#xff0c;沒有一個完美的最佳實踐規范&#xff0c;對一個高效團隊來說&#x…

【airtest】自動化入門教程(二)airtest操作

目錄 一、touch 二、wait 三、swipe 四、exists 五、text 六、keyevent 七、snapshot 八、sleep 九、斷言 9.1 assert_exists 9.2 assert_not_exists 9.3 assert_equal 9.4 assert_not_equal 前言&#xff1a;本文主要針對aritest部分的基礎操作,aritest是一個跨平…

網絡編程第二天

1.基于TCP的通信(面向連接的通信) 服務器代碼實現&#xff1a; #include <myhead.h> #define IP "192.168.126.91" #define PORT 9999 int main(int argc, const char *argv[]) {//1、創建套接字int sfd-1;if((sfdsocket(AF_INET,SOCK_STREAM,0))-1){perror(…

LeetCode 76 最小覆蓋字串

LeetCode 76 最小覆蓋字串 在本篇博客中&#xff0c;我們將探討LeetCode上的一道算法題目——“最小覆蓋子串”。這道題的主要目標是找到字符串s中包含字符串t中所有字符的最小子串。 問題描述 給定字符串s和t&#xff0c;要求在字符串s中找到一個最小的子串&#xff0c;使得…

5.36 BCC工具之ucalls.py解讀

一,工具簡介 ucalls工具總結了包括Java、Perl、PHP、Python、Ruby、Tcl和Linux系統調用在內的各種高級語言中的方法調用。它顯示最常調用方法的統計信息,以及這些方法的延遲(持續時間)。 通過系統調用支持,ucalls可以提供關于進程與系統交互的基本信息,包括系統調用計數…

ES系列之Logstash實戰入門

概述 作為ELK技術棧一員&#xff0c;Logstash用于將數據采集到ES&#xff0c;通過簡單配置就能把各種外部數據采集到索引中進行保存&#xff0c;可提高數據采集的效率。 原理 數據源提供的數據進入Logstash的管道后需要經過3個階段&#xff1a; input&#xff1a;負責抽取數…

C#單向鏈表實現:在當前節點后插入新數據的方法Insert()

目錄 一、涉及到的知識點 1.插入算法 2.示例中current 和 _current 的作用 3.current 和 _current 能否合并為一個變量 4.單向鏈表節點類的三個屬性 &#xff08;1&#xff09;Next屬性&#xff1a; &#xff08;2&#xff09; Value屬性&#xff1a; &#xff08;3&am…

【ArcPy】批量讀取文件夾excel中XY并轉為點shp

示例展示 代碼 只讀取excel中含有XY字段的文件&#xff0c;并將矢量命名為excel文件名稱。 import os import pandas as pd import arcpy folder_path r"C:\Users\admin\Desktop\excelfile" extension"xlsx" files [file for file in os.listdir(folder…

SpringCloud gateway限流無效,redis版本低的問題

在使用springCloud gateway的限流功能的時候&#xff0c;配置RedisRateLimiter限流無效&#xff0c;后來發現是Redis版本過低導致的問題&#xff0c;實測 Redis版本為3.0.504時限流無效&#xff0c;改用7.0.x版本的Redis后限流生效。查了資料發現很多人都遇見過這個問題&#x…

RedisTemplate 序列化成功,反序列化失敗List, Set, Map失敗

RedisTemplate 序列化成功&#xff0c;反序列化失敗List, Set, Map失敗 異常信息RedisTemplate配置異常原因錯誤代碼示例解決方法 序列化成功&#xff0c;反序列化失敗 異常信息 Caused by: com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve ty…

小程序事件處理

事件處理 一個應用僅僅只有界面展示是不夠的&#xff0c;還需要和用戶做交互&#xff0c;例如&#xff1a;響應用戶的點擊、獲取用戶輸入的值等等&#xff0c;在小程序里邊&#xff0c;我們就通過編寫 JS 腳本文件來處理用戶的操作 1. 事件綁定和事件對象 小程序中綁定事件與…