大數據入門系列 5:全網最全,Hadoop 實驗——熟悉常用的 HDFS 目錄操作和文件操作

文章目錄

  • 前言
  • 一、實驗目的
  • 二、實驗平臺
  • 三、實驗內容和要求
    • 3.1、HDFS 目錄操作
      • 3.1.1、創建用戶目錄
      • 3.1.2、顯示 HDFS 中與當前用戶對應的目錄內容
      • 3.1.3、列出 HDFS 上的所有目錄
      • 3.1.4、用戶目錄下創建一個 input 目錄
      • 3.1.5、根目錄下創建 input 的目錄
      • 3.1.6、刪除子目錄
    • 3.2、HDFS 文件操作
      • 3.2.1、向 HDFS 中上傳任意文本文件
      • 3.2.2、從 HDFS 中下載指定文件
      • 3.2.3、輸出 HDFS 指定文件到終端中
      • 3.2.4、顯示 HDFS 中指定的文件信息
      • 3.2.5、輸出 HDFS 指定目錄下文件信息
      • 3.2.6、指定路徑創建和刪除文件
      • 3.2.7、指定路徑創建和刪除目錄
      • 3.2.8、向 HDFS 中指定的文件追加內容
      • 3.2.9、刪除 HDFS 中指定的文件
      • 3.2.10、刪除 HDFS 中指定的目錄
      • 3.2.11、將文件從源路徑移動到目的路徑
  • 總結


前言

本篇文章是大數據基礎系列的第五篇,完全針對 HDFS 文件系統,目的即理解 HDFS 在 Hadoop 體系結構中的角色,熟練使用 HDFS 操作常用的 Shell 命令,熟悉 HDFS 操作常用的 Java API。對大數據系列感興趣的同學可以移步本人大數據專欄查看更多內容。

在這里插入圖片描述


前文回顧:《大數據入門系列 4:全網最全,偽分布式 Hadoop 在 Ubuntu 上的安裝流程完整步驟及易錯點分析》

一、實驗目的

  • 理解 HDFS 在 Hadoop 體系結構中的角色。
  • 熟練使用 HDFS 操作常用的 Shell 命令。
  • 熟悉 HDFS 操作常用的 Java API。

二、實驗平臺

  • 操作系統:Linux。
  • Hadoop 版本:Hadoop-3.2.1。
  • JDK 版本:java-8-openjdk-amd64。
  • Java IDE:Eclipse。

三、實驗內容和要求

3.1、HDFS 目錄操作

Hadoop 系統安裝好之后,第一次使用 HDFS 時,在初始化并啟動之后,首先需要在 HDFS 中創建用戶目錄。

3.1.1、創建用戶目錄

本次實驗全部采用 bailu 用戶登錄 Linux 系統,故在 HDFS 中為 bailu 用戶創建用戶目錄,命令如下:

cd /usr/local/hadoop/hadoop-3.2.1
./bin/hdfs dfs -mkdir -p /user/bailu

具體如下圖所示:

在這里插入圖片描述
說明:該命令表示在 HDFS 中創建一個 /user/bailu 的目錄。

  • -mkdir 是創建目錄的操作。
  • -p 表示如果是多級目錄,則父目錄和子目錄一起創建。

注意:這里 /user/bailu 就是一個多級目錄,因此必須使用參數 -p,否則會出錯。

3.1.2、顯示 HDFS 中與當前用戶對應的目錄內容

/user/bailu 目錄就成為 bailu 用戶對應的用戶目錄。

我們可以使用如下命令顯示 HDFS 中與當前 bailu 對應的用戶目錄下的內容:

./bin/hdfs dfs -ls .

說明

  • -ls 表示列出 HDFS 某個目錄下的所有內容。
  • . 表示 HDFS 中當前用戶目錄,也就是 /user/bailu 目錄。

等價于:

./bin/hdfs dfs -ls /user/bailu

3.1.3、列出 HDFS 上的所有目錄

如果要列出 HDFS 上的所有目錄,可以使用如下命令:

./bin/hdfs dfs -ls

3.1.4、用戶目錄下創建一個 input 目錄

在 bailu 用戶下創建一個input目錄,命令如下:

./bin/hdfs dfs -mkdir input

具體如下圖所示:

在這里插入圖片描述
說明:我們在創建 input 目錄時,采用了相對路徑形式,實際上 input 目錄創建成功后,它在 HDFS 中的完整路徑是 /user/bailu/input。

3.1.5、根目錄下創建 input 的目錄

如果要在 HDFS 的根目錄下創建一個名為 input 的目錄,則需要以下命令:

./bin/hdfs dfs -mkdir /input

3.1.6、刪除子目錄

可以使用 rm 命令刪除剛才在 HDFS 中創建的 /input 目錄(不是 /user/bailu/input 目錄):

./bin/hdfs dfs -rm -r /input

說明:-r 參數表示如果刪除 /input 目錄及其子目錄下的所有內容,如果要刪除的目錄包含了子目錄,則必須使用 -r 參數,否則會執行失敗。

3.2、HDFS 文件操作

首先使用 gedit 編輯器,在本地 Linux 文件系統的 /home/bailu/ 目錄下創建一個文件 myLocalFile.txt,里面隨意輸入一些單詞,具體如下圖所示:

在這里插入圖片描述

3.2.1、向 HDFS 中上傳任意文本文件

向 HDFS 中上傳任意文本文件,如果指定的文件在 HDFS 中已經存在,由用戶指定是追加到原有文件末尾還是覆蓋原有的文件,命令如下:

./bin/hdfs dfs -put /home/bailu/myLocalFile.txt input

具體如下圖所示:

在這里插入圖片描述

3.2.2、從 HDFS 中下載指定文件

從 HDFS 中下載指定文件,如果本地文件與要下載的文件名稱相同,則自動對下載的文件重命名,命令如下:

./bin/hdfs dfs -get input/myLocalFile.txt /home/bailu/下載

具體如下圖所示:

在這里插入圖片描述

3.2.3、輸出 HDFS 指定文件到終端中

將 HDFS 中指定文件的內容輸出到終端中,命令如下:

./bin/hdfs dfs -cat input/myLocalFile.txt

具體如下圖所示:

在這里插入圖片描述

3.2.4、顯示 HDFS 中指定的文件信息

顯示 HDFS 中指定的文件的讀寫權限、大小、創建時間、路徑等信息,命令如下:

./bin/hdfs dfs -ls input/myLocalFile.txt

具體如下圖所示:

在這里插入圖片描述

3.2.5、輸出 HDFS 指定目錄下文件信息

給定 HDFS 中某一個目錄,輸出該目錄下的所有文件的讀寫權限、大小、創建時間、路徑等信息,如果該文件是目錄,則遞歸輸出該目錄下所有文件相關信息,命令如下:

./bin/hdfs dfs -ls input

具體如下圖所示:

在這里插入圖片描述

3.2.6、指定路徑創建和刪除文件

提供一個 HDFS 內的文件的路徑,對該文件進行創建和刪除操作。如果文件所在目錄不存在,則自動創建目錄(以操作 empty.txt 文件為例),創建文件操作命令如下:

./bin/hdfs dfs -touchz empty.txt

具體如下圖所示:

在這里插入圖片描述
刪除文件操作命令如下:

./bin/hdfs dfs -rm empty.txt

具體如下圖所示:

在這里插入圖片描述

3.2.7、指定路徑創建和刪除目錄

提供一個 HDFS 的目錄的路徑,對該目錄進行創建和刪除操作。創建目錄時,如果目錄文件所在目錄不存在則自動創建相應目錄;刪除目錄時,由用戶指定當該目錄不為空時是否還刪除該目錄(以操作 empty 文件夾為例),創建目錄操作命令如下:

./bin/hdfs dfs -mkdir empty

具體如下圖所示:

在這里插入圖片描述
刪除目錄操作命令如下:

./bin/hdfs dfs -rm -r empty

具體如下圖所示:

在這里插入圖片描述

3.2.8、向 HDFS 中指定的文件追加內容

向 HDFS 中指定的文件追加內容,由用戶指定內容追加到原有文件的開頭或結尾。

我們先在本地 /home/bailu 下創建 test.txt 文件,并添加內容如下圖所示:

在這里插入圖片描述
將 test.txt 文件上傳至 HDFS 文件系統 /user/bailu/input 目錄下,具體如下圖所示:

在這里插入圖片描述
追加 test.txt 文件至 myLocalFile.txt 文件后,命令如下:

./bin/hdfs dfs -appendToFile test.txt input/myLocalFile.txt

具體如下圖所示:

在這里插入圖片描述

3.2.9、刪除 HDFS 中指定的文件

刪除 HDFS 中指定的文件 test.txt,命令如下:

./bin/hdfs dfs -rm input/test.txt

具體如下圖所示:

在這里插入圖片描述

3.2.10、刪除 HDFS 中指定的目錄

刪除 HDFS 中指定的目錄,由用戶指定目錄中如果存在文件時是否刪除目錄(以操作 empty 目錄為例),先創建 empty 目錄,命令如下:

./bin/hdfs dfs -mkdir empty

具體如下圖所示:

在這里插入圖片描述
刪除 empty 目錄,命令如下:

./bin/hdfs dfs -rm -r empty

具體如下圖所示:

在這里插入圖片描述

3.2.11、將文件從源路徑移動到目的路徑

在 HDFS 中,將文件從源路徑移動到目的路徑(以把 input 下的 myLocalFile.txt 文件移動到 empty 文件夾為例),命令如下:

./bin/hdfs dfs -mv input/myLocalFile.txt empty

具體如下圖所示:

在這里插入圖片描述


總結

本文通過使用 HDFS 文件系統對目錄和文件兩大結構類型進行了增刪改查的基本操作,幫助初學者進一步鞏固 HDFS 的實驗操作,為之后的學習奠定基礎。初學的同學可能會覺得甚是繁瑣,命令比較多,熟能生巧即可。

在這里插入圖片描述


我是白鹿,一個不懈奮斗的程序猿。望本文能對你有所裨益,歡迎大家的一鍵三連!若有其他問題、建議或者補充可以留言在文章下方,感謝大家的支持!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530756.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530756.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530756.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java 操作符:Java 中操作符優先級、一二三元操作符及邏輯操作符的中德模佛定理

文章目錄前言一、操作符介紹與優先級表二、一元運算符與二元運算符的區別?三、Java 中唯一的三元操作符四、邏輯操作符中的德模佛定理總結前言 在 Java 中我們常見的操作符分為三種,分別是邏輯操作符、關系操作符、算術操作符,其優先級和結合…

Java 答疑:編譯器和解釋器有何區別?Java 語言屬于編譯型編程語言還是解釋型編程語言?

文章目錄前言一、Java 與 Java 字節碼二、什么是編譯器(Compiler)三、什么是解釋器(Interpreter)四、編譯器與解釋器有何區別?五、Java 語言屬于哪種語言?總結前言 我們都知道開發語言整體分為兩類&#xf…

Java 案例練習:編寫 Java 程序,輸入年份和月份,使用 switch 結構計算對應月份的天數。月份為 1、3、5、7、8、10、12 時,天數為 31 天。月份為 4、6、9、11 時,天數為

文章目錄一、練習題目二、使用 switch 語句實現代碼三、將代碼改寫回 if else 的選擇結構一、練習題目 編寫 Java 程序,輸入年份和月份,使用 switch 結構計算對應月份的天數。 月份為 1、3、5、7、8、10、12 時,天數為 31 天。 月份為 4、6、…

SRA 案例練習:解釋 CRUD 矩陣方法,并從上面 “用于化學品跟蹤管理系統的 CRUDL 矩陣示例”圖中找出被遺漏的需求,并解釋是如何找的?

文章目錄 一、練習題目二、CRUD 矩陣介紹三、矩陣分析四、尋找遺漏需求一、練習題目 解釋 CRUD 矩陣方法,并從上面 “用于化學品跟蹤管理系統的 CRUDL 矩陣示例”圖中找出被遺漏的需求,并解釋是如何找的。 二、CRUD 矩陣介紹 CRUD 矩陣是用于尋找遺漏需求比較精確的方法,其…

《軟件需求分析(第二版)》第 14 章——需求管理的原則和實踐 重點部分總結

文章目錄 前言一、討論二、簡答題三、名詞解釋總結前言 軟件需求分析就是把軟件計劃期間建立的軟件可行性分析求精和細化,分析各種可能的解法,并且分配給各個軟件元素。需求分析是軟件定義階段中的最后一步,是確定系統必須完成哪些工作,也就是對目標系統提出完整、準確、清…

《軟件需求分析(第二版)》第 15 章——變更管理 重點部分總結

文章目錄 前言一、討論二、判斷題三、簡答題總結前言 軟件需求分析就是把軟件計劃期間建立的軟件可行性分析求精和細化,分析各種可能的解法,并且分配給各個軟件元素。需求分析是軟件定義階段中的最后一步,是確定系統必須完成哪些工作,也就是對目標系統提出完整、準確、清晰…

《軟件需求分析(第二版)》第 16 章——需求鏈中的聯系鏈 重點部分總結

文章目錄 前言一、討論總結前言 軟件需求分析就是把軟件計劃期間建立的軟件可行性分析求精和細化,分析各種可能的解法,并且分配給各個軟件元素。需求分析是軟件定義階段中的最后一步,是確定系統必須完成哪些工作,也就是對目標系統提出完整、準確、清晰、具體的要求。本文是…

《軟件項目管理(第二版)》第 10 章——項目收尾 重點部分總結

文章目錄 前言一、討論二、簡答題總結前言 學習了項目的開發與發布之后,我們就可以單獨對一個項目進行開發了,但是在企業中開發中,除了編碼之外,還需要項目管理、團隊協作開發等,這就是軟件項目管理板塊要學習的內容。本文是對《軟件項目管理(第二版)》第 10 章——項目…

《軟件項目管理(第二版)》第 9 章——項目監督與控制 重點部分總結

文章目錄 前言一、討論二、選擇題三、判斷題四、簡答題總結前言 學習了項目的開發與發布之后,我們就可以單獨對一個項目進行開發了,但是在企業中開發中,除了編碼之外,還需要項目管理、團隊協作開發等,這就是軟件項目管理板塊要學習的內容。本文是對《軟件項目管理(第二版…

SSM(Spring+Spring MVC+Mybatis)整合 1:整體概述、目錄內容及實驗環境介紹

文章目錄 前言一、概述二、系列文章全目錄三、實驗環境總結前言 通過本次 Java EE 三大框架(Spring、Spring MVC、MyBatis)原理、技術和方法的整合,大量的項目實踐實際動手能力,解決總結在 SSM 項目中存在的問題,為畢業設計以及后期從事 Java 相關開發工作打下堅實的基礎。…

Tomcat 服務:解決 Apache Tomcat 更新后 Tomcat9w.exe 無法啟動 Tomcat 服務的問題

解決 Tomcat9w.exe 無法啟動 Tomcat 服務的問題/解決 Apache Tomcat 更新后 Apache Tomcat 9.0 Tomcat9 Properties 配置不匹配的問題 文章目錄解決 Tomcat9w.exe 無法啟動 Tomcat 服務的問題/解決 Apache Tomcat 更新后 Apache Tomcat 9.0 Tomcat9 Properties 配置不匹配的問題…

IDEA 新手入門:創建項目/包/類、運行/關閉/導入項目、字體/字號設置、常用快捷鍵等使用詳解

文章目錄前言一、創建新項目 Project1.1、選擇“Create New Project”1.2、選擇左下角的“Empty Project”1.3、輸入項目名稱并選擇保存路徑二、創建新模塊 Module2.1、在彈出的“New Module”窗口中,點擊“New”2.2、根據項目需要,選擇合適的 SDK2.3、對…

IDEA/Tomcat 原理:如何將 Tomcat 集成到 IDEA?實現由傳統部署延伸到熱部署 Java EE 項目?

文章目錄前言一、將 Tomcat 集成到 IDEA 中1.1、進入 IDEA Tomcat 配置頁面1.2、配置并集成 Tomcat1.3、配置完成說明1.4、集成檢查1.4.1、檢查主頁面信息及服務器配置信息二、創建并部署 Java EE 項目2.1、創建新項目或者模塊(自行選擇)2.2、進行 Java …

SSM 整合 2:Java EE 開發環境的搭建(JDK 配置、Tomcat 安裝、IDE 安裝、IDE 集成 Tomcat、Spring 及其組件的下載)

文章目錄 前言一、安裝并配置 JDK1.1、下載并安裝 JDK1.2、配置環境變量1.2.1、從控制面板進入用戶變量設置1.2.2、新建用戶變量 Java_Home 和 Path(根據自己安裝目錄設置)1.2.3、檢測 JDK 是否安裝成功二、安裝 Tomcat 應用服務器2.1、下載 apache-tomcat-9.02.2、啟動 Tomc…

Eclipse 答疑:如何使用 Eclipse 進行斷點(Breakpoints)調試?

文章目錄前言一、打開需要調試的程序二、設置斷點三、進行代碼調試3.1、在上方標簽欄,點擊“Debug As→Java Application”3.2、進入調試頁面并查看設置斷點的具體位置信息3.3、產看具體變量信息總結前言 我們在使用 Eclipse 進行代碼調試時,可以選擇在一…

在 Windows 命令提示符下啟動 MySQL:net start mysql 發生系統錯誤 5。 拒絕訪問。解決方式小結

文章目錄前言一、錯誤描述二、錯誤產生場景三、產生錯誤原因四、解決方式總結前言 我們有時候需要通過 Windows 命令提示符來啟動 MySQL 服務,但是如果你不注意操作權限的話,可能就會報以下錯誤,現在我們來解決這個問題:net start…

XHTML 語法規則及 HTML/XHTML(XHTML 1.0/XHTML 1.1 和 HTML 4.01/HTML 5) 文檔類型說明

文章目錄前言一、XHTML 語法規則二、XHTML、HTML 文檔類型說明三、XHTML 文檔類型3.1、XHTML 1.0 過渡類型(Transitional)3.2、XHTML 1.0 嚴格類型(Strict)3.3、XHTML 1.0 框架類型(Frameset)3.4、XHTML 1.…

Eclipse 答疑:代碼版權?如何更改 Eclipse 中注釋塊的 @author 版權信息?

文章目錄前言一、打開需要進行版權標注的類二、進入配置頁面三、編輯配置信息四、測試總結前言 我們在使用 IDE——Eclipse 進行開發時,在需要注明版權信息的時候,如果不更改默認設置的話,在注釋塊 author 的內容就是電腦系統默認的&#xff…

Java 修飾符詳解:吐血整理,帶你從底層語法和開發案例疏通這 11 種常見修飾符

文章目錄前言一、11 種常見的 Java 修飾符1.1、修飾符應用表1.2、修飾符訪問權限對比二、public 修飾符2.1、public 修飾符語法說明2.2、public 修飾符開發應用三、private 修飾符3.1、private 修飾符語法說明3.2、private 修飾符開發應用四、protected 修飾符4.1、protected 修…

Java 反射機制詳解:私有方法調用頭大?如何通過反射調用類中的私有方法?

文章目錄前言一、私有方法在本類中直接調用1.1、在本類中實例化,調用私有方法1.2、嘗試在其他類直接調用私有方法(錯誤示范)二、使用反射實例化類強制調用私有方法2.1、使用類加載器加載被調用的類2.2、使用 Object 類對獲取的類進行實例化2.…