自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hadoop 學(xué)習(xí)總結(jié) :HDFS概念及其用法

開發(fā) 架構(gòu) Hadoop
Hadoop相信大家應(yīng)該有所了解,這里向大家介紹一下Hadoop 學(xué)習(xí)總結(jié)之一:HDFS方面的知識(shí),希望通過(guò)本節(jié)的介紹大家對(duì)HDFS有初步的了解。

本節(jié)向大家描述一下Hadoop 學(xué)習(xí)總結(jié)中HDFS的內(nèi)容,主要有HDFS概念和數(shù)據(jù)流兩部分內(nèi)容,歡迎大家一起來(lái)學(xué)習(xí),相信通過(guò)本節(jié)的介紹大家對(duì)HDFS方面的知識(shí)有一定的認(rèn)識(shí)。

Hadoop 學(xué)習(xí)總結(jié)之一:HDFS簡(jiǎn)介

一、HDFS的基本概念

1.1、數(shù)據(jù)塊(block)
Hadoop 學(xué)習(xí)總結(jié)中HDFS(Hadoop Distributed File System)默認(rèn)的最基本的存儲(chǔ)單位是64M的數(shù)據(jù)塊。
和普通文件系統(tǒng)相同的是,HDFS中的文件是被分成64M一塊的數(shù)據(jù)塊存儲(chǔ)的。
不同于普通文件系統(tǒng)的是,HDFS中,如果一個(gè)文件小于一個(gè)數(shù)據(jù)塊的大小,并不占用整個(gè)數(shù)據(jù)塊存儲(chǔ)空間。

1.2、元數(shù)據(jù)節(jié)點(diǎn)(Namenode)和數(shù)據(jù)節(jié)點(diǎn)(datanode)
元數(shù)據(jù)節(jié)點(diǎn)用來(lái)管理文件系統(tǒng)的命名空間
其將所有的文件和文件夾的元數(shù)據(jù)保存在一個(gè)文件系統(tǒng)樹中。
這些信息也會(huì)在硬盤上保存成以下文件:命名空間鏡像(namespace image)及修改日志(edit log)
其還保存了一個(gè)文件包括哪些數(shù)據(jù)塊,分布在哪些數(shù)據(jù)節(jié)點(diǎn)上。然而這些信息并不存儲(chǔ)在硬盤上,而是在系統(tǒng)啟動(dòng)的時(shí)候從數(shù)據(jù)節(jié)點(diǎn)收集而成的。
數(shù)據(jù)節(jié)點(diǎn)是文件系統(tǒng)中真正存儲(chǔ)數(shù)據(jù)的地方。

客戶端(client)或者元數(shù)據(jù)信息(namenode)可以向數(shù)據(jù)節(jié)點(diǎn)請(qǐng)求寫入或者讀出數(shù)據(jù)塊。
其周期性的向元數(shù)據(jù)節(jié)點(diǎn)回報(bào)其存儲(chǔ)的數(shù)據(jù)塊信息。
從元數(shù)據(jù)節(jié)點(diǎn)(secondary namenode)
從元數(shù)據(jù)節(jié)點(diǎn)并不是元數(shù)據(jù)節(jié)點(diǎn)出現(xiàn)問(wèn)題時(shí)候的備用節(jié)點(diǎn),它和元數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)不同的事情。
其主要功能就是周期性將元數(shù)據(jù)節(jié)點(diǎn)的命名空間鏡像文件和修改日志合并,以防日志文件過(guò)大。這點(diǎn)在下面會(huì)相信敘述。
合并過(guò)后的命名空間鏡像文件也在從元數(shù)據(jù)節(jié)點(diǎn)保存了一份,以防元數(shù)據(jù)節(jié)點(diǎn)失敗的時(shí)候,可以恢復(fù)。

二、數(shù)據(jù)流(data flow)

2.1、讀文件的過(guò)程

首先看一下Hadoop 學(xué)習(xí)總結(jié)中關(guān)于數(shù)據(jù)流讀取文件過(guò)程介紹??蛻舳?client)用FileSystem的open()函數(shù)打開文件
DistributedFileSystem用RPC調(diào)用元數(shù)據(jù)節(jié)點(diǎn),得到文件的數(shù)據(jù)塊信息。
對(duì)于每一個(gè)數(shù)據(jù)塊,元數(shù)據(jù)節(jié)點(diǎn)返回保存數(shù)據(jù)塊的數(shù)據(jù)節(jié)點(diǎn)的地址。
DistributedFileSystem返回FSDataInputStream給客戶端,用來(lái)讀取數(shù)據(jù)。

客戶端調(diào)用stream的read()函數(shù)開始讀取數(shù)據(jù)。
DFSInputStream連接保存此文件第一個(gè)數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點(diǎn)。
Data從數(shù)據(jù)節(jié)點(diǎn)讀到客戶端(client)
當(dāng)此數(shù)據(jù)塊讀取完畢時(shí),DFSInputStream關(guān)閉和此數(shù)據(jù)節(jié)點(diǎn)的連接,然后連接此文件下一個(gè)數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點(diǎn)。
當(dāng)客戶端讀取完畢數(shù)據(jù)的時(shí)候,調(diào)用FSDataInputStream的close函數(shù)。
在讀取數(shù)據(jù)的過(guò)程中,如果客戶端在與數(shù)據(jù)節(jié)點(diǎn)通信出現(xiàn)錯(cuò)誤,則嘗試連接包含此數(shù)據(jù)塊的下一個(gè)數(shù)據(jù)節(jié)點(diǎn)。
失敗的數(shù)據(jù)節(jié)點(diǎn)將被記錄,以后不再連接。

2.2、寫文件的過(guò)程

再來(lái)看一下Hadoop 學(xué)習(xí)總結(jié)中關(guān)于數(shù)據(jù)流寫文件的過(guò)程??蛻舳苏{(diào)用create()來(lái)創(chuàng)建文件
istributedFileSystem用RPC調(diào)用元數(shù)據(jù)節(jié)點(diǎn),在文件系統(tǒng)的命名空間中創(chuàng)建一個(gè)新的文件。
元數(shù)據(jù)節(jié)點(diǎn)首先確定文件原來(lái)不存在,并且客戶端有創(chuàng)建文件的權(quán)限,然后創(chuàng)建新文件。
DistributedFileSystem返回DFSOutputStream,客戶端用于寫數(shù)據(jù)。

客戶端開始寫入數(shù)據(jù),DFSOutputStream將數(shù)據(jù)分成塊,寫入data queue。
Data queue由Data Streamer讀取,并通知元數(shù)據(jù)節(jié)點(diǎn)分配數(shù)據(jù)節(jié)點(diǎn),用來(lái)存儲(chǔ)數(shù)據(jù)塊(每塊默認(rèn)復(fù)制3塊)。分配的數(shù)據(jù)節(jié)點(diǎn)放在一個(gè)pipeline里。
Data Streamer將數(shù)據(jù)塊寫入pipeline中的第一個(gè)數(shù)據(jù)節(jié)點(diǎn)。第一個(gè)數(shù)據(jù)節(jié)點(diǎn)將數(shù)據(jù)塊發(fā)送給第二個(gè)數(shù)據(jù)節(jié)點(diǎn)。第二個(gè)數(shù)據(jù)節(jié)點(diǎn)將數(shù)據(jù)發(fā)送給第三個(gè)數(shù)據(jù)節(jié)點(diǎn)。
DFSOutputStream為發(fā)出去的數(shù)據(jù)塊保存了ack queue,等待pipeline中的數(shù)據(jù)節(jié)點(diǎn)告知數(shù)據(jù)已經(jīng)寫入成功。

如果數(shù)據(jù)節(jié)點(diǎn)在寫入的過(guò)程中失?。?
關(guān)閉pipeline,將ack queue中的數(shù)據(jù)塊放入data queue的開始。
當(dāng)前的數(shù)據(jù)塊在已經(jīng)寫入的數(shù)據(jù)節(jié)點(diǎn)中被元數(shù)據(jù)節(jié)點(diǎn)賦予新的標(biāo)示,則錯(cuò)誤節(jié)點(diǎn)重啟后能夠察覺其數(shù)據(jù)塊是過(guò)時(shí)的,會(huì)被刪除。
失敗的數(shù)據(jù)節(jié)點(diǎn)從pipeline中移除,另外的數(shù)據(jù)塊則寫入pipeline中的另外兩個(gè)數(shù)據(jù)節(jié)點(diǎn)。
元數(shù)據(jù)節(jié)點(diǎn)則被通知此數(shù)據(jù)塊是復(fù)制塊數(shù)不足,將來(lái)會(huì)再創(chuàng)建第三份備份。
當(dāng)客戶端結(jié)束寫入數(shù)據(jù),則調(diào)用stream的close函數(shù)。此操作將所有的數(shù)據(jù)塊寫入pipeline中的數(shù)據(jù)節(jié)點(diǎn),并等待ack queue返回成功。最后通知元數(shù)據(jù)節(jié)點(diǎn)寫入完畢。本節(jié)關(guān)于Hadoop 學(xué)習(xí)總結(jié)中HDFS概念介紹完畢。
 

【編輯推薦】

  1. 實(shí)例講解Hadoop用法
  2. 技術(shù)分享 Hadoop集群搭建方法
  3. Hadoop文件系統(tǒng)如何快速安裝?
  4. Hadoop集群搭建過(guò)程中相關(guān)環(huán)境配置詳解
  5. Hadoop完全分布模式安裝實(shí)現(xiàn)詳解

 

 

責(zé)任編輯:佚名 來(lái)源: fengfly.com
相關(guān)推薦

2010-06-03 18:32:51

Hadoop

2010-08-24 09:52:55

DIV標(biāo)簽

2017-06-15 13:15:39

Python協(xié)程

2010-10-08 14:54:22

JavaScript特

2010-08-23 16:23:53

CSS+DIV

2010-09-14 09:41:56

DIV技術(shù)DIV標(biāo)簽

2009-10-22 17:15:51

linux gcc

2010-07-09 15:13:42

UML對(duì)象圖

2009-07-31 09:32:04

ASP.NET緩存概念ASP.NET緩存應(yīng)用

2010-08-27 13:46:58

DIV+CSS

2010-06-02 20:07:39

SVN管理系統(tǒng)

2022-05-18 23:42:08

網(wǎng)絡(luò)安全安全分析工具

2009-08-28 16:48:50

C#多態(tài)性

2021-03-08 08:54:12

驅(qū)動(dòng)模型DTODO

2010-07-09 15:53:36

UML類圖

2020-06-03 15:35:10

數(shù)據(jù)挖掘算法大數(shù)據(jù)

2021-12-07 08:00:00

安全零點(diǎn)擊攻擊漏洞

2010-08-30 14:27:06

CSS樣式表

2015-05-25 19:13:13

KPI開發(fā)者

2009-08-25 18:16:02

.NET Framew.NET Framew
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)