日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一文了解 HDFS 及其组成框架

發布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一文了解 HDFS 及其组成框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HDFS是Google公司的 GFS論文 思想的實現,它由NameNode(名稱節點)、DataNode(數據節點)、SecondaryNameNode(第二名稱節點)組成。其中, NameNode 相當于論文中的 GFS Master , DataNode 相當于論文中的 GFS Chunk Server 。

GFS?? 是一個可擴展的分布式文件系統設計思想,用于設計針對大型的、分布式的、對大量數據進行訪問的文件系統。

      • 一、 HDFS簡介
        • 1.1 HDFS的概述
        • 1.2 HDFS的優點
        • 1.3 HDFS的缺點
      • 二、 HDFS的組成與架構
        • 2.1 NameNode節點
          • 2.1.1 節點職責
        • 2.2 DataNode節點
          • 2.2.1 節點職責
        • 2.3 SecondaryNameNode節點
          • 2.3.1 節點職責

一、 HDFS簡介

1.1 HDFS的概述

HDFS是基于 流數據 訪問模式的 分布式文件系統 ,其設計建立在 “一次寫入、多次讀取” 的基礎上,提供高吞吐量、高容錯性的數據訪問,能很好地解決海量數據的存儲問題。

流數據?? 是指數千個數據源 持續生成 的數據,可以理解為隨時間延續而 無限增長 的動態數據集合。
通俗點說,如果把數據比如成一個水庫,那么流進去的水,就是流數據(就像我們聽的音樂,屬于音樂流;而看到的文字、圖片這些較為固定的,一次性下載的,形成不了流)。

在Hadoop生態圈中,HDFS屬于底層基礎,負責存儲文件。
(圖片來源于網絡)

1.2 HDFS的優點

HDFS的優點:

  • 高容錯性。提供了容錯和恢復機制,副本丟失后,自動恢復。
  • 高可靠性。數據自動保存多個副本,通過多副本提高可靠性。
  • 適合大數據處理。可以處理超大文件,比如 TB級甚至PB級 的文件。
  • 適合批處理。移動計算而非移動數據;數據位置暴露給計算框架。
  • 支持流式數據訪問。一次性寫入,多次讀取(一個數據集一旦生成,就會被復制分發到不同的存儲節點,各節點可以進行讀取/訪問);保證數據一致性。
  • 低成本運行。可以運行在低成本的硬件之上。
  • HDFS 默認保存 3 份副本。


    第一個副本:放置在 上傳文件 的數據節點(第一個副本如果是在 集群外 提交,則隨機挑選一個 CPU 比較空閑磁盤不太滿 的節點);
    第二個副本:放置在與 第一個副本 不同 的機架的節點上;
    第三個副本:放在與 第二個副本 相同 的機架的其他節點上。

    1.3 HDFS的缺點

    HDFS的缺點:

  • 不適合處理 低延遲 的數據訪問。比如用戶 要求時間比較短 的低延遲應用(主要處理高數據吞吐量的應用)。
  • 不適合處理 大量的小 文件。會造成尋址時間超過讀取時間;會占用NameNode大量內存,因為NameNode把文件系統的元數據存放在內存中(文件系統的容量由NameNode的大小決定),小文件太多會消耗NameNode的內存。
  • 不適合 并發寫入。一個文件只能有一個寫入者,HDFS暫不支持多個用戶對同一個文件的寫操作。
  • 不適合 任意修改 文件。僅支持append(附加),不支持在文件的任意位置進行修改。
  • 二、 HDFS的組成與架構

    HDFS的組成架構圖及各部分功能如下所示:


    (圖片來源于網絡)

    2.1 NameNode節點

    當用戶訪問數據文件時,為了保證能夠讀取到每一個數據塊, HDFS有一個專門 負責保存文件屬性信息的節點,這個節點就是 NameNode 節點(即 名稱節點 )。

    2.1.1 節點職責

    NameNode節點 是HDFS的管理者,負責保存和管理HDFS的元數據。

    其職責有以下三個方面:
    ① 管理維護HDFS的命名空間
    NameNode管理HDFS系統的命名空間,維護文件系統樹以及文件系統樹中所有文件的元數據。管理這些信息的的文件分別是 edits(操作日志文件) 和 fsimage(命名空間鏡像文件) 。

    editlog(操作日志):在NameNode啟動的情況下,對HDFS進行的各種操作進行記錄。(HDFS客戶端執行的所有操作都會被記錄到editlog文件中,這些文件由edits文件保存)


    fsimage:包含HDFS中的元信息(比如修改時間、訪問時間、數據塊信息等)。

    ② 管理DataNode上的數據塊
    負責管理數據塊上所有的元數據信息(管理DataNode上數據塊的均衡,維持副本數量)。

    ③ 接收客戶端的請求
    接收客戶端文件上傳、下載、創建目錄等的請求。

    2.2 DataNode節點

    HDFS首先把大文件切分成若干個小的數據塊,再把這些數據塊寫入不同的節點,這個 負責保存文件數據的節點就是 DataNode 節點(即 數據節點 )。

    2.2.1 節點職責

    DataNode節點 負責存儲數據,把Block(數據塊)以Linux文件的形式保存在磁盤上,并根據Block標識和字節范圍來讀寫塊數據。

    其職責有以下三個方面:
    ① 保存數據塊
    一個數據塊會在多個DataNode進行冗余備份(在某一個DataNode最多只有一個備份)。

    ② 負責客戶端對數據塊的IO請求
    在客戶端執行寫操作時,DataNode之間會相互通信,保證寫操作的一致性。

    ③ 定期和NameNode進行心跳通信,接受NameNode的指令
    如果NameNode節點10分鐘沒有收到DataNode的心跳信息,就會將其上的數據塊復制到其他DataNode節點。

    因此,NameNode節點上并不會永久保存DataNode節點上的數據塊信息,而是通過與DataNode節點心跳聯系的方式,來更新節點上的映射表,以此減輕負擔。

    問題:HDFS數據塊默認大小為128M(Hadoop2.2之前為64M),將HDFS的數據塊設置得很大的目的是什么?(傳統數據塊只有512個字節)

    答:為了減少尋址開銷,讓HDFS的文件傳輸時間由傳輸速率決定(如果塊設置得足夠大,從磁盤 傳輸數據的時間 會明顯大于 定位這個塊開始位置 所需的時間)。

    2.3 SecondaryNameNode節點

    HDFS有一個定期創建命名空間的檢查點(CheckPoint)操作的節點,也就是SecondaryNameNode節點(即 第二名稱節點)。

    出于可靠性考慮,SecondaryNameNode節點與NameNode節點通常運行在不同的機器上,且SecondaryNameNode節點與NameNode節點的內存要一樣大。

    (如果想了解 SecondaryNameNode 的工作流程,可以參考這篇文章:淺析 SecondaryNameNode 的工作流程 )

    問題:一般情況下,一個集群中的SecondaryNameNode節點也是只有一個的原因是什么?


    答:因為如果多的話,會增加NameNode的壓力,使其忙于元數據的傳輸/接收、日志的傳輸/切換,從而導致性能下降;同時,NameNode節點也不支持做并發檢查點。

    2.3.1 節點職責

    SecondaryNameNode節點 定期把NameNode的 fsimage 和 edits 下載到本地,再將它們加載到內存并進行合并,最后把合并后新的 fsimage 返回NameNode (這個過程稱為檢查點)。

    經典問題:NameNode與SecondaryNameNode有沒有關系?

    SecondaryNameNode節點的工作流程可以參考這篇文章:

    其職責有以下兩個方面:
    ① 防止edits過大
    定期合并 fsimage 和 edits 文件,使 edits 大小保持在限制范圍內。這樣做減少了重新啟動NameNode時合并 fsimage 和 edits 耗費的時間,從而減少了NameNode啟動的時間。

    ② 做冷備份
    對一定范圍內數據做快照性備份,在NameNode失效時能恢復部分 fsimage 。

    好了,HDFS 及其組成框架介紹完成。

    如果想進一步了解 HDFS 的工作機制,可以參考這篇文章:圖文詳解 HDFS 工作機制及其原理 。


    如果文章對您有幫助,請點個,留給評論支持一下😊,若有疑問可以私信留言😉。如果能給個三連(點贊收藏關注 )就最好啦😁。

    總結

    以上是生活随笔為你收集整理的一文了解 HDFS 及其组成框架的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。