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

HDFS 為何在大數據領域經久不衰?

大數據 數據倉庫
HDFS是最早的大數據存儲系統,存儲著寶貴的數據資產,各種新算法、框架要想得到廣泛使用,必須支持HDFS,才能獲取已存儲在里面的數據。所以大數據技術越發展,新技術越多,HDFS得到的支持越多,越離不開HDFS。

1.概述

1.1 簡介

  • Hadoop實現的一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。
  • 源自于Google的GFS論文,發表于2003年,HDFS是GFS的克隆版。

大數據中最寶貴、最難以代替的就是數據,一切都圍繞數據。

HDFS是最早的大數據存儲系統,存儲著寶貴的數據資產,各種新算法、框架要想得到廣泛使用,必須支持HDFS,才能獲取已存儲在里面的數據。所以大數據技術越發展,新技術越多,HDFS得到的支持越多,越離不開HDFS。HDFS也許不是最好的大數據存儲技術,但依然是最重要的大數據存儲技術。

HDFS是如何實現大數據高速、可靠的存儲和訪問的呢?

Hadoop分布式文件系統HDFS的設計目標是管理數以千計的服務器、數以萬計的磁盤,將大規模的服務器計算資源當作一個單一存儲系統進行管理,對應用程序提供數以PB計的存儲容量,讓應用程序像使用普通文件系統一樣存儲大規模的文件數據。

1.2 設計目標

文件以多副本的方式進行存儲:

 filel:node1 node2 node3
file2: node2 node3 node4
file3: node3 node4 node5
file4: node5 node6 node7

缺點:

  • 不管文件多大,都存儲在一個節點,在進行數據處理時,很難進行并行處理,節點可能就成為網絡瓶頸,很難進行大數據的處理。
  • 存儲負載很難均衡,每個節點的利用率很低。

優點:

  • 巨大的分布式文件系統。
  • 運行在普通廉價的硬件。
  • 易擴展、為用戶提供性能不錯的文件存儲服務。

2 .如何設計一個分布式文件系統

HDFS的大容量存儲和高速訪問的實現。

RAID將數據分片后,在多塊磁盤上并發進行讀寫訪問,提高了存儲容量、加快了訪問速度,并通過數據冗余校驗提高了數據可靠性,即使某塊磁盤損壞也不會丟數據。將RAID的設計理念擴大到整個分布式服務器集群,就產生了分布式文件系統,這便是Hadoop分布式文件系統的核心原理。

和RAID在多個磁盤上進行文件存儲及并行讀寫的思路一樣,HDFS是在一個大規模分布式服務器集群上,對數據分片后進行并行讀寫及冗余存儲。因為HDFS可部署在一個大的服務器集群,集群中所有服務器的磁盤都可供HDFS使用,所以整個HDFS的存儲空間可以達到PB級。

HDFS是主從架構。一個HDFS集群會有一個NameNode(命名節點,簡稱NN),作為主服務器(master server)。

  • NameNode用于管理文件系統的命名空間以及調節客戶訪問文件。
  • 還有多個DataNode(簡稱DN),數據節點,作為從節點(slave server)存。
  • 通常每個集群中的DataNode,都會被NameNode所管理,DataNode用于存儲數據。

HDFS公開了文件系統名稱空間,允許用戶將數據存儲在文件中,就好比我們平時使用os中的文件系統一樣,用戶無需關心底層是如何存儲數據的。 在底層,一個文件會被分成一或多個數據塊,這些數據庫塊會被存儲在一組數據節點中。在CDH中數據塊的默認128M。 在NameNode,可執行文件系統的命名空間操作,如打開,關閉,重命名文件等。這也決定了數據塊到數據節點的映射。

HDFS被設計為可運行在普通的廉價機器上,而這些機器通常運行著一個Linux操作系統。一個典型的HDFS集群部署會有一個專門的機器只能運行NameNode,而其他集群中的機器各自運行一個DataNode實例。雖然一臺機器上也可以運行多個節點,但不推薦。

DataNode

  • 存儲用戶的文件對應的數據塊(Block)
  • 會定期向NN發送心跳信息,匯報本身及其所有的block信息和健康狀況

負責文件數據的存儲和讀寫操作,HDFS將文件數據分割成若干數據塊(Block),每個DataNode存儲一部分Block,這樣文件就分布存儲在整個HDFS服務器集群中。

應用程序客戶端(Client)可并行訪問這些Block,從而使得HDFS可以在服務器集群規模上實現數據并行訪問,極大提高訪問速度。

HDFS集群的DataNode服務器會有很多臺,一般在幾百臺到幾千臺,每臺服務器配有數塊磁盤,整個集群的存儲容量大概在幾PB~數百PB。

NameNode

  • 負責客戶端請求的響應
  • 負責元數據(文件的名稱、副本系數、Block存放的DN)的管理

負責整個分布式文件系統的元數據(MetaData)管理,即文件路徑名、數據塊的ID以及存儲位置等信息,類似os中的文件分配表(FAT)。

HDFS為保證數據高可用,會將一個Block復制為多份(默認3份),并將多份相同的Block存儲在不同服務器,甚至不同機架。當有磁盤損壞或某個DataNode服務器宕機,甚至某個交換機宕機,導致其存儲的數據塊不能訪問時,客戶端會查找其備份Block訪問。

3.S副本機制

HDFS中,一個文件會被拆分為一個或多個數據塊。默認每個數據塊有三個副本,每個副本都存放在不同機器,而且每一個副本都有自己唯一的編號:

Block多份復制存儲的示意圖

文件/users/sameerp/data/part-0的復制備份數設為2,存儲的BlockID分別為1、3:

  • Block1的兩個備份存儲在DataNode0和DataNode2兩個服務器上。
  • Block3的兩個備份存儲DataNode4和DataNode6兩個服務器上。

上述任一臺服務器宕機后,每個數據塊都至少還有一個備份存在,不會影響對文件/users/sameerp/data/part-0的訪問。

和RAID一樣,數據分成若干Block后,存儲到不同服務器,實現數據大容量存儲,并且不同分片的數據能并行進行讀/寫操作,實現數據的高速訪問。

副本存放策略

副本存放:NameNode節點選擇一個DataNode節點去存儲block副本的過程,該過程的策略是在可靠性和讀寫帶寬間權衡。

《Hadoop權威指南》中的默認方式:

  • 第一個副本會隨機選擇,但是不會選擇存儲過滿的節點
  • 第二個副本放在和第一個副本不同且隨機選擇的機架
  • 第三個和第二個放在同一機架上的不同節點
  • 剩余副本完全隨機節點

合理性分析

  • 可靠性:block存儲在兩個機架
  • 寫帶寬:寫操作僅穿過一個網絡交換機
  • 讀操作:選擇其中一個機架去讀
  • block分布在整個集群

Google大數據“三駕馬車”的第一駕是GFS(Google 文件系統),而Hadoop的第一個產品是HDFS,分布式文件存儲是分布式計算的基礎。

這些年來,各種計算框架、各種算法、各種應用場景不斷推陳出新,但大數據存儲的王者依然是HDFS。

5.HDFS的高可用設計

5.1 數據存儲故障容錯

磁盤介質在存儲過程中受環境或者老化影響,其存儲的數據可能會出現錯亂。

HDFS對存儲在DataNode上的數據塊,計算并存儲校驗和(CheckSum)。在讀數據時,重新計算讀取出來的數據的校驗和,校驗不正確就拋異常,應用程序捕獲異常后就到其他DataNode上讀取備份數據。

5.2 磁盤故障容錯

DataNode監測到本機的某塊磁盤損壞,就將該塊磁盤上存儲的所有BlockID報告給NameNode,NameNode檢查這些數據塊還在哪些DataNode上有備份,通知相應的DataNode服務器將對應的數據塊復制到其他服務器上,以保證數據塊的備份數滿足要求。

5.3 DataNode故障容錯

DataNode會通過心跳和NameNode保持通信,如果DataNode超時未發送心跳,NameNode就會認為這個DataNode已經宕機失效,立即查找這個DataNode上存儲的數據塊有哪些,以及這些數據塊還存儲在哪些服務器上,隨后通知這些服務器再復制一份數據塊到其他服務器上,保證HDFS存儲的數據塊備份數符合用戶設置的數目,即使再出現服務器宕機,也不會丟失數據。

5.4 NameNode故障容錯

NameNode是整個HDFS的核心,記錄著HDFS文件分配表信息,所有的文件路徑和數據塊存儲信息都保存在NameNode,如果NameNode故障,整個HDFS系統集群都無法使用;如果NameNode上記錄的數據丟失,整個集群所有DataNode存儲的數據也就沒用了。

所以,NameNode高可用容錯能力非常重要。NameNode采用主從熱備的方式提供高可用服務:

集群部署兩臺NameNode服務器:

  • 一臺作為主服務器提供服務
  • 一臺作為從服務器進行熱備

兩臺服務器通過Zk選舉,主要是通過爭奪znode鎖資源,決定誰是主服務器。而DataNode則會向兩個NameNode同時發送心跳數據,但是只有主NameNode才能向DataNode返回控制信息。

正常運行期,主從NameNode之間通過一個共享存儲系統shared edits來同步文件系統的元數據信息。當主NameNode服務器宕機,從NameNode會通過ZooKeeper升級成為主服務器,并保證HDFS集群的元數據信息,也就是文件分配表信息完整一致。

軟件系統,性能差點,用戶也許可接受;使用體驗差,也許也能忍受。但若可用性差,經常出故障不可用,就麻煩了;如果出現重要數據丟失,那開發攤上大事。

而分布式系統可能出故障地方又非常多,內存、CPU、主板、磁盤會損壞,服務器會宕機,網絡會中斷,機房會停電,所有這些都可能會引起軟件系統的不可用,甚至數據永久丟失。

所以在設計分布式系統的時候,軟件工程師一定要繃緊可用性這根弦,思考在各種可能的故障情況下,如何保證整個軟件系統依然是可用的。

6.保證系統可用性的策略

冗余備份

任何程序、任何數據,都至少要有一個備份,也就是說程序至少要部署到兩臺服務器,數據至少要備份到另一臺服務器上。此外,稍有規模的互聯網企業都會建設多個數據中心,數據中心之間互相進行備份,用戶請求可能會被分發到任何一個數據中心,即所謂的異地多活,在遭遇地域性的重大故障和自然災害的時候,依然保證應用的高可用。

失效轉移

當要訪問的程序或者數據無法訪問時,需要將訪問請求轉移到備份的程序或者數據所在的服務器上,這也就是失效轉移。失效轉移你應該注意的是失效的鑒定,像NameNode這樣主從服務器管理同一份數據的場景,如果從服務器錯誤地以為主服務器宕機而接管集群管理,會出現主從服務器一起對DataNode發送指令,進而導致集群混亂,也就是所謂的“腦裂”。這也是這類場景選舉主服務器時,引入ZooKeeper的原因。ZooKeeper的工作原理,我將會在后面專門分析。

降級

當大量的用戶請求或者數據處理請求到達的時候,由于計算資源有限,可能無法處理如此大量的請求,進而導致資源耗盡,系統崩潰。這種情況下,可以拒絕部分請求,即進行限流;也可以關閉部分功能,降低資源消耗,即進行降級。限流是互聯網應用的常備功能,因為超出負載能力的訪問流量在何時會突然到來,你根本無法預料,所以必須提前做好準備,當遇到突發高峰流量時,就可以立即啟動限流。而降級通常是為可預知的場景準備的,比如電商的“雙十一”促銷,為了保障促銷活動期間應用的核心功能能夠正常運行,比如下單功能,可以對系統進行降級處理,關閉部分非重要功能,比如商品評價功能。

總結

HDFS是如何通過大規模分布式服務器集群實現數據的大容量、高速、可靠存儲、訪問的。

  1. 文件數據以數據塊的方式進行切分,數據塊可以存儲在集群任意DataNode服務器上,所以HDFS存儲的文件可以非常大,一個文件理論上可以占據整個HDFS服務器集群上的所有磁盤,實現了大容量存儲。
  2. HDFS一般的訪問模式是通過MapReduce程序在計算時讀取,MapReduce對輸入數據進行分片讀取,通常一個分片就是一個數據塊,每個數據塊分配一個計算進程,這樣就可以同時啟動很多進程對一個HDFS文件的多個數據塊進行并發訪問,從而實現數據的高速訪問。關于MapReduce的具體處理過程,我們會在專欄后面詳細討論。
  3. DataNode存儲的數據塊會進行復制,使每個數據塊在集群里有多個備份,保證了數據的可靠性,并通過一系列的故障容錯手段實現HDFS系統中主要組件的高可用,進而保證數據和整個系統的高可用。


責任編輯:華軒 來源: 今日頭條
相關推薦

2012-08-23 10:31:37

2016-03-01 11:40:02

SaaS網絡效應生態系統創建

2021-06-15 17:13:20

數據存儲硬盤固態盤

2019-09-26 09:00:31

Java編程語言

2022-08-12 15:59:18

區塊鏈加密貨幣系統

2021-03-15 08:40:46

數據分析波動

2017-02-27 16:35:00

HDFS大數據分析

2023-03-16 19:23:39

2015-05-20 09:52:47

2024-01-30 01:12:37

自然語言時間序列預測Pytorch

2022-02-16 16:09:12

鴻蒙游戲操作系統

2015-07-27 15:27:11

程序員重寫代碼

2020-12-18 17:06:50

Windows工具開源

2021-01-25 22:04:30

WindowsCoodesker工具

2021-12-01 15:21:14

程序員技能互聯網

2016-02-29 11:54:11

手機屏幕尺寸iPone5se

2017-11-20 08:13:26

大數據大數據技術數據

2021-11-30 09:51:19

微軟操作系統Windows

2022-08-09 08:02:36

Python人物關系紅樓夢

2021-04-14 09:04:03

大數據HDFS大數據開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美性受xxxx| 国产一区二区av | 中文字幕高清在线 | 色综合激情 | 三级高清 | 亚洲综合中文字幕在线观看 | 91色网站| 日韩一区二区视频 | 逼逼网| 精品成人 | 国产免费一区 | 国产美女视频一区 | 午夜激情免费 | 午夜欧美 | 国产特级毛片aaaaaa喷潮 | 欧美亚洲国产日韩 | 成人精品一区二区三区中文字幕 | 国产精品无码专区在线观看 | 国产精品久久久久久久7电影 | 久久av在线播放 | 国产精品成人国产乱一区 | 久久久久国产精品午夜一区 | a毛片 | 亚洲免费在线 | 精品视频一区二区三区在线观看 | 欧产日产国产精品视频 | 亚洲毛片一区二区 | 午夜天堂精品久久久久 | 久久成人精品视频 | 一区二区在线不卡 | 日韩在线观看一区 | 全免一级毛片 | 欧美成人黄色小说 | 中文字幕在线一区二区三区 | 久久久久久久一区二区 | 国产精品久久久久久久久久久久久久 | 精品国产免费一区二区三区演员表 | 亚洲精品久久久久久下一站 | 久久这里只有精品首页 | 日韩高清一区 | av一区二区三区四区 |