![5de35a9ec65f4b56cf92412f4731cc13.png](https://i-blog.csdnimg.cn/blog_migrate/ab3e4026a8b4962bade1e2fae25e6b33.jpeg)
前言
我们安装好hadoop之后,该怎么用呢?这篇文章就是把常用的命令就行操作。需要知道的以一点就是,后面我写命令的时候会用hdfs dfs xx ,其实等同于 hadoop fs xx,选择自己喜欢的方式就好了。
另外需要读者需要了解的前提知识是,我的hadoop集群有三个节点,分别为node1,node2,node3。这三个节点在三台服务器上,我会使用ssh工具进行连接操作,在真实的环境中,服务器都是存放在某一个特定的地方的,不会直接进行操作,而是使用远程连接工具,当然了,能够看本文章的人,这些都是废话。
另外一点,本文中的命令可以在任意一个节点上尽心执行,当然了,我会使用node1节点进行执行,后面我也会演示在其他节点上进行执行,其实效果完全一样,读者完全不用纠结这个。
我使用的hadoop的版本是2.7.3
命令概览
有些人会问,你执行的这些命令,我该到哪里查看呢?是的,这是一个问题,授人以鱼不如授人以渔,我们都知道这句话。
要执行命令,首先我们得启动集群
start-all.sh
这个命令是启动集群的,但是要记得在主节点上启动,不要在从节点上启动。
这个命令在哪里呢?
在我们得hadoop源文件的
hadoop/sbin
在这个文件下面
![f00f83df67949dcfa909c186da3ec912.png](https://i-blog.csdnimg.cn/blog_migrate/50e61d4574075a6576aa0427ac4b84c7.png)
可以看到,这里包括了所有的启动命令,包括启动hdfs,yarn的所有可执行文件。
一般我们直接用start-all.sh命令就可以了,直接启动所有的进程。
为什么呢?我们直接打开文件看一下都做了什么?
![b4f4e90c04d558bbfcd6d08d126c5625.png](https://i-blog.csdnimg.cn/blog_migrate/d2299fbf11eb0a3bef9d44284cec1e52.jpeg)
从图中我们看到,我们执行start-all.sh命令的时候,执行的依旧是启动start-dfs.sh和start-yarn.sh,所以我们就直接启动这个就可以了。
当然了,如果你执行发现找不到命令,那说明你没有配置环境变量,你可以参考hadoop配置环境变量的文章,本文就不介绍了,好了,现在我们启动了集群。
为了确保我们启动了集群,我们分别查看进行,
在node1上执行jps,如果看到以下就说明node1没有问题
![ef4c3fc5edc812fe319ad1cd73fe91c2.png](https://i-blog.csdnimg.cn/blog_migrate/2ce2d9da3a337408ec8c4f90437577e6.jpeg)
接下来我们进行其他命令说明,我们在想其他的命令在哪里呢?
我们执行敲下面的命令
hdfs
![fd0371c6b3c1704ff2d6ffe007e862e8.png](https://i-blog.csdnimg.cn/blog_migrate/86618147d9b4c71fdeeeb0548b47d479.jpeg)
当我们不知道有哪些命令时候,就直接敲hdfs,会发现系统给你列出来了用法,是的,Linux上其他的软件你都可以这样子操作。
从图中我们看到有dfs命令,是的,这个是专门用来操作文件的,因为文件操作命令是最常用的,所以本文着重讲解文件操作命令
接下里,我们还不明白dfs命令是啥,我们就直接仿照上面的命令敲入
hdfs dfs
![355fc97962c4fe905c584b3479b24866.png](https://i-blog.csdnimg.cn/blog_migrate/336cd970a0676b965de80733fae2ed6f.jpeg)
会发现系统给我们列出来了所有的命令,接下来我们就看看没个命令都是啥吧。
查看文件
hdfs dfs -ls /
这是第一个命令,就是查看文件,我们知道hdfs是分布式文件存贮系统,他的主要作用就是进行文件操作,这个命令就会列出当前hdfs所存贮的文件,执行以下发现。
![9692ce229e1bfd263e09112198e75149.png](https://i-blog.csdnimg.cn/blog_migrate/b954782c469838a0152de3116c41c88c.png)
我们看到有两个文件,一个是test ,一个是tmp,当然了,如果你之前从来没有上传过,是什么都不会显示的,随着后面你上传之后,再执行这个命令就可以发现有了。
那么问题来了,我们可以查看文件下面的所有文件吗?当然可以,执行下面的命令就可以了
hdfs dfs -ls -R /test
比如上面的命令就是我们想要看到test文件下面都有哪些文件,执行结果如下
![ca5e694f10e212323562507776917179.png](https://i-blog.csdnimg.cn/blog_migrate/405a1e812536ab1df6db1acddd10dc92.png)
我们可以看到test文件下面有output文件,output文件下面还有其他的文件。
当然了,如果文件下面有很多文件,如果全部显示出来可能会很多,我们就想test目录的下级目录有啥,你可以执行下面命令
hdfs dfs -ls -h /test
![21a2daade32a363e14eaca9f0357ff8e.png](https://i-blog.csdnimg.cn/blog_migrate/4504aedacdd2cc41d20c195eab9645d6.png)
于是,就只列出来了test下面的一级目录。
所以这个命令,就是 后面加上 想要访问的目录就可以了,注意,一切的操作都是以根目录为基础,比如我们执行下面的命令就是错误的
hdfs dfs -ls test #这是错误的命令
为啥呢?因为没有了根目录,会报错找不到文件
![46f9fc30137561d6bd7d51cd02144973.png](https://i-blog.csdnimg.cn/blog_migrate/869047cd3eb229e0fb7d4b4354ba35ed.png)
一定要从 斜杠"/"开始逐级写目录。
除了命令的方式,还可以提供给大家一个web的访问方式
在浏览器输入主节点的IP加上端口号,例如我的IP是192.168.200.11
然后加上端口号50070,然后点击utilitie下面的Browse the file system 就可以了。
![6941f8ef6d1f762cfbc5cd2515807d57.png](https://i-blog.csdnimg.cn/blog_migrate/60e61b74fcf989f80cbb1c37da2bd3eb.jpeg)
![102b4608af219e51af6e8a44959d856a.png](https://i-blog.csdnimg.cn/blog_migrate/a15951bfcf5fcf0b90f79a1c7cda807f.jpeg)
从图中我们看到,和命令的方式是一样的,点击目录,还可以目录下面的文件。
创建文件
这个命令是创建文件
hdfs dfs -mkdir /abc
比如上面的命令就是,我们想要在根目录下面创建abc文件,就直接写就行了
然后我们用上面的查看文件命令查看一下
![85fa81cc736015d59dae3a3d68f04faf.png](https://i-blog.csdnimg.cn/blog_migrate/20e379fc97b667662769e5146785bf0f.jpeg)
就会发现多了一个abc文件
那如果我们想同时创建多级目录呢,加上-p参数即可
hdfs dfs -mkdir -p /abc/mm/ff
比如上面的命令,我们想在abc下面同时创建mm文件,然后在mm文件下面创建ff文件
再用查看命令查看一下
![3e8cf310e7526fac0b2cdf9c5f5472f1.png](https://i-blog.csdnimg.cn/blog_migrate/da99e3e7561b1cf6f00f81ab2e26fa9b.png)
会发现同时创建了。
上传文件
我们如果想把本地的文件上传到hdfs上改怎么操作呢
hdfs dfs -put words /abc
比如上面的命令,就是把我node1服务器上的文件words上传到hdfs的abc文件下,所以大家知道了,第一个文件目录是本地的,第二个是hdfs的目录,同样记得,hdfs的目录要从根目录开始往下写
![f39e7a3802204fef773b3593e784b1e7.png](https://i-blog.csdnimg.cn/blog_migrate/b3ae7dc15ccbf64455cf0ad57c7a66e2.png)
本地有一个words文件,然后执行上传命令
然后查看
![414f572c1388b71364a8c57568516c5e.png](https://i-blog.csdnimg.cn/blog_migrate/96e2defe6f6479867df21a84605e8d0c.png)
我们发现,我们得文件就有了。
然后上面我们介绍了查看文件,那如果我们想查看文件里面的内容,用下面的命令
hdfs dfs -cat /abc/words
上面的命令就是查看我们刚上传的words文件里面的内容
![b2afac750ee52a5e26c6cd7ed3353093.png](https://i-blog.csdnimg.cn/blog_migrate/5c8fa73b3ca4194636fdde50d91cf764.png)
可以看到打印出来了words里面的内容。
接下来我们有一个需求,如果我们想同时上传多个文件呢?
hdfs dfs -put abc1.txt abc2.txt /abc
比如上面的命令,我同时把abc1.txt 和abc2.txt上传到 /abc 下面取,我这就上传了两个文件,实际上,你想上传多少个文件,就直接就行了,hdfs会默认最后一个目录是hdfs需要上传到的目录
执行完,我们看一下
![c2337b49f3088f4b81968e4bd219cc90.png](https://i-blog.csdnimg.cn/blog_migrate/5c6832bb81d745ec270f053ba351ce5f.jpeg)
我们会发现两个文件同时被上传了.
文件下载
比如我们刚才在hdfs上面刚上传上去的words文件,我们想要把他下载到本地
hdfs dfs -get /abc/words /home/hadoop/zz
上面的命令就是把hdfs的abc目录下面的words文件下载到本地/home/hadoop/zz文件下面
那如果hdfs文件abc下面有两个文件分别为abc1.txt 和abc2.txt ,我们想同时下载两个文件,并且下载到本地的时候自动将两个文件合并
hdfs dfs -getmerge /abc/abc1.txt /abc/abc2.txt /home/hadoop/abc3.txt
我们使用的命令是-getmerge ,然后跟上需要下载的文件,这里我指定了两个文件,时间可指定多个,只要是hdfs的上的文件就好了,他会默认最后一个目录为本地目录,然后我们指定下载的abc1.txt 和abc2.txt 下载完之后自动合并为abc3.txt
文件内容会合并哦!
移动文件
移动文件
我们把abc目录下面的abc1.txt移动到/abc/mm下面
hdfs dfs -mv /abc/abc1.txt /abc/mm
![6098a07ca1d54ddbae849067be38526e.png](https://i-blog.csdnimg.cn/blog_migrate/4d04882603eaadf501524de1e070b6e6.jpeg)
这个命令也可以当场改名字命令
比如我们把刚才移动的abc1.txt改个名字叫123.txt
hdfs dfs -mv /abc/mm/abc1.txt /abc/mm/123.txt
![83253ac0264f8104c3a57c4a97d9c51f.png](https://i-blog.csdnimg.cn/blog_migrate/db69c288c9fd4000c7ab8fc03d64d0c2.png)
复制命令
比如我们把刚才的/abc/mm/123.txt给复制到/abc下面
hdfs dfs -cp /abc/mm/123.txt /abc
![5a7e4255ca6fdf39e2b46a67772f2632.png](https://i-blog.csdnimg.cn/blog_migrate/b544f92016e42c821967706fe119704f.jpeg)
删除命令
我们把刚才/abc目录下面的123.txt文件给删除掉
hdfs dfs -rm -r /abc/123.txt
![d90924b23b6bf608f7a320f6ce49c416.png](https://i-blog.csdnimg.cn/blog_migrate/522bb9acea30a8eb64f95392c8f8e35c.jpeg)
会发现文件已经被删除掉了。
友情提示:本命令慎用,不然会删除到跑路,哈哈~
总结
上面的命令就是最常使用的命令了,其他的命令,有兴趣的可以自行试一下,基本上不会用。
命令列表
hdfs dfs -tail -f # 监听文件
hdfs dfs chmod 文件权限 文件 # 修改文件的权限
以上就是常用命令的解析了,欢迎关注本专栏,共同努力。