1. 程式人生 > >[hadoop]HDFS(Hadoop分散式檔案系統)(一)

[hadoop]HDFS(Hadoop分散式檔案系統)(一)

Hadoop的起源:

Hadoop是Google的集群系統的開源實現

  • Google集群系統:GFS(Google File System)、 MapReduce、BigTable
  • Hadoop主要由HDFS(Hadoop Distributed File System Hadoop分散式檔案系統)、MapReduce和HBase組成
Hadoop的初衷是為了解決Nutch的海量資料爬取和儲存的需要 Hadoop與2005年秋天作為Lucene的子專案Nutch的一部分正式引入Apache基金會 Hadoop官方網站 Hadoop 兩大核心
  • MapReduce
    -Map: 任務的分解
    -Reduce:結果的彙總
  • HDFS
    -Name
    -DataNode
    -Client
什麼是HDFS? HDFS(Hadoop Distributed File System) Hadoop分散式檔案系統,是儲存資料使用的。HDFS為了做到可靠性(reliability)建立了多份資料塊(data blocks)的複製(replicas),並將它們放置在伺服器群的計算節點中(computer nodes),MapReduce就可以在它們所在的節點上處理這些資料了。
大資料與傳統資料的區別是什麼?
並行關係資料庫與 MPP or Hadoop 區別? 並行關係資料庫
  • 多個獨立關係資料庫伺服器,訪問共享的資源儲存池
  • 優勢:
    採用多個關係資料庫伺服器,多個儲存,與原有的架構相比,擴充套件了儲存容量和計算能力
  • 劣勢:
    計算與儲存分離,資料訪問存在競爭和頻寬瓶頸
    支援的關係資料庫伺服器數量有限
    只能向上擴充套件,不能橫向擴充套件
  • 適合複雜的需要事務處理的應用
MPP or Hadoop
  • 由大量獨立的伺服器通過網路互連形成叢集,每個伺服器帶儲存
  • 優勢:
    計算與儲存融合,支援橫向擴充套件,更好的擴充套件性
  • 劣勢:
    解決資料衝突時需要節點間協作
  • 適用範圍:
    資料倉庫和離線資料分析(MPP,Hadoop/HBase)
    大規模線上實時應用(單行事務處理能力滿足的場景)(HBase)
Hadoop的子專案(紅色表示hadoop家族)
  • Core: 一套分散式檔案系統以及支援Map-Reduce的計算框架
  • Avro: 定義了一種用於支援大資料應用的資料格式,併為這種格式提供了不同的程式語言的支援
  • HDFS: Hadoop分散式檔案系統
  • Map/Reduce: 是一個使用簡易的軟體框架,基於它寫出來的應用程式能夠執行在由上千個商用機器組成的大型叢集上,並以一種可靠容錯的方式並行處理上T級別的資料集
  • Zookeeper: 是高可用的和可靠的分散式協同系統
  • Pig: 建立於Hadoop Core之上為平行計算環境提供了一套資料工作流語言和執行框架
  • Hive: 是為提供簡單的資料操作而設計的下一代分散式資料倉庫。它提供了簡單的類似SQL的語法的HiveQL語言進行資料查詢
  • HBase: 建立於Hadoop Core之上提供一個可擴充套件的資料庫系統
  • Flume: 一個分散式、可靠、和高可用的海量日誌聚合的系統,支援在系統中定製各類資料傳送方,用於收集資料
  • Mashout: 是一套具有可擴充套件能力的機器學習類庫
  • Sqoop: 是Apache下用於RDBMS和HDFS相互導資料的工具
HDFS結構 元資料:檔案大小,檔名稱等
HDFS架構 HDFS有三個節點:NameNode、SecondaryNameNode、DataNode
HDFS執行機制
  • 一個Name Node(名位元組點) 和 多個 Data Node(資料節點)
  • 資料複製(冗餘機制)
    --存放的位置(機架感知策略)
  • 故障檢測
    --資料節點
    心跳包(監測是否宕機)
    塊報告(安全模式下檢測)
    資料完整性檢測(校驗和比較)
    --名位元組點(日誌檔案,映象檔案)
  • 空間回收機制
HDFS優點
  • 高容錯性
    資料自動儲存多個副本
    副本丟失後,自動恢復
  • 適合批處理
    移動計算而非資料
    資料位置暴露給計算框架
  • 適合大資料處理
    GB、TB、甚至PB級資料
    百萬規模以上的檔案數量
    10K+節點
  • 可構建在廉價機器上
    通過多副本提高可靠性
    提供了容錯和恢復機制
HDFS缺點
  • 低延遲資料訪問
    比如毫秒級
    低延遲與高吞吐率
  • 小檔案存取
    佔用NameNode大量記憶體
    尋道時間超過讀取時間
  • 併發寫入、檔案隨機修改
    一個檔案只能有一個寫者
    僅支援append
HDFS資料儲存單元(block)
  • 檔案被切分成固定大小的資料塊
    預設資料塊大小為64M,可配置
    若檔案大小不到64M,則單獨存成一個block
  • 一個檔案儲存方式
    按大小被切分成若干個block,儲存到不同節點上
    預設情況下每個block都有三個副本
  • Block大小和副本數通過client端上傳檔案時設定,檔案上傳成功後副本數可以變更,block size不可變更
HDFS設計思想
NDFS三大節點介紹 NameNode(NN)
  • NameNode主要功能:接受客戶端的讀寫服務
  • NameNode儲存metadata資訊包括
    檔案owership(所有權)和permissions(許可權) 檔案包含哪些塊(block) block位置儲存在哪個DataNode(由DataNode啟動時上報)
  • NameNode的metadata資訊在啟動後會載入到記憶體
    meatadata儲存到磁碟檔名為“fsimage”
    block的位置資訊不會儲存到fsimage
    edits記錄對metadata的操作日誌
SecondaryNameNode(SNN)
  • 它不是NN的備份(但可以做備份),它的主要工作是幫助NN合併editslog,減少NN啟動時間
  • SNN執行合併時機
    根據配置檔案設定的時間間隔fs.checkpoint.period 預設3600秒
    根據配置檔案設定edits log大小 fs.checkpoint.size規定edits檔案的最大值預設是64M
SNN合併流程
DataNode (DN)
  • 儲存資料(Block)
  • 啟動DN執行緒的時候會向NN彙報block資訊
  • 通過向NN傳送心跳保持與其聯絡(3秒一次),如果NN 10分鐘收到DN的心跳,則認為其已經lost,並copy其上的block到其他DN
Block的副本放置策略
  • 第一個副本:放置在上傳檔案的DN;如果是叢集外提交,則隨機挑選一臺磁碟不太滿,CPU不太忙的節點。
  • 第二個副本:放置在於第一個副本不同的機架節點
  • 第三個副本:與第二個副本相同機架的節點
  • 更多副本:隨機節點

HDFS讀流程
HDFS寫流程
HDFS檔案許可權
  • 與Linux檔案許可權類似
    r:read;w:write;x:execute,許可權x對於檔案忽略,對於資料夾表示是否允許訪問其內容
  • 如果Linux系統使用者zhangsan使用hadoop命令建立一個檔案,那麼這個檔案在HDFS中owner就是zhangsan
  • HDFS的許可權目的:阻止好人做錯事,而不是阻止壞人做壞事。HDFS對owner不做密碼驗證,只要知道使用者名稱就可以。
安全模式
  • NameNode啟動的時候,首先將映像檔案(fsimage)載入記憶體,並執行編輯日誌(edits)中的各項操作
  • 一旦在記憶體中成功建立檔案系統元資料的對映,則建立一個新的fsimage檔案(這個操作不需要SecondaryNameNode)和一個空的編輯日誌。
  • 此刻NameNode執行在安全模式。即NameNode的檔案系統對於客戶端來說是隻讀的。(顯示目錄,顯示檔案內容等。寫,刪除,重新命名都會失敗)。
  • 在此階段NameNode收集各個DataNode的報告,當資料塊達到最小副本數以上時,會被認為是安全的,在一定比例(可設定)的資料塊被確定為“安全”後,再過若干時間,安全模式結束。
  • 當檢測到副本數不足的資料塊時,該塊會被複制直到達到最小副本數,系統中資料塊的位置並不是由NameNode維護的,而是以塊列表形式儲存在DataNode中。

相關推薦

使用python的hdfs包操作分散式檔案系統HDFS

===================================================================================== 寫在前邊的話:         之前做的Hadoop叢集,組合

架構設計:系統儲存29——分散式檔案系統Ceph管理

3-3. Ceph常用命令 Ceph檔案系統提供的運維命令主要是按照Ceph中的工作角色/工作職責進行劃分的,例如有一套專門對OSD節點進行管理的命令、有一套專門對PG進行管理的命令、有一套專門對MDS角色進行管理的命令……您可以使用ceph –help進行命

大資料-Hadoop-HDFS分散式檔案系統環境搭建

1:Hadoop三大核心元件 A:分散式檔案系統HDFS B:分散式資源排程器 C:分散式計算框架MapReduce 2:HDFS簡介: HDFS架構:HDFS採用Master/Slave架構 即:一個Master(NameNode)對應多個Slave(DataNode)

Hadoop分散式檔案系統HDFS架構和設計3

HDFS被設計成能夠在一個大叢集中跨機器可靠地儲存超大檔案。它將每個檔案儲存成一系列的資料塊,除了最後一個,所有的資料塊都是同樣大小的。為了容錯,檔案的所有資料塊都會有副本。每個檔案的資料塊大小和副本系數都是可配置的。應用程式可以指定某個檔案的副本數目。副本系數可以在檔案建立的時候指定,也可以在之後改變。

Hadoop分散式檔案系統HDFS:架構和設計

HDFS被設計成能夠在一個大叢集中跨機器可靠地儲存超大檔案。它將每個檔案儲存成一系列的資料塊,除了最後一個,所有的資料塊都是同樣大小的。為了容 錯,檔案的所有資料塊都會有副本。每個檔案的資料塊大小和副本系數都是可配置的。應用程式可以指定某個檔案的副本數目。副本系數可以在檔案建立的時候指 定,也可以在之後改

hadoop分散式檔案系統HDFS常用API學習

1、org.apache.hadoop.fs.FileSystem 範圍 方法 返回值 描述 addDelegationTokens(String renewer, Cre

hadoop分散式檔案系統HDFS常用操作

使用命令hadoop fs可以檢視所有的命令,基本上和linux系統命令類似 1、建立資料夾(預設使用者根目錄) hadoop fs -mkdir peom 2、檢視檔案(可以看到許可權,檔案所屬,以及組屬性) hadoop fs -ls /user/lhy 3、將

[hadoop]HDFSHadoop分散式檔案系統

Hadoop的起源: Hadoop是Google的集群系統的開源實現 Google集群系統:GFS(Google File System)、 MapReduce、BigTableHadoop主要由HDFS(Hadoop Distributed File System Ha

Hadoop 系列—— 分散式檔案系統 HDFS

一、介紹 HDFS (Hadoop Distributed File System)是 Hadoop 下的分散式檔案系統,具有高容錯、高吞吐量等特性,可以部署在低成本的硬體上。 二、HDFS 設計原理 2.1 HDFS 架構 HDFS 遵循主/從架構,由單個 NameNode(NN) 和多個 Data

Hadoop學習系列筆記Hadoop分散式檔案系統

1、HDFS的設計:當資料集大小超過一臺獨立的物理計算機儲存能力時,就要對它進行分割槽並存儲到若干臺單獨的計算機上。管理網路中跨多臺計算機儲存的檔案系統成為分散式檔案系統,該系統架構於網路之上。Hadoop有一個稱為HDFS的分散式系統。實際上Hadoop是一個綜合性的檔案系

hadoop[4]-hdfs分散式檔案系統的基本工作機制

一、Namenode 和 Datanode HDFS採用master/slave架構。一個HDFS叢集是由一個Namenode和一定數目的Datanodes組成。Namenode是一箇中心伺服器,負責管理檔案系統的名字空間(namespace)以及客戶端對檔案的訪問。叢集中的Datanode一般是一個節點一

HadoopHDFS分散式檔案系統

HDFS分散式檔案系統 HDFS基本知識 前言 目標 侷限性 HDFS相關概念 塊(Block) HDFS架構 名稱節點(NameNode) 資料

Hadoop分散式檔案系統HDFS架構

1 Master(NameNode/NN) 帶 N個Slaves(DataNode/DN) HDFS/YARN/HBase 1個檔案會被拆分成多個Block blocksize:128M 130M =

BigData_A_A_01-hdfs分散式檔案系統2高可用

楔子 Hadoop 3 高可用搭建記錄 1 zookeeper叢集 zoo.cfg 檔案配置資料檔案位置等資訊 #其他使用預設 dataDir=/opt/data/zk server.1=had2:2888:3888 server.2=had3:2888:3

BigData_A_A_01-hdfs分散式檔案系統1分散式

楔子 學習 hadoop(基於hadoop3.1.1),學習視訊可以參看大資料第二階段:hadoop體系之離線計算 1 前期準備 1.1 hosts修改 win10修改hosts許可權 虛擬機器4 臺 ,分配如下

Hadoop HDFS分散式檔案系統設計要點與架構

Hadoop簡介:一個分散式系統基礎架構,由Apache基金會開發。使用者可以在不瞭解分散式底層細節的情況下,開發分散式程式。充分利用叢集的威力高速運算和儲存。Hadoop實現了一個分散式檔案系統(Hadoop Distributed File System),簡稱HDFS。HDFS有著高容錯性的特點,並

深入理解HDFSHadoop分散式檔案系統

文字詳細介紹了HDFS中的許多概念,對於理解Hadoop分散式檔案系統很有幫助。 1. 介紹 在現代的企業環境中,單機容量往往無法儲存大量資料,需要跨機器儲存。統一管理分佈在叢集上的檔案系統稱為分散式檔案系統。而一旦在系統中,引入網路,就不可避免地引入了所有

Hadoop分散式檔案系統——HDFS詳解

這篇主要聊一下Hadoop分散式檔案系統—HDFS 大綱: 1.HDFS設計目標 2.HDFS裡面的NameNode和DataNode 3.操作HDFS的兩種方式 1.HDFS設計目標 硬體錯誤 硬體錯誤是常態而不是異常。(每每讀這句我就想到了:程式設計師加

Hadoop分散式檔案系統(HDFS)的基本命令

轉載於:https://blog.csdn.net/zhaojw_420/article/details/531616241、-help[cmd] 顯示命令的幫助資訊./hdfs dfs -help ls12、-ls(r) 顯示當前目錄下的所有檔案 -R層層循出文件夾./hd

Hadoop》,HDFS 分散式檔案系統

Hadoop-HDFS 儲存模型:位元組 -檔案線性切割成塊(Block):偏移量 offset -block分散儲存在叢集結點中 -單一檔案block大小一致,檔案與檔案可以不一致 -block可以設定副本數,副本無序分散在不同結點中 >副本數不要超過結點數量 -檔案上傳可以