HDFS的Shell基本操作

来源:互联网 发布:applebeta版软件计划 编辑:程序博客网 时间:2024/05/18 00:40
  1. HDFS的概述
    HDFS是Hadoop的分布式文件系统,提供海量数据的存储。
    HDFS包括NameNode和DataNode。
    • 1.1 NameNode负责管理工作
      本身含有很多元数据信息,存储在fsimage文件中;还含有file与block的对应关系。
      在运行的时候,这些信息全部放在内存中。
      只有在运行的时候,才有的映射关系——block与datanode的映射关系,不存硬盘。
    • 1.2 DataNode负责数据存储工作
      block是hdfs进行数据存储的基本单位,默认64MB。
      并不意味着文件一定是64MB,如果文件小于64MB,那么该block占用实际大小的硬盘空间。
      假设有1个100MB和1个20MB文件,那么产生3个block,大小分别是64MB、36MB、20MB。
      replication是hdfs为了数据安全而做的数据冗余备份,默认是3份。备份的单位是按照block进行备份。
  2. Shell对HDFS进行操作
    对HDFS操作的命令格式是hadoop fs或hdfs dfs。命令格式为hadoop fs -ls hdfs://cyyun:9000/,也可以使用hadoop fs -ls //表示HDFS根目录,是hdfs://cyyun:9000/的简写。
    • 2.1 -ls <path> 表示对HDFS目录的查看
      hadoop fs -ls /显示根目录下信息
      -ls -d <path> 列出目录
      -ls –h <path>显示更易读的大小
      -ls –R <path>递归查看
    • 2.2 -mkdir <path>创建目录
      hadoop fs -mkdir /test创建一个test目录
      -mkdir -p <path>递归创建
    • 2.3 -put <src> <des>从Linux上传文件到HDFS
      hadoop fs -put /root/Documents/text1.txt /将Linux目录下的text1.txt文件上传到HDFS根目录下
      -put -p可选,保留原文件的一些特性
      -put -f可选,直接覆盖
    • 2.4 -text <path> 查看文件内容
      hadoop fs -text /text1.txt
    • 2.5 -get <src> <des>从HDFS下载文件到Linux
      hadoop fs -get /text1.txt /root
    • 2.6 -rm <path> 删除目录
      -rm -R递归删除
      hadoop fs -rm -R /test
    • 2.7 -appendToFile向文件追加数据
      hadoop fs -appendToFile /root/1.txt /input/test1.txt将Linux上的文件追加到HDFS上的文件中
      -appendToFile - -代表命令行输入以Ctrl+C结束
    • 2.8 -cp <src> <des>复制
      hadoop fs -cp /input/test1.txt /count
    • 2.9 -mv <src> <des>移动,重命名
      hadoop fs /input/test1.txt /input/test2.txt重命名
    • 2.10 -cat <path> 查看文件内容
      hadoop fs -cat /text1.txt
    • 2.11 -setrep <blockNum> <path>修改副本数
      hadoop fs -setrep 3 /input/test1.txt修改副本数为3个
      -setrep -w 表示等待操作执行完毕才退出
      -setrep -R如果是目录,那么会递归设置该目录下的所有文件的副本数
    • 2.12 -help [command]查看命令的帮助信息
      hadoop fs -help ls查看ls的一些操作信息
0 0