大数据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命令哦!遇到问题的小伙伴,记得评论区留言哦,林君学长看到了,会给大家解答的,这个学长不太冷!
陈一月的又一天编程岁月^ _ ^

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