HDFS簡介node
HDFS(Hadoop Distributed File System)是Hadoop項目的核心子系統,是分佈式計算中數據存儲管理的基礎,是基於流數據模式訪問和處理超大文件的需求而開發的,能夠運行於廉價的商用服務器上。它所具備的高容錯、高可靠性、高可擴展、高吞吐量等特性爲海量數據提供了不怕故障的存儲,爲超大數據集的應用處理帶來了不少遍歷。git
HDFS基礎概念apache
數據塊
centos
HDFS(Hadoop Distributed File System)默認的最基本的存儲單位是64M的數據塊。
和普通文件系統相同的是,HDFS中的文件是被分紅64M一塊的數據塊存儲的。
不一樣於普通文件系統的是,HDFS中若是一個文件小於一個數據塊大小,並不佔用整個數據塊的存儲空間。bash
NameNode和DataNode
HDFS體系結構中有兩類節點,一類是NameNode,又叫「元數據節點」;另外一類是DataNode,又叫「數據節點」。服務器
1) 元數據節點用來管理文件系統的命名空間分佈式
其將全部的文件和文件夾的元數據保存在一個文件系統樹中。
這些信息也會在硬盤上保存成如下文件:命名空間鏡像(namespace image)及修改日誌(edit log)
其還保存了一個文件包括哪些數據塊,分佈在哪些數據節點上。然而這些信息並不存儲在硬盤上,而是在系統啓動的時候從數據節點收集而成的。oop
2) 數據節點是文件系統中真正存儲數據的地方。大數據
客戶端(client)或者元數據信息(namenode)能夠向數據節點請求寫入或者讀出數據塊。
其週期性的向元數據節點回報其存儲的數據塊信息。centos7
3) 從元數據節點(secondary namenode)
從元數據節點並非元數據節點出現問題時候的備用節點,它和元數據節點負責不一樣的事情。
其主要功能就是週期性將元數據節點的命名空間鏡像文件和修改日誌合併,以防日誌文件過大。
合併事後的命名空間鏡像文件也在從元數據節點保存了一份,以防元數據節點失敗的時候,能夠恢復。
啓動HDFS
最初,你必須格式化配置的HDFS文件系統,打開namenode(HDFS服務器), 而後執行如下命令。
$ hadoop namenode -format
格式化HDFS後,啓動分佈式文件系統。如下命令將啓動namenode以及數據節點做爲集羣。
$ start-dfs.sh
查看Hadoop版本
[hadoop@centos7-node01 bin]$ ./hadoop version Hadoop 2.6.1 Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b4d876d837b830405ccdb6af94742f99d49f9c04 Compiled by jenkins on 2015-09-16T21:07Z Compiled with protoc 2.5.0 From source with checksum ba9a9397365e3ec2f1b3691b52627f This command was run using /home/hadoop/share/hadoop/common/hadoop-common-2.6.1.jar
列出HDFS中的文件
在服務器中加載信心後,咱們能夠使用 "ls" 找到目錄中的文件列表,文件的狀態。
hadoop fs -ls <args>
將數據插入HDFS
假設咱們在本地系統中的文件名爲 README 中的數據,該文件應該保存在HDFS文件系統中。按照如下步驟在Hadoop文件系統中插入所需的文件。
步驟1
你必須建立一個輸入目錄。
$ hadoop fs -mkdir /usr/input
步驟2
使用put命令將數據文件從本地系統傳輸到Hadoop文件系統。
$ hadoop fs -put README /usr/input/README
步驟3
你能夠使用ls命令驗證文件。
$ hadoop fs -ls /usr/input
從HDFS檢索數據
假設咱們在HDFS中有一個名爲README的文件。如下是從Hadoop文件系統中檢索所需文件的簡單演示。
步驟1
最初,使用cat命令查看HDFS中的數據。
$ hadoop fs -cat /usr/output/README
步驟2
使用get命令將文件從HDFS獲取到本地文件系統。
$ hadoop fs -get /usr/output/README ./README_LOCAL
從HDFS刪除文件
[hadoop@centos7-node01 bin]$ ./hadoop fs -ls /usr/input Found 1 items -r-------- 2 hadoop supergroup 15 2017-07-24 10:49 /usr/input/README [hadoop@centos7-node01 bin]$ ./hadoop fs -rmr /usr/input/README rmr: DEPRECATED: Please use 'rm -r' instead. 17/07/24 20:59:40 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes. Deleted /usr/input/README [hadoop@centos7-node01 bin]$ ./hadoop fs -ls /usr/input
查看HDFS的基本統計信息
[hadoop@centos7-node01 bin]$ ./hdfs dfsadmin -report Configured Capacity: 37492883456 (34.92 GB) Present Capacity: 31821979596 (29.64 GB) DFS Remaining: 31821922304 (29.64 GB) DFS Used: 57292 (55.95 KB) DFS Used%: 0.00% Under replicated blocks: 0 Blocks with corrupt replicas: 0 Missing blocks: 0 ------------------------------------------------- Live datanodes (2): Name: 192.168.114.129:50010 (centos7-node02) Hostname: centos7-node02 Decommission Status : Normal Configured Capacity: 18746441728 (17.46 GB) DFS Used: 28646 (27.97 KB) Non DFS Used: 2835136538 (2.64 GB) DFS Remaining: 15911276544 (14.82 GB) DFS Used%: 0.00% DFS Remaining%: 84.88% Configured Cache Capacity: 0 (0 B) Cache Used: 0 (0 B) Cache Remaining: 0 (0 B) Cache Used%: 100.00% Cache Remaining%: 0.00% Xceivers: 1 Last contact: Mon Jul 24 21:05:25 CST 2017 Name: 192.168.114.130:50010 (centos7-node03) Hostname: centos7-node03 Decommission Status : Normal Configured Capacity: 18746441728 (17.46 GB) DFS Used: 28646 (27.97 KB) Non DFS Used: 2835767322 (2.64 GB) DFS Remaining: 15910645760 (14.82 GB) DFS Used%: 0.00% DFS Remaining%: 84.87% Configured Cache Capacity: 0 (0 B) Cache Used: 0 (0 B) Cache Remaining: 0 (0 B) Cache Used%: 100.00% Cache Remaining%: 0.00% Xceivers: 1 Last contact: Mon Jul 24 21:05:26 CST 2017
顯示塊信息
[hadoop@centos7-node01 bin]$ ./hdfs fsck / -files -blocks Connecting to namenode via http://centos7-node01:50070 FSCK started by hadoop (auth:SIMPLE) from /192.168.114.128 for path / at Mon Jul 24 21:48:42 CST 2017 / <dir> /system <dir> /usr <dir> /usr/bin 7 bytes, 1 block(s): OK 0. BP-1474938344-192.168.114.128-1500634710798:blk_1073741825_1001 len=7 repl=2 /usr/input <dir> Status: HEALTHY Total size: 7 B Total dirs: 4 Total files: 1 Total symlinks: 0 Total blocks (validated): 1 (avg. block size 7 B) Minimally replicated blocks: 1 (100.0 %) Over-replicated blocks: 0 (0.0 %) Under-replicated blocks: 0 (0.0 %) Mis-replicated blocks: 0 (0.0 %) Default replication factor: 2 Average block replication: 2.0 Corrupt blocks: 0 Missing replicas: 0 (0.0 %) Number of data-nodes: 2 Number of racks: 1 FSCK ended at Mon Jul 24 21:48:42 CST 2017 in 1 milliseconds The filesystem under path '/' is HEALTHY
關閉HDFS
你能夠使用如下命令關閉HDFS
$ stop-dfs.sh