以下是一個關於HDFS操作的技術文章大綱,主題聚焦於三種客户端操作方式:命令行操作、網頁界面操作(通過9870端口)和Java代碼操作。

1. 引言
  • 介紹Hadoop分佈式文件系統(HDFS)的基本概念和重要性。
  • 概述三種操作方式:命令行(client1)、網頁界面(client2)和Java API(client3)。
  • 説明文章目標:解析每種操作的具體步驟、優缺點,以及它們之間的互補關係。
2. 命令行操作(client1:HDFS命令行客户端)
        2.1 掌握HDFS相關進程的啓停管理命令

        一鍵啓停:
        HadoopHDFS組件內置了HDFS集羣的一鍵啓停腳本。
        原理:在執行此腳本的機器上,啓動/關閉SecondaryNameNode,讀取core-site.xml內容(fs.defaultFS項),確認NameNode所在機器,啓動/關閉NameNode,讀取workers內容,確認DataNode所在機器,啓動/關閉全部DataNode

$HADOOP_HOME/sbin/start-dfs.sh,一鍵啓動HDFS集羣
$HADOOP_HOME/sbin/stop-dfs.sh,一鍵關閉HDFS集羣

        除了一鍵啓停外,也可以單獨控制進程的啓停

$HADOOP_HOME/sbin/hadoop-daemon.sh,此腳本可以單獨控制所在機器的進程的啓停
用法:hadoop-daemon.sh(start|status|stop)(namenode|secondarynamenode|datanode)
$HADOOP_HOME/bin/hdfs,此程序也可以用以單獨控制所在機器的進程的啓停
用法:hdfs--daemon(start|status|stop)(namenode|secondarynamenode|datanode)

 

熟練掌握HDFS的Shell訪問和JavaAPI訪問_HDFS

2.2 HDFS文件系統操作命令
        HDFS作為分佈式存儲的文件系統,有其對數據的路徑表達方式。•HDFS同Linux系統一樣,均是以/作為根目錄的組織形式。
        在使用時,Linux 本地路徑與 HDFS 路徑形式雖有相似之處(如都可能呈現為/usr/local/hello.txt),但可通過協議頭區分,Linux 路徑對應file:///協議頭,HDFS 路徑對應hdfs://namenode:port/協議頭(例如hdfs://node1:8020/usr/local/hello.txt);且這些協議頭通常可省略,系統會根據參數需求自動識別是 Linux 路徑還是 HDFS 路徑,除非明確需要寫或不寫會出現 BUG,否則一般無需手動添加。

熟練掌握HDFS的Shell訪問和JavaAPI訪問_HDFS_02

關於HDFS文件系統的操作命令,Hadoop提供了2套命令體系。用法完全一致,任選其一即可。

hadoop命令(老版本用法)
用法:hadoopfs[genericoptions]
hdfs命令(新版本用法)
用法:hdfsdfs[genericoptions]
2.3創建 HDFS 目錄並驗證
創建命令
hadoop fs -mkdir -p /hdfs_demo/input
驗證命令
hadoop fs -ls /

(-p選項表示遞歸創建父目錄,即使/hdfs_demo不存在也會自動創建)

熟練掌握HDFS的Shell訪問和JavaAPI訪問_hadoop_03

2.4上傳本地文件到 HDFS
本地創建測試文件test.txt,內容為hello hdfs

echo "hello hdfs" > test.txt

上傳並驗證上傳結果

上傳
hadoop fs -put test.txt /hdfs_demo/input
驗證
hadoop fs -ls /hdfs_demo/input
2.4查看 HDFS 文件內容

讀取並查看 HDFS 中文件的完整內容。

查看
hadoop fs -cat /hdfs_demo/input/test.txt
2.5追加本地數據到 HDFS 文件

本地創建新文件append.txt,內容為append data

創建
echo "append data" > append.txt
追加
hadoop fs -appendToFile append.txt /hdfs_demo/input/test.txt
驗證
hadoop fs -cat /hdfs_demo/input/test.txt
2.6複製 HDFS 文件(含重命名)

  複製文件並修改名稱,實現文件備份或重命名。

hadoop fs -cp /hdfs_demo/input/test.txt /hdfs_demo/input/test_copy.txt

hadoop fs -ls /hdfs_demo/input

熟練掌握HDFS的Shell訪問和JavaAPI訪問_#前端_04

2.7移動 HDFS 文件(含重命名)

命令作用:移動文件到新目錄,或直接重命名文件。

2.8下載 HDFS 文件到本地

命令作用:將 HDFS 文件下載到本地文件系統,用於本地分析或備份。

創建目標目錄
mkdir -p local_demo
下載命令
hadoop fs -get /hdfs_demo/input/test.txt local_demo/
驗證
ls local_demo/

2.9刪除 HDFS 文件與目錄
命令作用:清理不再需要的 HDFS 文件和目錄,釋放存儲空間。刪除以後預期輸出中不再包含/hdfs_demo目錄

刪除文件命令
hadoop fs -rm /hdfs_demo/input/test_rename.txt
刪除目錄命令(需遞歸刪除)
hadoop fs -rm -r /hdfs_demo
驗證刪除結果:
hadoop fs -ls /
3. 網頁界面操作(client2:通過9870端口的Web UI)
3.1訪問NameNode的Web界面  

        HDFS(Hadoop 分佈式文件系統)的 Web 管理界面默認路徑取決於 Hadoop 版本和集羣配置。 對於大多數 Hadoop 2.x 及早期版本,默認路徑為:

http://<namenode-host>:50070

從 Hadoop 3.x 開始,默認端口調整為 9870,路徑變為:

http://<namenode-host>:9870

這是因為 Hadoop 社區將部分舊端口重新規劃以避免衝突。其中 <namenode-host> 是 NameNode 節點的主機名或 IP 地址。

3.2驗證默認路徑的方法
3.2.1通過 HDFS 配置文件:
直接查看 HDFS 的核心配置文件 hdfs-site.xml,找到以下屬性:
<property>
  <name>dfs.namenode.http-address</name>
  <value>namenode-host:port</value>
</property>

例如:

<value>master:50070</value>  <!-- Hadoop 2.x -->
<value>master:9870</value>  <!-- Hadoop 3.x -->
3.2.2通過命令行工具

使用 Hadoop 自帶的命令行工具獲取 NameNode 的 Web 地址:

hadoop fs -getconf -confKey dfs.namenode.http-address

輸出結果即為當前集羣的 Web UI 路徑,例如:
 

master:50070
3.2.3 也可以直接通過本機ip訪問

在終端中輸入ifconfig獲取本機ip地址,假設為192.168.142.131,則在瀏覽器中輸入

http://192.168.142.131:9870

熟練掌握HDFS的Shell訪問和JavaAPI訪問_HDFS_05

3.3 通過web來操作文件

熟練掌握HDFS的Shell訪問和JavaAPI訪問_HDFS_06

        使用 WEB 瀏覽操作 HDFS 文件系統可能會遇到權限問題,這是因為 WEB 瀏覽器以匿名用户(dr.who)登錄,僅具有隻讀權限,多數操作無法執行。若要以特權用户在瀏覽器中操作,需在 core-site.xml 中配置相關內容並重啓集羣,但不推薦此做法;HDFS WEBUI 保持只讀權限用於簡單瀏覽即可,賦予高權限會帶來嚴重安全問題,造成數據泄露或丟失。

<property>
    <name>hadoop.http.staticuser.user</name>
    <value>hadoop</value> <!-- 此處替換為你要賦予權限的特權用户名,如hadoop -->
</property>
4. IDEA圖形操作(client3:Java API客户端)
        4.1 概覽

        在大數據開發中,HDFS 命令行操作雖靈活但不夠直觀。藉助 JetBrains 系列 IDE(如 DataGrip、IDEA、PyCharm)的 Big Data Tools 插件,我們可以在 Windows 本地以圖形化方式操作 Linux 虛擬機上的 HDFS 集羣。

        4.2 準備工作(我們在之前的步驟已經啓動HDFS集羣)

        運行環境Windows 本地 運行 DataGrip,Linux 虛擬機 運行 HDFS 集羣。

        通信方式:Windows 通過網絡訪問虛擬機的 HDFS 服務端口,實現圖形化操作。

        臨時關閉虛擬機防火牆:systemctl stop firewalld

        4.3 Windows 本地環境配置

        為使 Big Data Tools 插件在 Windows 上正常工作,需配置 Hadoop 依賴環境。

        解壓 Hadoop 安裝包:將 Hadoop 安裝包(如 hadoop-3.3.4.tar.gz)解壓到 Windows 本地路徑,例如 E:\hadoop-3.3.6。解壓的時候如果提示需要管理員,請按住shift然後再右鍵會出現以管理員身份解壓的提示

熟練掌握HDFS的Shell訪問和JavaAPI訪問_#java_07

        右鍵 “此電腦”→“屬性”→“高級系統設置”→“環境變量”。新建系統變量 HADOOP_HOME,值為 E:\hadoop-3.3.6(以自己電腦實際為準)。編輯Path 變量,添加 %HADOOP_HOME%\bin

熟練掌握HDFS的Shell訪問和JavaAPI訪問_#前端_08

熟練掌握HDFS的Shell訪問和JavaAPI訪問_HDFS_09

        下載並放置依賴文件:下載 hadoop.dll 和 winutils.exe(地址:

https://github.com/steveloughran/winutils/blob/master/hadoop-3.0.0/bin/hadoop.dllhttps://github.com/steveloughran/winutils/blob/master/hadoop-3.0.0/bin/winutils.exe

如果無法訪問請自行尋找鏡像下載),並將其放入 E:\hadoop-3.3.4\bin 目錄。


熟練掌握HDFS的Shell訪問和JavaAPI訪問_#java_10

4.4 安裝並配置Big Data Tools插件

        打開IDEA,在插件欄安裝Big Data Tools,然後重啓IDEA

熟練掌握HDFS的Shell訪問和JavaAPI訪問_hadoop_11

熟練掌握HDFS的Shell訪問和JavaAPI訪問_#hdfs_12

        如果連接有問題,指定Windows上解壓的Hadoop安裝文件夾的etc/hadoop目錄也可以,會自動讀取配置文件連接上HDFS

熟練掌握HDFS的Shell訪問和JavaAPI訪問_#前端_13

如果還是連不上:(
1.確認 hadoop.dll 和 winutils.exe 版本與 Hadoop 完全匹配
2.檢查並修復環境變量配置,確保之前的系統環境變量依據自己的路徑設置正確
3.將 hadoop.dll 複製到系統目錄(關鍵!)將 D:\Software\hadoop-3.3.6\hadoop-3.3.6\bin\hadoop.dll 複製到 C:\Windows\System32 目錄,解決系統級的本地庫加載問題。

5. 操作方式之間的聯繫與比較
  • 功能互補
  • 命令行(client1)用於快速腳本執行,網頁(client2)用於監控,Java(client3)用於程序集成。
  • 示例場景:通過命令行批量上傳數據,用網頁UI驗證狀態,Java代碼實現自動化處理。
  • 優缺點比較
  • 效率:命令行最高,Java次之,網頁最低。
  • 易用性:網頁最友好,命令行和Java需技術背景。
  • 適用場景:命令行適合運維,網頁適合監控,Java代碼適合開發。
  • 整合建議:在實際項目中,結合使用——例如,用Java構建應用,用命令行調試,用網頁監控集羣。