HDFS-簡介

HDFSHadoop Distribute File System 的簡稱,意為:Hadoop 分布式文件系統,是一種旨在在商品硬件上運行的分布式文件系統。它與現有的分布式文件系統有許多相似之處。但是,與其他分布式文件系統的區別很明顯。HDFS具有高度的容錯能力,旨在部署在低成本硬件上。HDFS提供對應用程序數據的高吞吐量訪問,并且適用于具有大數據集的應用程序。HDFS放寬了一些POSIX要求,以實現對文件系統數據的流式訪問。HDFS最初是作為Apache Nutch Web搜索引擎項目的基礎結構而構建的。HDFS是Apache Hadoop Core項目的一部分,是 Hadoop 核心組件之一,作為最底層的分布式存儲服務而存在。

一、特點

  • 高容錯:硬件故障是正常現象,而非例外。HDFS實例可能包含數百或數千個服務器計算機,每個服務器計算機都存儲文件系統數據的一部分。存在大量組件并且每個組件的故障概率都很低的事實意味著HDFS的某些組件始終無法運行。因此,檢測故障并快速,自動地從故障中恢復是HDFS的核心目標。
  • 流數據訪問:在HDFS上運行的應用程序需要對其數據集進行流式訪問。它們不是通常在通用文件系統上運行的通用應用程序。HDFS設計用于批處理,而不是用戶交互使用。重點在于數據訪問的高吞吐量,而不是數據訪問的低延遲。POSIX提出了許多針對HDFS的應用程序不需要的硬性要求。在一些關鍵領域中,POSIX語義已經被交易以提高數據吞吐率。
  • 支持大數據集:在HDFS上運行的應用程序具有大量數據集。HDFS中的典型文件大小為GB到TB。因此,HDFS已調整為支持大文件。它應提供較高的聚合數據帶寬,并可以擴展到單個群集中的數百個節點。它應該在單個實例中支持數千萬個文件。
  • 一次寫入多次讀取:HDFS應用程序需要文件一次寫入多次讀取訪問模型。一旦創建,寫入和關閉文件,除了追加和截斷外,無需更改。支持將內容追加到文件末尾,但不能在任意點更新。該假設簡化了數據一致性問題并實現了高吞吐量數據訪問。MapReduce應用程序或Web爬網程序應用程序非常適合此模型。
  • 移動計算:如果應用程序所請求的計算在其所操作的數據附近執行,則效率會高得多。當數據集的大小巨大時,尤其如此。這樣可以最大程度地減少網絡擁塞,并提高系統的整體吞吐量。假設通常是將計算遷移到更靠近數據的位置,而不是將數據移動到應用程序正在運行的位置。HDFS為應用程序提供了接口,使它們自己更靠近數據所在的位置。
  • 高度可移植性:HDFS是使用Java語言構建的;任何支持Java的機器都可以運行NameNode或DataNode軟件。高度可移植的Java語言的使用意味著HDFS可以部署在各種各樣的機器上。
  • 運行于商業硬件上: Hadoop不需要特別貴的、reliable的(可靠的)機器,可運行于普通商用機器(可以從多家供應商采購) ,商用機器不代表低端機器。在集群中(尤其是大的集群),節點失敗率是比較高的HDFS的目標是確保集群在節點失敗的時候不會讓用戶感覺到明顯的中斷。

二、組成架構

HDFS采用主/從體系結構,整個HDFS集群由一個Namenode和多個Datanode構成master-worker(主從)模式。Namenode負責構建命名空間,管理文件的元數據等,Datanode負責實際存儲數據和處理來自系統客戶端的讀寫請求。

hdfsarchitecture

群集中單個NameNode的存在極大地簡化了系統的體系結構。NameNode是所有HDFS元數據的仲裁器和存儲庫。該系統的設計方式使用戶數據永遠不會流過NameNode。

具體來說,HDFS由四部分組成,HDFS Client、NameNode、DataNode和Secondary NameNode。

**HDFS客戶端:**就是客戶端。
1、提供一些命令來管理、訪問 HDFS,比如啟動或者關閉HDFS。
2、與 DataNode 交互,讀取或者寫入數據;讀取時,要與 NameNode 交互,獲取文件的位置信息;寫入 HDFS 的時候,Client 將文件切分成 一個一個的Block,然后進行存儲。

**NameNode:**即Master,
1、管理 HDFS 的名稱空間。
2、管理數據塊(Block)映射信息
3、配置副本策略
4、處理客戶端讀寫請求。

**DataNode:**就是Slave。NameNode 下達命令,DataNode 執行實際的操作。
1、存儲實際的數據塊。
2、執行數據塊的讀/寫操作。

**Secondary NameNode:**并非 NameNode 的熱備。當NameNode 掛掉的時候,它并不能馬上替換 NameNode 并提供服務。
1、輔助 NameNode,分擔其工作量。
2、定期合并 fsimage和fsedits,并推送給NameNode。
3、在緊急情況下,可輔助恢復 NameNode。

三、文件系統命名空間

HDFS支持傳統的分層文件組織。用戶或應用程序可以創建目錄并將文件存儲在這些目錄中。文件系統名稱空間層次結構與大多數其他現有文件系統相似。可以創建和刪除文件,將文件從一個目錄移動到另一個目錄或重命名文件。HDFS支持用戶配額和訪問權限。HDFS不支持硬鏈接或軟鏈接。但是,HDFS體系結構并不排除實現這些功能。

盡管HDFS遵循FileSystem的命名約定,但某些路徑和名稱(例如/.reserved.snapshot)被保留。功能,如透明加密和快照使用預約路徑。

NameNode維護文件系統名稱空間。對文件系統名稱空間或其屬性的任何更改均由NameNode記錄。應用程序可以指定應由HDFS維護的文件副本的數量。文件的副本數稱為該文件的復制因子。此信息由NameNode存儲。

四、數據復制

HDFS旨在在大型群集中的計算機之間可靠地存儲非常大的文件。它將每個文件存儲為一系列塊。復制文件的塊是為了容錯。塊大小和復制因子是每個文件可配置的。

文件中除最后一個塊外的所有塊都具有相同的大小,而在添加了對可變長度塊的支持后,用戶可以在不填充最后一個塊的情況下開始新的塊,而不用配置的塊大小。

應用程序可以指定文件的副本數。復制因子可以在文件創建時指定,以后可以更改。HDFS中的文件只能寫入一次(追加和截斷除外),并且在任何時候都只能具有一個寫入器。

NameNode做出有關塊復制的所有決定。它定期從群集中的每個DataNode接收心跳信號和Blockreport。收到心跳信號表示DataNode正常運行。Blockreport包含DataNode上所有塊的列表。

HDFS數據節點

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

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

相關文章

awk教程入門與實例練習(二)

在這篇 awk 簡介的續集中,Daniel Robbins 繼續探索 awk(一種很棒但有怪異名稱的語言)。Daniel 將演示如何處理多行記錄、使用循環結構,以及創建并使用 awk 數組。閱讀完本文后,您將精通許多 awk 的功能,而且…

HDFS-配置項

一、core-site.xml與core-default.xml core-default.xml與core-site.xml的功能是一樣的&#xff0c;如果在core-site.xml里沒有配置的屬性&#xff0c;則會自動會獲取core-default.xml里的相同屬性的值 <configuration><property><!-- 這個屬性用來指定namenod…

awk教程入門與實例練習(三)

在 awk 系列的這篇總結中&#xff0c;Daniel 向您介紹 awk 重要的字符串函數&#xff0c;以及演示了如何從頭開始編寫完整的支票簿結算程序。在這個過程中&#xff0c;您將學習如何編寫自己的函數&#xff0c;并使用 awk 的多維數組。學完本文之后&#xff0c;您將掌握更多 awk…

HDFS-常用命令

1. -help&#xff1a;顯示幫助信息 hadoop fs -help rmshel2. -ls&#xff1a;顯示目錄信息 hadoop fs -ls /3. -mkdir&#xff1a;在HDFS上創建目錄 hadoop fs -mkdir -p /user/ha4. -moveFromLocal&#xff1a;從本地剪切粘貼到HDFS hadoop fs -moveFromLocal ~/test.txt…

如何關閉WINDOWS2003 DEP數據保護功能

近來很多朋友和客戶都使用了WINDOWS2003來架設自己的GAME SERVER,但有很多朋友反映說,不如WINDOWS2000好,原因不是穩定,而是成功率高,和簡單.但我個人覺得WINDOWS2003還是不錯的系統,如果朋友們都不用這個系統,而用WINDOWS2000 有點不值得了.我就開始找尋這樣的問題.我對GAME 不…

JDK源碼解析之 java.lang.Thread

位于java.lang包下的Thread類是非常重要的線程類&#xff0c;它實現了Runnable接口&#xff0c;今天我們來學習一下Thread類&#xff0c;在學習Thread類之前&#xff0c;先介紹與線程相關知識&#xff1a;線程的幾種狀態、上下文切換&#xff0c;然后接著介紹Thread類中的方法的…

TASKLIST

TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH]參數列表:/S system 指定連接到的遠程系統。/U [domain/]user 指定使用哪個用戶執行這個命令。/P [password] 為指定的用戶指定密碼。/SVC 顯示每個進程中的服務…

JDK源碼解析之 java.lang.ThreadLocal

此類提供線程局部變量。這些變量與普通變量不同&#xff0c;每個訪問一個線程&#xff08;通過其get或set方法&#xff09;的線程 都有其自己的&#xff0c;獨立初始化的變量副本。 ThreadLocal實例通常是希望將狀態與線程關聯的類中的私有靜態字段&#xff08;例如&#xff0c…

華爾街頂級大師胡立陽名言

1.不要聽“親朋好友”的話&#xff0c;他們只會讓你成為“平凡人”。 2.不要只會“用功讀書”&#xff0c;重要的是“要讀對書”。  3&#xff0e;不要只是“努力工作”&#xff0c;重要的是“做對工作”。   4.不要指示結交“志趣相投”的朋友&#xff0c;否則你永遠只看到…

JDK源碼解析之 Java.lang.Enum

Enum是一個特殊的類. 我們不能以class Xxx extends Enum的方式手動繼承, 必須寫成enum Xxx的形式; 然而這段枚舉類的定義在編譯之后又變回了class Xxx extends Enum. 一、類定義 public abstract class Enum<E extends Enum<E>>implements Comparable<E>, …

Linux下的一些簡單網絡配置命令介紹

1、 ifconfig可以使用ifconfig命令來配置并查看網絡接口的配置情況。例如&#xff1a;&#xff08;1&#xff09; 配置eth0的IP地址&#xff0c; 同時激活該設備。#ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up&#xff08;2&#xff09; 配置eth0別名設備eth0:1的IP地…

JDK源碼解析之 java.lang.Throwable

在 Java 中&#xff0c;所有的異常都有一個共同的祖先 Throwable&#xff08;可拋出&#xff09;。Throwable 指定代碼中可用異常傳播機制通過 Java 應用程序傳輸的任何問題的共性。 一、類定義 public class Throwable implements Serializable {}Serializable&#xff1a;可…

JDK源碼解析之 java.lang.Error

java.lang.Error 錯誤。是所有錯誤的基類&#xff0c;用于標識嚴重的程序運行問題。這些問題通常描述一些不應被應用程序捕獲的反常情況。 一、源碼部分 //繼承了java.lang.Throwable public class Error extends Throwable {//適用于java序列化機制,過判斷類的serialVersionU…

linux命令之有關網絡的操作命令

1&#xff0e;hostname 命令&#xff08;1&#xff09;一般格式&#xff1a;hostname [選項] [主機名]&#xff08;2&#xff09;說明&#xff1a;顯示或設置系統的主機名&#xff1b;如果無任何選項和主機名&#xff0c;則用于顯示系統的主機名。&#xff08;3&#xff09…

JDK源碼解析之 java.lang.Exception

異常。是所有異常的基類&#xff0c;用于標識一般的程序運行問題。這些問題通常描述一些會被應用程序捕獲的反常情況。 一、源碼部分 //繼承了java.lang.Throwable public class Exception extends Throwable {//適用于java序列化機制,過判斷類的serialVersionUID來驗證的版本…

linux命令之有關關機和查看系統信息的命令

shutdown 正常關機 reboot 重啟計算機 ps 查看目前程序執行的情況top 查看目前程序執行的情景和內存使用情況kill 終止一個進程date 更改或查看目前時間 一&#xff0e;查看系統的進程 要管理進程&#xff0c;首先要知…

HDFS-文件讀寫過程

一、文件讀取 Client向NameNode發起RPC請求&#xff0c;來確定請求文件block所在的位置&#xff1b;NameNode會視情況返回文件的部分或者全部block列表&#xff0c;對于每個block&#xff0c;NameNode 都會返回含有該 block 副本的 DataNode 地址&#xff1b; 這些返回的 DN 地…

linux命令復習之有關磁盤空間的命令

1&#xff0e;mount 命令&#xff08;1&#xff09;一般格式&#xff1a;mount 文件系統類型 [選項] 掛接設備&#xff08;2&#xff09;說明&#xff1a;將某個文件系統掛載到某個目錄上。當這個命令執行成功后&#xff0c;直到使用 umount 將這個文件系統移除為止。&…

HDFS-常用API操作

一、Maven <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>RELEASE</version> </dependency> <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>…

linux命令之-管理文件和目錄的命令

一. 創建和刪除目錄的命令 1&#xff0e;mkdir 命令 &#xff08;1&#xff09;一般格式&#xff1a;mkdir [選項] 目錄名 &#xff08;2&#xff09;說明&#xff1a;該命令創建由目錄名命名的目錄。 &#xff08;3&#xff09;舉例1&#xff1a; 在目錄 /usr/fedora 下建…