HDFS文件操作
一、概念
HDFS是一种文件系统,它存储着Hadoop应用将要处理的数据,专为MapReduce这类框架下的大规模分布式数据处理而设计。为解决传统问题中文件存储的问题—海量数据的存储。
二、HDFS设计目标:
1、very large files(单个文件/文件总大小)
2、streaming data access(write-once,read-many-time) ,在写入过后,文件内容无法修改,在开始时,甚至无法对文件内容添加,现在允许在文件末尾添加内容,不允许修改中间的内容。
3、commodity hardware ,运行在普通硬件上
三、HDFS架构:
在hadoop中,一个文件被划分成大小固定(64MB)的多个文件块,分布的存储在集群中的节点中,一般一个文件块会备份三份,分别存储在两个机架上。普通硬件出错/失效是一种常见的情况,为解决这种情况,同一个文件块在不同的节点中有多个副本(冗余存储),当某个节点出问题时,可以从另外的主机取到数据。
Hadoop的HDFS会自动保持文件块的数量始终一致。
四、HDFS文件系统架构的主要部分
Block:一个文件分块,默认为64MB
NameNode:保存整个文件系统的目录信息,文件信息以及文件相应的分块信息。
DataNode:用于存储Blocks(文件的读、写操作)
HDFS的HA策略:NameNode一旦宕机,整个文件系统将无法工作,若NameNode中的数据丢失,整个文件系统也就丢失了,2.X开始,HDFS支持NameNode的active-standy(主-从模式)。
五、hadoop下的文件操作命令(命令在hadoop安装路径下的bin目录下执行)
1、查看根目录下的内容(文件夹)
Hadoop fs –ls /
2、查看根目录下某文件的内容
Hadoop fs –ls /文件名
注:1、2命令前面一定要加入hadoop,若不加,直接输入ls,则查看的是当前linux系统apt/hadoop/bin目录下的内容
3、上传(put)文件到HDFS(文件系统)
Hadoop fs –put 文件名(本地的) /存放路径/文件名(HDFS上的)
4、查看HDFS中文件的内容
Hadoop fs –cat /文件路径/文件名
5、上传到HDFS中改名(上传与改名同时进行)
Hadoop fs –put 文件名 /存放路径/文件名
6、上传时保留之前的名字
Hadoop fs –put 文件名 /存放路径
7、上传目录到HDFS
Hadoop fs –put 目录名 /存放路径
8、将HDFS中的文件复制(下载)到本地系统
Hadoop fs –get /文件路径/文件名 保存的文件名 ---(下载并改名)
Hadoop fs –get /文件路径/文件名 ----(下载不改名)
9、将HDFS中的目录下载到本地
Hadoop fs –get /文件路径/目录名-----(下载不改名)
Hadoop fs –get /文件路径/目录名 更改的目录名----(下载并改名)
10、将HDFS中的目录或文件删除(rmr/rm) 目录要递归(-r)删除
Hadoop fs –rm /文件路径/文件名 -----删除文件
Hadoop fs –rmr /文件路径/目录名