天天看點

獨家 | 帶你認識HDFS和如何建立3個節點HDFS叢集(附代碼&案例)

作者:尼廷·蘭詹(Nitin Ranjan)

文章來源:微信公衆号 資料派THU

翻譯:陳之炎

校對:王威力

----

在本文中,大資料專家将為您介紹如何使用HDFS以及如何利用HDFS建立HDFS叢集節點。

我們将從HDFS、Zookeeper、Hbase和OpenTSDB上的系列部落格開始,了解如何利用這些服務設定OpenTSDB叢集。在本文中,我們将探究HDFS。

HDFS

Hadoop分布式檔案系統(HDFS)是一種基于Java的分布式檔案系統,它具有容錯性、可伸縮性和易擴充性等優點,它可在商用硬體上運作,也可以在低成本的硬體上進行部署。HDFS是一個分布式存儲的Hadoop應用程式,它提供了更易通路資料的接口。

架構

HDFS架構包含一個NameNode、DataNode和備用NameNode。

HDFS具有主/從架構。

獨家 | 帶你認識HDFS和如何建立3個節點HDFS叢集(附代碼&案例)

NameNode:HDFS叢集包含單個NameNode(主伺服器),它管理檔案系統命名空間并控制用戶端對檔案的通路權限。它維護和管理檔案系統中繼資料;例如由哪些塊構成檔案,以及存儲這些塊的資料節點。

DataNode:可以有多個DataNode,通常是叢集中每個節點有一個DataNode,它負責管理運作節點的存儲通路。HDFS中的DataNode存儲實際資料,可以添加更多的DataNode來增加可用空間。

備用NameNode :備用NameNode服務并非真正的備用NameNode,盡管名稱是稱為備用NameNode。具體來說,它并不為NameNode提供高可用性(HA)。

為什麼需要備用NameNode?

備用NameNode記錄檔案系統的修改痕迹,追加到本機檔案系統檔案的後面,作為修改日志。

啟動備用NameNode時,它會從映像檔案fsimage中讀取HDFS狀态,然後啟用“編輯日志檔案”對它進行編輯。

然後将新的HDFS狀态寫入fsimage,并使用“空編輯檔案”啟動正常操作。

由于NameNode隻在啟動時合并fsimage和編輯檔案,是以在繁忙的叢集中,随着時間的推移,“編輯日志檔案”會變得非常大。

大“編輯日志檔案”的另一個副作用是:在下次重新啟動NameNode時,需要花費更長的時間。

備用NameNode定期合并fsimage和“編輯日志檔案”,并将“編輯日志檔案”的大小保持在限定範圍内。

備用NameNode通常在與主NameNode不同的計算機上運作,因為它的記憶體要求與主NameNode的相同。

關鍵特征

容錯:為了防止機器故障,可跨多個DataNode複制容錯資料,複制因子的預設值是3(如果有3個DataNode,每個塊至少存儲在三台計算機上)。

可伸縮性- DataNode之間可實作直接資料傳輸,是以讀/寫次數應與DataNode的數量相比對。

空間-需要更多的磁盤空間?隻需添加更多DataNodes和再平衡。

行業标準-其他分布式應用程式均建構在HDFS之上(HBASE,Map-Reduction)。

HDFS是用來處理大資料集的,它具有write-once-read-many(一次寫-多次讀)的語義,不适合低延遲通路。

資料結構

  • 寫入HDFS的每個檔案被分割為64MB或128MB大小的資料塊。
  • 每個塊存儲在一個或多個節點上。
  • 塊的每個副本均稱為副本。

分塊安置政策

  • 第一副本放在本地節點上。
  • 第二副本放在不同的機架上。
  • 第三副本與第二副本放置在同一機架中。

設定HDFS叢集

要建立HDFS叢集,會用到Docker。有關Docker映像的詳細資訊,請參見:

https://hub.docker.com/u/uhopper/

步驟

  • 建立一個Docker群網絡。
獨家 | 帶你認識HDFS和如何建立3個節點HDFS叢集(附代碼&案例)

檢視Gist上的代碼。

連結:

https://gist.github.com/NitinRanjan/58427ee62d3575f85b3c4f22cdae47cb

NameNode

在VM1中為NameNode建立環境變量檔案(namenode_env)。

獨家 | 帶你認識HDFS和如何建立3個節點HDFS叢集(附代碼&案例)

在VM1上建立NameNode:

獨家 | 帶你認識HDFS和如何建立3個節點HDFS叢集(附代碼&案例)

連結:

  • 在所有3個VM中為DataNode建立環境變量檔案(datanode_env)。
  • 在VM1上建立DataNode1:
獨家 | 帶你認識HDFS和如何建立3個節點HDFS叢集(附代碼&案例)
  • 在VM2上建立DataNode 2:
獨家 | 帶你認識HDFS和如何建立3個節點HDFS叢集(附代碼&案例)
  • 在VM 3上建立DataNode 3。
獨家 | 帶你認識HDFS和如何建立3個節點HDFS叢集(附代碼&案例)

在所有vms中,通過執行docker ps檢查所有容器是否已啟動并正常運作。

一旦所有容器均已啟動并運作,請轉到VM1,打開浏覽器,打開

http://localhost:50070/dfshealth.html#tab-datanode.

将會看到如下輸出:

獨家 | 帶你認識HDFS和如何建立3個節點HDFS叢集(附代碼&案例)

HDFS CLI

獨家 | 帶你認識HDFS和如何建立3個節點HDFS叢集(附代碼&案例)

在本文中,我們研究了HDFS以及如何建立3個節點HDFS叢集。在下一篇文章中,我們将關注Zookeeper,并建立一個Zookeeper叢集。

參考文獻:

https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html https://docs.docker.com/network/network-tutorial-overlay/#walkthrough

本文首次在Generic Class部落格上發表。

原文标題:

An Introduction to HDFS

原文連結:

https://dzone.com/articles/an-introduction-to-hdfs

編輯:王菁

校對:洪淑越

譯者簡介

陳之炎,北京交通大學通信與控制工程專業畢業,獲得工學碩士學位,曆任長城計算機軟體與系統公司工程師,大唐微電子公司工程師,現任北京吾譯超群科技有限公司技術支援。目前從事智能化翻譯教學系統的營運和維護,在人工智能深度學習和自然語言處理(NLP)方面積累有一定的經驗。業餘時間喜愛翻譯創作,翻譯作品主要有:IEC-ISO 7816、伊拉克石油工程項目、新财稅主義宣言等等,其中中譯英作品“新财稅主義宣言”在GLOBAL TIMES正式發表。能夠利用業餘時間加入到THU 資料派平台的翻譯志願者小組,希望能和大家一起交流分享,共同進步

翻譯組招募資訊

工作内容:需要一顆細緻的心,将選取好的外文文章翻譯成流暢的中文。如果你是資料科學/統計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水準有信心的朋友歡迎加入翻譯小組。

你能得到:定期的翻譯教育訓練提高志願者的翻譯水準,提高對于資料科學前沿的認知,海外的朋友可以和國内技術應用發展保持聯系,THU資料派産學研的背景為志願者帶來好的發展機遇。

其他福利:來自于名企的資料科學工作者,北大清華以及海外等名校學生他們都将成為你在翻譯小組的夥伴。