大數據

Hadoop框架:HDFS簡介與Shell管理命令

本文源碼:GitHub·點這裡 || GitEE·點這裡

一、HDFS基本概述

1、HDFS描述

大數據領域一直面對的兩大核心模塊:數據存儲,數據計算,HDFS作為最重要的大數據存儲技術,具有高度的容錯能力,穩定而且可靠。HDFS(Hadoop-Distributed-File-System),它是一個分佈式文件系統,用於存儲文件,通過目錄樹來定位文件;設計初衷是管理數成百上千的服務器與磁盤,讓應用程序像使用普通文件系統一樣存儲大規模的文件數據,適合一次寫入,多次讀出的場景,且不支持文件的修改,適合做數據分析。

2、基礎架構

04-1.png

HDFS具有主/從體系結構,有兩個核心組件,NameNode與DataNode。

NameNode

負責文件系統的元數據(MetaData)管理,即文件路徑名、數據塊ID、存儲位置等信息,並配置副本策略,處理客戶端讀寫請求。

DataNode

執行文件數據的實際存儲和讀寫操作,每個DataNode存儲一部分文件數據塊,文件整體分佈存儲在整個HDFS服務器集群中。

Client

客戶端,文件切分上傳HDFS的時候,Client將文件切分成一個一個的Block,然後進行上傳;從NameNode獲取文件的位置信息;與DataNode通信讀取或者寫入數據; Client通過一些命令來訪問或管理HDFS。

Secondary-NameNode

不是NameNode的熱備,但是分擔NameNode工作量,比如定期合併Fsimage和Edits,並推送給NameNode;在緊急情況下,可輔助恢復NameNode。

3、高容錯性

04-2.jpg

數據塊多份複製存儲的示意,文件/users/sameerp/data/part-0,複製備份設置為2,存儲的block-ids分別為1、3;文件/users/sameerp/data/part-1,複製備份設置為3,存儲的block-ids分別為2、4、5;任何單臺服務器宕機後,每個數據塊至少還存在一個備份服務存活,不會影響對文件的訪問,提高整體容錯性。

HDFS中的文件在物理上是分塊存儲(Block),塊的大小可以通過參數dfs.blocksize來配置,塊設置太小,會增加尋址時間;塊設置的太大,從磁盤傳輸數據的時間會很慢,HDFS塊的大小設置主要取決於磁盤傳輸速率。

二、基礎Shell命令

1、基礎命令

查看Hadoop下相關Shell操作命令。

[root@hop01 hadoop2.7]# bin/hadoop fs
[root@hop01 hadoop2.7]# bin/hdfs dfs

dfs是fs的實現類

2、查看命令描述

[root@hop01 hadoop2.7]# hadoop fs -help ls

3、遞歸創建目錄

[root@hop01 hadoop2.7]# hadoop fs -mkdir -p /hopdir/myfile

4、查看目錄

[root@hop01 hadoop2.7]# hadoop fs -ls /
[root@hop01 hadoop2.7]# hadoop fs -ls /hopdir

5、剪貼文件

hadoop fs -moveFromLocal /opt/hopfile/java.txt /hopdir/myfile
## 查看文件
hadoop fs -ls /hopdir/myfile

6、查看文件內容

## 查看全部
hadoop fs -cat /hopdir/myfile/java.txt
## 查看末尾
hadoop fs -tail /hopdir/myfile/java.txt

7、追加文件內容

hadoop fs -appendToFile /opt/hopfile/c++.txt /hopdir/myfile/java.txt

8、拷貝文件

copyFromLocal命令和put命令相同

hadoop fs -copyFromLocal /opt/hopfile/c++.txt /hopdir

9、HDFS文件拷貝到本地

hadoop fs -copyToLocal /hopdir/myfile/java.txt /opt/hopfile/

10、HDFS內拷貝文件

hadoop fs -cp /hopdir/myfile/java.txt /hopdir

11、HDFS內移動文件

hadoop fs -mv /hopdir/c++.txt /hopdir/myfile

12、合併下載多個文件

基礎命令get和copyToLocal命令效果相同。

hadoop fs -getmerge /hopdir/myfile/* /opt/merge.txt

13、刪除文件

hadoop fs -rm /hopdir/myfile/java.txt

14、查看文件夾信息

hadoop fs -du -s -h /hopdir/myfile

15、刪除文件夾

bin/hdfs dfs -rm -r /hopdir/file0703

三、源代碼地址

GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent

Leave a Reply

Your email address will not be published. Required fields are marked *