• 1.HDFS的概述
  • 1.1NameNode负责管理工作
  • 1.2DataNode负责数据存储工作
  • 2.Shell对HDFS进行操作
  • 2.1-ls 表示对HDFS目录的查看
  • 2.2-mkdir 创建目录
  • 2.3-put 从Linux上传文件到HDFS
  • 2.4-text 查看文件内容
  • 2.5-get 从HDFS下载文件到Linux
  • 2.6-rm 删除目录
  • 2.7-appendToFile向文件追加数据
  • 2.8-cp 复制
  • 2.9-mv 移动,重命名
  • 2.10-cat 查看文件内容
  • 2.11-setrep 修改副本数
  • 2.12-help [command]查看命令的帮助信息


1.HDFS的概述

HDFS是Hadoop的分布式文件系统,提供海量数据的存储。
HDFS包括NameNode和DataNode。

1.1NameNode负责管理工作

本身含有很多元数据信息,存储在fsimage文件中;还含有file与block的对应关系。
在运行的时候,这些信息全部放在内存中。
只有在运行的时候,才有的映射关系——block与datanode的映射关系,不存硬盘。

1.2DataNode负责数据存储工作

block是hdfs进行数据存储的基本单位,默认64MB。
并不意味着文件一定是64MB,如果文件小于64MB,那么该block占用实际大小的硬盘空间。
假设有1个100MB和1个20MB文件,那么产生3个block,大小分别是64MB、36MB、20MB。
replication是hdfs为了数据安全而做的数据冗余备份,默认是3份。备份的单位是按照block进行备份。

2.Shell对HDFS进行操作

对HDFS操作的命令格式是hadoop fshdfs 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的一些操作信息