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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【Hadoop系列】HDFS

發布時間:2023/12/10 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Hadoop系列】HDFS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Hadoop的前世今生

什么是大數據

各行各業都會產生大量的數據,比如社交網站的意見觀點,電商平臺人們瀏覽網頁停留的時間,交通運輸每天產生的數據等等。這些數據大多不是結構化的,一般來說都是半結構化或者非結構化的

在以前,我們的處理能力達不到,所以很多數據要么沒有存起來,要么沒有利用起來。而現在數據越來越集中在云端的服務器上,并且計算能力已經今非昔比了,我們完全有能力對大數據進行存儲和分析。

所以所謂的大數據指的就是,原有的計算能力無法處理的大批量的數據,而大數據技術研究的是如何快速有效的處理這些結構化、半結構化數據的技術。

處理大數據的架構

下圖是傳統的集中式架構

它的主要問題在于擴展性不強而且數據庫將成為很大的瓶頸。

所以谷歌提出了

  • MapReduce算法

  • BigTable

  • GFS

合稱“三劍客”。

那么相對于傳統的架構,有什么樣的變化呢?

  • 首先它可以使用大量的x86服務器,而不是使用性能強健的大型機來完成計算,也就是Scale-out的

  • 另外它使用軟件方案來保證硬件故障容錯

    我們知道x86服務器的穩定性不如小型機,存在一定的故障的可能,但是小型機實在太貴了。我們完全可以讓x86服務器組成集群,然后使用上層軟件來保障整體的硬件故障容錯。

  • 簡化并行分布式計算,不需要再控制節點的同步和數據的交換。

Hadoop模仿Google的實現方式,最終演變成一系列的開源項目。

總結一下:

大數據既是一個概念又是一門技術,它是以Hadoop和Spark為代表的大數據基礎框架,可以實現數據分析、挖掘、預測。

Hadoop

上面說到Hadoop是一種分布式計算解決方案,含有若干組件,其中最著名的當屬

  • HDFS分布式文件系統:存儲海量數據

    存儲技術是大數據的基礎,因為對于大量的數據,我們希望能找的一種比較廉價的方式來保存我們的數據,那么分布式文件系統當屬首選。

  • MapReduce編程模型:

    并行處理框架,實現任務分解和調度

所以Hadoop的優勢在于:

  • 高擴展性,也就是可以通過增加節點來活動性能提升,比如說性能不夠了,就懟新的服務器上去。

  • 低成本,可以基于便宜的x86服務器

  • 成熟的生態圈,里面有大量的工具集可以使用

下面分別介紹一下HDFS和MapReduce

HDFS

在【大話存儲II】學習筆記(15章),文件級集群系統中我們介紹了分布式集群的基本概念。

分布式文件系統可以等價于非共享存儲集群文件系統,也就是說同一個文件系統下的文件是存放在不同的節點里面,而且Sharing-nothing

那么分布式文件系統應該解決

  • 統一的命名空間,也就是對外顯現同一個文件目錄。

    這樣用戶不用管數據是如何存放的,分布式文件系統已經幫它解決存放的問題了,用戶用起來就像使用本地文件一樣簡單。

  • 緩存一致,因為數據都緩存在各自的節點,不存在不緩存不一致的情況。

  • 分布式鎖,也就是多個連接并發訪問的時候,如何控制文件的數據會出現不一致的情況。

若要理解HDFS,我們需要知道如下的基本概念。

基本概念

分布式設計

HDFS這樣的架構,非常類似于【大話存儲II】學習筆記(15章),塊級集群存儲系統中的XIV,當然XIV是提供塊存儲的,不過XIV也利用了文件系統的思想,對每個塊像一個文件一樣。

HDFS的基本存儲和操作單位是數據塊, 默認大小64MB,一般設置為128M。為什么要這么設計呢?因為一個文件會比較大,為了分布式存放,可以分成若干小塊。那么最好就切成相同大小,比如說64MB。

而且為了保證數據塊不丟失,對每個數據塊會保存3副本,分布在兩個機架的三個節點中。 其中兩份在同一個機架,一份在另一個機架。

比如下圖中兩個A數據塊放在機架1,另一份副本放到了機架2 。

角色

在【大話存儲II】學習筆記(15章),文件級集群系統我們介紹過,分布式文件系統有對稱和非對稱的兩種。

對稱集群中所有節點的地位相同,互相維護通信鏈接進行數據同步,也正因為如此,不適合擴展。

而HDFS采用的是非對稱集群,所以有Master和Slave兩種角色。

Master就是HDFS中的NameNode,它的作用是 存放元數據,管理文件系統的命名空間。也就是一個注冊中心,其他的Slave都要到它這邊注冊。

Master和Slave組成集群以后,可以自服務,也可以對外提供服務。

它會記錄兩種信息:

  • 文件與數據塊的映射關系

  • 數據塊與服務器的對應關系,也就是每個塊存放的節點的信息

Slave則是DataNode,它的主要作用就是存放數據塊,是具體的執行者。

當塊存儲信息改變了以后,DataNode會向NameNode主動更新信息

另外,在這種主從架構里面,NameNode的地位很超然,非常的重要,一旦他掛了則整個系統就宕了。

所以從HDFS 2x就可以為NameNode配置HA了。

如下圖所示,出現了一個Secondary NameNode。

二級NameNode定期同步元數據鏡像文件和修改日志,當NameNode發生故障時,備胎轉正。

HDFS的讀與寫

下面我們來看一下寫流程。

  • 客戶端向NameNode發出請求,表示自己要發送文件了,然后NameNode會返回現在空余存儲的信息

  • 然后客戶端將文件分塊,

  • 接著,客戶端將數據塊1以及相應的元數據信息發給DataNode1

  • 然后開啟流水線復制,將數據同步給另外的節點

  • 寫完了以后,DataNode才返回更新信息,最后NameNode向客戶端返回成功。


讀文件

下圖展示了HDFS的讀流程

  • 首先客戶端向NameNode發起讀請求,將路徑+文件名發過去

  • NameNode返回元數據,告訴客戶端可以從哪些地方取

  • 然后由客戶端自己向DataNode讀取數據

HDFS的特點

了解了HDFS的架構以及讀寫流程以后,我們可以總結一下HDFS的特點。

本質上HDFS就是一個分布式文件系統,它

  • 通過三副本機制進行冗余,類似于的分布式的RAID10

  • 它的寫比較的復雜,需要復制2份,還要同步各種信息,而且修改也比較麻煩,只能刪除以后再寫。所以比較適合于一次寫入,多次讀取的場景,現在的OLAP就比較契合

  • 因為每次寫或者讀都需要向NameNode發起請求,所以NameNode是整個系統的瓶頸,所以如果是小文件的話,NameNode壓力非常大。

也就是說HDFS適合于批量讀,這樣吞吐量高,因為可以并發讀嘛。

但是不支持多用戶寫相同的文件,因為沒有加鎖。

也就是不適合交互應用以及那些實時性要求高的地方。

轉載于:https://www.cnblogs.com/dy2903/p/8492304.html

總結

以上是生活随笔為你收集整理的【Hadoop系列】HDFS的全部內容,希望文章能夠幫你解決所遇到的問題。

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