美文网首页
常用的HDFS操作

常用的HDFS操作

作者: 粥粥zz | 来源:发表于2020-03-01 19:09 被阅读0次

    1.向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件;

    • 命令如下
    #创建存放该次作业目录
    hadoop fs -mkdir /zhouqi
     #创建一个文本
    touch zhouqi1.txt zhouqi2.txt
    #随便写入内容
    echo "hello world1" > zhouqi1.txt
    echo "hello world2" > zhouqi2.txt
    ##判断指定文件是否在hdfs存在
    hadoop fs -test -e /zhouqi/zhouqi1.txt  #-e 判断路径是否存在,如果路径存在,则返回0。
    echo $? #shell中的特殊变量,用来查看上一个命令执行后的退出状态,0表示成功
    #上传到HDFS
    hadoop fs -put zhouqi1.txt  /zhouqi
    #查看上传后的文件内容
    hadoop fs -text /zhouqi/zhouqi1.txt   #cat也可以
    #追加到原有文件末尾
    hadoop fs -appendToFile  zhouqi2.txt  /zhouqi/zhouqi1.txt
    #查看追加后的文件内容
    hadoop fs -text /zhouqi/zhouqi1.txt
    #覆盖原有的文件
    hadoop fs -put -f zhouqi2.txt /zhouqi/zhouqi1.txt
    #查看覆盖后的文件内容
    hadoop fs -text /zhouqi/zhouqi1.txt
    
    • 结果如下


      image.png image.png

    2.从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名;

    • 命令如下
    vim 2.sh
    #写入以下内容
    #!/bin/bash
    if [ -f ~/zhouqi1.txt ]
    then 
    hadoop fs -get /zhouqi/zhouqi1.txt ./zhouqi3.txt
    else
    hadoop fs -get /zhouqi/zhouqi1.txt ./zhouqi1.txt
    #给脚本加执行权限
    chmod +x 2.sh
    #执行脚本
    sh 2.h
    
    • 结果如下


      image.png

    3.将HDFS中指定文件的内容输出到终端中;

    • 命令如下
    hadoop fs -text /zhouqi/zhouqi1.txt
    #或者
    hadoop fs -cat /zhouqi/zhouqi1.txt
    
    • 结果如下


      image.png

    4.显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息;

    • 命令如下
    hadoop fs -ls /zhouqi/zhouqi1.txt
    hadoop fs -ls  -h /zhouqi/zhouqi1.txt  # -h 以人类可读的格式设置文件大小 (kb,Mb等)
    hadoop fs -ls  -t /zhouqi/zhouqi1.txt  # -t 按修改时间对输出进行排序(最新的优先)
    hadoop fs -ls  -S/zhouqi/zhouqi1.txt   #按文件大小排序输出。
    
    • 结果如下


      image.png

    5.给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息;

    • 命令如下
    hadoop fs -mkdir -p /zhouqi/1/2/3/4 #-p 递归创建
    hadoop fs -ls -R /zhouqi
    
    • 结果如下


      image.png

    6.提供一个HDFS内的文件的路径,对该文件进行创建和删除操作。如果文件所在目录不存在,则自动创建目录;

    • 命令如下
    vim 6.sh
    #写入以下内容
    #!/bin/bash
    hadoop fs -test -d /zhouqi/6
    if  [ "$?" == "0" ]
    then 
    hadoop fs -touchz /zhouqi/6/6.txt
    else
    hadoop fs -mkdir -p  /zhouqi/6/6.txt
    fi
    #给脚本加执行权限
    chmod +x 6.sh
    #执行脚本
    sh 6.sh
    #查看运行结果
    hadoop fs -ls -R /zhouqi
    #删除文件
    hadoop fs -rm /zhouqi/6/6.txt
    #查看运行结果
    hadoop fs -ls -R /zhouqi
    
    • 结果如下


      image.png

    7.提供一个HDFS的目录的路径,对该目录进行创建和删除操作。创建目录时,如果目录文件所在目录不存在则自动创建相应目录;删除目录时,由用户指定当该目录不为空时是否还删除该目录;

    • 命令如下
    vim 7.sh
    #写入以下内容
    #!/bin/bash
    hadoop fs -test -d /zhouqi/7
    if  [ "$?" != "0" ]
    then 
    hadoop fs -mkdir   /zhouqi/7
    fi
    #给脚本加执行权限
    chmod +x 7.sh
    #执行脚本
    sh 7.sh
    #查看运行结果
    hadoop fs -ls -R /zhouqi
    #删除目录
    hadoop fs -rmdir /zhouqi/7 
    #如果上一个指令执行不成功,显示目录下有文件
    hadoop fs rm -r /zhouqi/7
    #查看运行结果
    hadoop fs -ls -R /zhouqi
    
    • 结果如下


      image.png

    8.向HDFS中指定的文件追加内容,由用户指定内容追加到原有文件的开头或结尾;

    • 命令如下
    #指定内容追加到原有文件的开头
    hadoop fs -get -f /zhouqi/zhouqi1.txt ./
    cat zhouqi1.txt >> zhouqi2.txt
    hadoop fs -put -f zhouqi2.txt /zhouqi/zhouqi1.txt
    hadoop fs -cat /zhouqi/zhouqi1.txt
    #指定内容追加到原有文件的尾头
    hadoop fs -appendToFile  zhouqi2.txt  /zhouqi/zhouqi1.txt
    hadoop fs -cat /zhouqi/zhouqi1.txt
    
    image.png image.png

    9.删除HDFS中指定的文件;

    • 命令如下
    hadoop fs -ls -R /zhouqi
    hadoop fs -rm /zhouqi/zhouqi1.txt
    hadoop fs -ls -R /zhouqi
    
    • 结果如下


      image.png

    10.删除HDFS中指定的目录,由用户指定目录中如果存在文件时是否删除目录;

    • 命令如下
    hadoop fs -ls -R /zhouqi
    hadoop fs -rmdir /zhouqi/7
    hadoop fs -ls -R /zhouqi
    #如果删除不成功,表示目录下有文件
    hadoop fs -rm -r /zhouqi/7
    
    • 结果如下


      image.png

    相关文章

      网友评论

          本文标题:常用的HDFS操作

          本文链接:https://www.haomeiwen.com/subject/tnzbchtx.html