zoukankan      html  css  js  c++  java
  • hdfs的shell操作

    查看文件

    hdfs dfs -ls /

    这是第一个命令,就是查看文件,我们知道hdfs是分布式文件存贮系统,他的主要作用就是进行文件操作,这个命令就会列出当前hdfs所存贮的文件,执行以下发现。

    我们看到有两个文件,一个是test ,一个是tmp,当然了,如果你之前从来没有上传过,是什么都不会显示的,随着后面你上传之后,再执行这个命令就可以发现有了。

    那么问题来了,我们可以查看文件下面的所有文件吗?当然可以,执行下面的命令就可以了

    hdfs dfs -ls -R /test

    比如上面的命令就是我们想要看到test文件下面都有哪些文件,执行结果如下

    我们可以看到test文件下面有output文件,output文件下面还有其他的文件。

    当然了,如果文件下面有很多文件,如果全部显示出来可能会很多,我们就想test目录的下级目录有啥,你可以执行下面命令

     hdfs dfs -ls -h /test

    于是,就只列出来了test下面的一级目录。

    所以这个命令,就是 后面加上 想要访问的目录就可以了,注意,一切的操作都是以根目录为基础,比如我们执行下面的命令就是错误的

    hdfs dfs -ls test #这是错误的命令

    为啥呢?因为没有了根目录,会报错找不到文件

    一定要从 斜杠"/"开始逐级写目录。

    除了命令的方式,还可以提供给大家一个web的访问方式

    在浏览器输入主节点的IP加上端口号,例如我的IP是192.168.200.11

    然后加上端口号50070,然后点击utilitie下面的Browse the file system 就可以了。

     

     

    从图中我们看到,和命令的方式是一样的,点击目录,还可以目录下面的文件。

    创建文件

    这个命令是创建文件

    hdfs dfs -mkdir /abc

    比如上面的命令就是,我们想要在根目录下面创建abc文件,就直接写就行了

    然后我们用上面的查看文件命令查看一下

    就会发现多了一个abc文件

    那如果我们想同时创建多级目录呢,加上-p参数即可

    hdfs dfs -mkdir -p /abc/mm/ff

    比如上面的命令,我们想在abc下面同时创建mm文件,然后在mm文件下面创建ff文件

    再用查看命令查看一下

    会发现同时创建了。

    上传文件

    我们如果想把本地的文件上传到hdfs上改怎么操作呢

    hdfs dfs -put words /abc

    比如上面的命令,就是把我node1服务器上的文件words上传到hdfs的abc文件下,所以大家知道了,第一个文件目录是本地的,第二个是hdfs的目录,同样记得,hdfs的目录要从根目录开始往下写

    本地有一个words文件,然后执行上传命令

    然后查看

     

    我们发现,我们得文件就有了。

    然后上面我们介绍了查看文件,那如果我们想查看文件里面的内容,用下面的命令

    hdfs dfs -cat /abc/words

    上面的命令就是查看我们刚上传的words文件里面的内容

    可以看到打印出来了words里面的内容。

    接下来我们有一个需求,如果我们想同时上传多个文件呢?

    hdfs dfs -put abc1.txt abc2.txt /abc

    比如上面的命令,我同时把abc1.txt 和abc2.txt上传到 /abc 下面取,我这就上传了两个文件,实际上,你想上传多少个文件,就直接就行了,hdfs会默认最后一个目录是hdfs需要上传到的目录

    执行完,我们看一下

    我们会发现两个文件同时被上传了.

    文件下载

    比如我们刚才在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

    这个命令也可以当场改名字命令

    比如我们把刚才移动的abc1.txt改个名字叫123.txt

    hdfs dfs -mv /abc/mm/abc1.txt /abc/mm/123.txt

    复制命令

    比如我们把刚才的/abc/mm/123.txt给复制到/abc下面

    hdfs dfs -cp /abc/mm/123.txt /abc

    删除命令

    我们把刚才/abc目录下面的123.txt文件给删除掉

    hdfs dfs -rm -r /abc/123.txt

    会发现文件已经被删除掉了。

    友情提示:本命令慎用,不然会删除到跑路,哈哈~

    总结

    上面的命令就是最常使用的命令了,其他的命令,有兴趣的可以自行试一下,基本上不会用。

    命令列表

    hdfs dfs -tail -f # 监听文件
    
    hdfs dfs chmod 文件权限 文件 # 修改文件的权限 
    
  • 相关阅读:
    【BZOJ】4011: [HNOI2015]落忆枫音
    【BZOJ】1187: [HNOI2007]神奇游乐园
    【CERC2007】机器排序
    【NOI2004】郁闷的出纳员
    【USACO】奶牛跑步2
    【HNOI2004】宠物收养所
    【NOI2009】植物大战僵尸
    Xn数列
    骨牌覆盖
    【JSOI2008】球形空间产生器
  • 原文地址:https://www.cnblogs.com/weifeng1463/p/13942248.html
Copyright © 2011-2022 走看看