1. 程式人生 > >Hadoop框架:HDFS簡介與Shell管理命令

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

本文原始碼:[GitHub·點這裡](https://github.com/cicadasmile/big-data-parent) || [GitEE·點這裡](https://gitee.com/cicadasmile/big-data-parent) # 一、HDFS基本概述 ## 1、HDFS描述 大資料領域一直面對的兩大核心模組:資料儲存,資料計算,HDFS作為最重要的大資料儲存技術,具有高度的容錯能力,穩定而且可靠。HDFS(Hadoop-Distributed-File-System),它是一個分散式檔案系統,用於儲存檔案,通過目錄樹來定位檔案;設計初衷是管理數成百上千的伺服器與磁碟,讓應用程式像使用普通檔案系統一樣儲存大規模的檔案資料,適合一次寫入,多次讀出的場景,且不支援檔案的修改,適合做資料分析。 ## 2、基礎架構 ![](https://img2020.cnblogs.com/blog/1691717/202009/1691717-20200929153301328-1756507058.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、高容錯性 ![](https://img2020.cnblogs.com/blog/1691717/202009/1691717-20200929153316636-1682187085.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 ``` **推薦閱讀:程式設計體系整理** |序號|專案名稱|GitHub地址|GitEE地址|推薦指數| |:---|:---|:---|:---|:---| |01|Java描述設計模式,演算法,資料結構|[GitHub·點這裡](https://github.com/cicadasmile/model-arithmetic-parent)|[GitEE·點這裡](https://gitee.com/cicadasmile/model-arithmetic-parent)|☆☆☆☆☆| |02|Java基礎、併發、面向物件、Web開發|[GitHub·點這裡](https://github.com/cicadasmile/java-base-parent)|[GitEE·點這裡](https://gitee.com/cicadasmile/java-base-parent)|☆☆☆☆| |03|SpringCloud微服務基礎元件案例詳解|[GitHub·點這裡](https://github.com/cicadasmile/spring-cloud-base)|[GitEE·點這裡](https://gitee.com/cicadasmile/spring-cloud-base)|☆☆☆| |04|SpringCloud微服務架構實戰綜合案例|[GitHub·點這裡](https://github.com/cicadasmile/husky-spring-cloud)|[GitEE·點這裡](https://gitee.com/cicadasmile/husky-spring-cloud)|☆☆☆☆☆| |05|SpringBoot框架基礎應用入門到進階|[GitHub·點這裡](https://github.com/cicadasmile/spring-boot-base)|[GitEE·點這裡](https://gitee.com/cicadasmile/spring-boot-base)|☆☆☆☆| |06|SpringBoot框架整合開發常用中介軟體|[GitHub·點這裡](https://github.com/cicadasmile/middle-ware-parent)|[GitEE·點這裡](https://gitee.com/cicadasmile/middle-ware-parent)|☆☆☆☆☆| |07|資料管理、分散式、架構設計基礎案例|[GitHub·點這裡](https://github.com/cicadasmile/data-manage-parent)|[GitEE·點這裡](https://gitee.com/cicadasmile/data-manage-parent)|☆☆☆☆☆| |08|大資料系列、儲存、元件、計算等框架|[GitHub·點這裡](https://github.com/cicadasmile/big-data-parent)|[GitEE·點這裡](https://gitee.com/cicadasmile/big-data-parent)|☆☆☆