hadoop 分佈式文件系統HDFS(2)

分佈式文件系統HDFSnode

1.對剛安裝好的hadoop集羣作個測試,WordCount(統計一批文本文件中個單詞出現的次數)實例使用web

首先新建一個目錄input瀏覽器

mkdir input安全

cd input負載均衡

echo "hello world" > test1.txt框架

echo "hello hadoop"> text2.txtssh

bin/hadoop dfs -put input in 把本地目錄上傳到hadoop以in命名分佈式

bin/hadoop dfs -ls ./in/* 查看列表信息oop

bin/hadoop jar hadoop-1.2.1-examples.jar wordcount in out測試

提交mapreduce做業,並把結果輸出到out目錄中

bin/hadoop dfs -ls ./out/*

2.經過web瞭解hadoop的活動

能夠經過瀏覽器訪問jobtracker所在節點50030端口監控jobtracker

namenode 50070

http://192.168.80.100:50030

3.HDFS設計基礎與目標

硬件錯誤是常態,所以須要冗餘

流式數據訪問,即數據批量讀取而非隨機讀寫,hadoop擅長作的事數據分析而不是事物處理

大規模數據集

簡單一致性模型,爲了下降系統複雜度,對文件採用一次性寫屢次讀取的邏輯設計,即文件一經寫入,就不再能修改

程序採用「數據就近」原則分配節點執行

4.HDFS體系結構

(1)HDFS: Hadoop Distributed File System 分佈式文件系統

主從結構

主節點,只有一個: namenode

從節點,有不少個: datanodes

namenode負責:

HDFS的守護程序

對內存和I/O進行集中管理

接收用戶操做請求

維護文件系統的目錄結構

管理文件與block之間關係,block與datanode之間關係

管理文件系統的命名空間

記錄每一個文件數據塊在各個DataNode上的位置和副本信息

協調客戶端對文件的訪問

使用事物日誌記錄HDFS元數據的變化,使用映像文件存儲文件系統的命名空間,包括文件映射,文件屬性

是個單點,發生故障將使集羣崩潰

datanode負責:

存儲文件

文件被分紅block存儲在磁盤上

爲保證數據安全,文件會有多個副本

一次寫入,屢次讀取(不能修改)

(2)MapReduce:並行計算框架

主從結構

主節點,只有一個: JobTracker

從節點,有不少個: TaskTrackers

JobTracker負責:

位於Master節點

用戶處理做業(用戶提交代碼)的後臺程序

接收客戶提交的計算任務

把計算任務分給TaskTrackers執行

監控TaskTracker的執行狀況

TaskTrackers負責:

位於slave節點,與datanode結合(代碼與數據一塊兒的原則)

執行JobTracker分配的計算任務

管理各自節點上的task

每一個節點只有一個tasktracker,但一個tasktracker能夠啓動多個JVM,用於執行map或reduce任務

與jobtracker交互

(3)SecondaryNameNode

監控HDFS狀態的輔助後臺程序

每一個集羣都有一個

與NameNode進行通信,按期保存HDFS元數據快照

當NameNode故障能夠做爲備用NameNode使用

5.讀取數據流程

客戶端要訪問HDFS的一個文件,首先從namenode得到組成這個文件的數據塊列表

根據列表知道存儲數據塊的datanode

訪問datanode獲取數據

NameNode並不參與數據實際傳輸

6.HDFS的可靠性

(1)冗餘副本策略

能夠在hdfs-site.xml中設置複製因子指定副本數量

全部數據塊都有副本

DataNode啓動時,遍歷本地文件系統,產生一份hdfs數據塊和本地文件的對應關係列表(blockreport)彙報給namenode

(2)機架策略

集羣通常放在不一樣機架上,機架間帶寬要比機架內要小

HDFS的「機架感知」

通常在機架存儲一個副本,在其餘機架再存放別的副本,這樣能夠防止機架失效時丟失數據,也能夠提升寬帶利用率

(3)心跳機制

NameNode週期性從datanode接收心跳信號和塊報告

namenode根據塊報告驗證元數據

沒有按時發總心跳的datanode會被標記爲宕機,不會再給他任何I/O請求

若是datanode失效形成副本數量降低,而且低於預先設置的閾值,namenode會檢測出這些數據塊,並在適合的時機進行復制

引起從新複製的緣由還包括數據副本自己損壞,磁盤錯誤,複製因子被增大等。

(4)安全模式

NameNode啓動時會先通過一個「安全模式」階段

安全模式階段不會產生數據額寫

在此階段NameNode收集各個datanode的報告,當數據塊達到最小副本數以上時,會被認爲是「安全」的

在必定比例(可設置)的數據塊被確認爲「安全」後,再過若干時間,安全模式結束

當檢測到副本數量不足的數據塊時,該塊會被複制直到達到最小副本數

(5)校驗和

在文件創立時,每一個數據塊都產生校驗和

校驗和會做爲單獨一個隱藏文件保存在命名空間下

客戶端獲取數據時能夠檢查校驗和是否相同,從而發現數據塊是否損壞

若是正在讀取的數據塊損壞,則能夠繼續讀取其餘副本

(6)回收站

(7)元數據保護

映像文件和事務日誌是namenode的核心數據,能夠配置爲擁有多個副本

副本會下降namenode的處理速度,但增長安全性

namenode依然是單點,若是發生故障要手工切換

(8)快照

支持存儲某個時間點的映像,須要時可使數據重返這個時間點的狀態

7.HDFS文件操做

(1)命令行方式

列出HDFS下的文件,(沒有當前目錄的概念,也沒有cd命令)

hadoop dfs -ls 列出HDFS下的文件

上傳文件到HDFS

hadoop dfs -put ../abc abc

將HDFS的文件複製到本地

hadoop dfs -get abc ./xyz

刪除HDFS下的文檔

hadoop dfs -rmr abc

查看HDFS下某個文件的內容

hadoop dfs -cat ./out/part-r-00000

查看HDFS基本統計信息

hadoop dfadmin -report

進入和退出安全模式

hadoop dfadmin -safemode enter

hadoopp dfadmin -safemode leave

(2)HDFS API

上傳文件到HDFS

clip_image002

建立HDFS文件

clip_image004

重命名HDFS文件

clip_image006

查看HDFS文件的最後修改時間

clip_image008

8.怎樣添加節點

在新節點安裝好hadoop

把namenode的有關配置文件複製到該節點

修改masters和slaves文件,增長該節點(每臺機都改,能夠寫個腳本,散發到各個機器上)

設置ssh免密碼進出該節點

單獨啓動該節點上的datanode和tasktracker(hadoop-daemon.sh start datanode/tasktracker)

運行start-balancer.sh進行數據負載均衡

相關文章
相關標籤/搜索