分佈式文件系統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
建立HDFS文件
重命名HDFS文件
查看HDFS文件的最後修改時間
8.怎樣添加節點
在新節點安裝好hadoop
把namenode的有關配置文件複製到該節點
修改masters和slaves文件,增長該節點(每臺機都改,能夠寫個腳本,散發到各個機器上)
設置ssh免密碼進出該節點
單獨啓動該節點上的datanode和tasktracker(hadoop-daemon.sh start datanode/tasktracker)
運行start-balancer.sh進行數據負載均衡