大數據hadoop學習-----利用Shell命令與HDFS進行交互


Hadoop支持很多Shell命令,其中fs是HDFS最常用的命令,利用fs可以查看HDFS文件系統的目錄結構、上傳和下載數據、創建文件等。
本次博客,林君學長主要帶大家瞭解Hadoop是如何用基礎的命令操作與HDFS文件系統進行交互的,主要內容如下:

  • 瞭解基礎的shell命令
  • HDFS基本目錄操作
  • HDFS文件操作

接下來,就讓我們進入hadoop 基礎shell命令的學習時間吧!

一、查看hadoop的基礎shell命令

1、切換到hadoop賬戶,並進入hadoop環境

這一步是小夥伴們需要操作的哦,因爲大部分小夥伴進行hadoop學習的時候,是新建的一個hadoop用戶,而學長並沒有新建一個,而是在自己的ubuntu賬戶上面集成的Hadoop環境,因此,以下的所有操作,是在自己的用戶上面進行的,但小夥伴們記得切換到自己的hadoop用戶下面哦!
1)、切換爲hadoop用戶

su - hadoop

2)、進入hadoop環境

cd /usr/local/hadoop

2、啓動hadoop的各個節點

1)、啓動hadoop

./sbin/start-dfs.sh

2)、通過jps查看是否成功啓動

jps

3)、啓動成功如下所示:
在這裏插入圖片描述
啓動成功包括出現NameNode、SecondDaryNameNode、以及DataNode

3、查看fs支持的命令

1)、查看hadoop fs支持的所有命令

./bin/hdfs dfs

在這裏插入圖片描述
2)、查看hadoop下put的使用方法

./bin/hadoop fs -help put

二、Hadoop的目錄操作

需要注意的是,Hadoop系統安裝好以後,第一次使用HDFS時,需要首先在HDFS中創建用戶目錄。

1、創建一個用戶目錄

1)、在當前環境下的 /user路徑中創建一個hadoop文件夾

./bin/hdfs dfs -mkdir -p /user/hadoop

在這裏插入圖片描述
2)、用shell查詢命令查看我們在路徑user下面創建的文件夾

./bin/hdfs dfs -ls /user

在這裏插入圖片描述

2、創建一個二級目錄

1)、在hadoop目錄下載在創建一個input文件夾

./bin/hdfs dfs -mkdir /user/hadoop/input

在這裏插入圖片描述
2)、查看創建的input文件夾

./bin/hdfs dfs -ls /user/hadoop/input

在這裏插入圖片描述

3、在根目錄下創建目錄

1)、在根目錄下創建一個input文件夾

./bin/hdfs dfs -mkdir /input

在這裏插入圖片描述
2)、查看根目錄下面創建的文件夾

./bin/hdfs dfs -ls /

在這裏插入圖片描述

4、刪除目錄

1)、刪除剛剛在根目錄下面創建的input文件夾

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

在這裏插入圖片描述
其中 -r參數是刪除該文件夾中的所有內容,沒有這個參數只能刪除空的文件夾,如何裏面有文件,是不能夠刪除的!
2)、查看input文件夾是否刪除

./bin/hdfs dfs -ls /

在這裏插入圖片描述
可以看到,根目錄下的input文件夾已經被我們成功刪除,現在只有一個user目錄了!

三、Hadoop的文件操作

1、在當前環境下創建一個文件

1)、在當前環境目錄下創建my.txt文件

touch my.txt

2)、打開my.txt文件,並寫入如下內容

gedit my.txt

寫入如下內容:

Hadoop
Spark
XMU DBLAD

點擊保存後關閉
在這裏插入圖片描述

2、將該文件上傳到【user/hadoop/input】的目錄裏面

1)、將my.txt文件上傳到[user/hadoop/input]的目錄之下:

./bin/hdfs dfs -put ./my.txt  /user/hadoop/input

在這裏插入圖片描述
2)、在[user/hadoop/input]目錄下查看我們上傳的my.txt文件

./bin/hdfs dfs -ls /user/hadoop/input

在這裏插入圖片描述
可以看到,該文件以及在目的目錄下面存在了,上傳成功!
3)、查看my.txt文件內容:

./bin/hdfs dfs  -cat /user/hadoop/input/my.txt

在這裏插入圖片描述
可以看出,和我們寫入的文件內容相同,並沒有出現文件的損壞

3、將HDFS中的文件下載到本地文件系統中

1)、將HDFS中的my.txt文件下載到本地文件系統中的【/home/chenlin/下載/】這個目錄下:

./bin/hdfs dfs -get /user/hadoop/input/my.txt /home/chenlin/下載

在這裏插入圖片描述
2)、去本次系統中的該路徑下查看是否有這個文件:
在這裏插入圖片描述
可以看到,文件已經到我們的本地文件系統了
3)、在該頁面打開終端,用命令行查看文件內容

cat my.txt

在這裏插入圖片描述
文件內容與我們最初所寫的內容一樣,沒有出現下載過程中的文件損壞,比較完美!

4、將HDFS中文件拷貝到HDFS中的另一個目錄中去

1)、將目錄【/user/hadoop/input/】下的my.txt文件拷貝到根目錄下的【/input目錄下面】

./bin/hdfs dfs -cp /user/hadoop/input/my.txt /input

這裏就不截圖了,但該命令絕對可以,因爲剛剛根目錄下的input刪除了,學長不想再去創建了,大家可以試一下哦!

四、過程中可能遇到的問題

1、過程中出現節點處於安全模式的問題

1)、在創建文件中的問題,描述如下圖:

mkdir: Cannot create directory /aa. Name node is in safe mode.
在這裏插入圖片描述

2)、解決方法如下所示:

  1. 確定我們的hadoop文件修改過文件權限
    sudo chown -R hadoop ./hadoop
  2. 在當前終端輸入以下命令,解除節點安全模式
    hadoop dfsadmin -safemode leave

2、在創建文件過程中出現如下警告

1)、問題描述:

WARN util.NativeCodeLoader: Unable to load native-hadoop library for
your platform… using builtin-java classes where applicable

2)、解決辦法
注意:以下的解決辦法,需要到hadoop用戶下面去哦,也就是我們得進入hadopp用戶的圖像系統,在右上角的設置裏面,點擊hadoop切換圖像界面,然後進行如下操作哦!
1.打開 .bashrc文件

gedit ~/.bashrc

2.在hadoop的路徑下面添加如下代碼後保存關閉!

export  HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

3.使導入的路徑生效

source ~/.bashrc

以上就是本次博客的全部內容啦,希望通過對本次博客的閱讀,可以讓大家更多的瞭解hadoop的基礎的shell命令哦!遇到問題的小夥伴,記得評論區留言哦,林君學長看到了,會給大家解答的,這個學長不太冷!
陳一月的又一天編程歲月^ _ ^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章