大數據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)、解決方法如下所示:
- 確定我們的hadoop文件修改過文件權限
sudo chown -R hadoop ./hadoop
- 在當前終端輸入以下命令,解除節點安全模式
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命令哦!遇到問題的小夥伴,記得評論區留言哦,林君學長看到了,會給大家解答的,這個學長不太冷!
陳一月的又一天編程歲月^ _ ^