Hadoop成长之路-HDFS基本操作篇
HDFS(Hadoop Distributed File System),是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征,为超大数据集(Large Data Set)的应用处理带来了很多便利。
首先,它是一个文件系统,用于存储文件,通过统一的命名空间——目录树来定位文件。
其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色;
重要特性如下:
(1)HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M。
(2)HDFS文件系统会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。
(3)目录结构及文件分块信息(元数据)的管理由namenode节点承担
---- namenode是HDFS集群主节点,负责维护整个hdfs文件系统的目录树,以及每一个路径(文件)所对应的block块信息(block的id,及所在的datanode服务器)。
(4)文件的各个block的存储管理由datanode节点承担
---- datanode是HDFS集群从节点,每一个block都可以在多个datanode上存储多个副本(副本数量也可以通过参数设置dfs.replication)。
HDFS操作主要有两种方式 Shell和 API,下面介绍Shell基本命令。
HDFS的shell(命令行客户端)操作
HDFS提供shell命令行客户端,使用方法如下:
hadoop fs <args>
常用命令参数介绍
-help
功能:输出这个命令参数手册
-ls
功能:显示目录信息
示例:hadoop fs -ls hdfs://localhost:9000/
备注:这些参数中,所有的hdfs路径都可以简写为:
hadoop fs -ls / 等同于上一条命令的效果
-cat
功能:显示文件内容,下面示例显示根目录下的hello文件
示例:hadoop fs -cat /hello.txt
–appendToFile
功能:追加一个文件到已经存在的文件末尾
示例:hadoop fs -appendToFile /hello.txt /hello2.txt
-chgrp
-chmod
-chown
功能:这三个命令跟linux文件系统中的用法一样,对文件所属权限
示例:
hadoop fs -chmod 666 /hello.txt
hadoop fs -chown someuser:somegrp /hello.txt
-cp
功能:从hdfs的一个路径拷贝hdfs的另一个路径
示例:hadoop fs -cp /hello.txt /input
-get
功能:等同于copyToLocal,从hdfs下载文件到本地
示例:hadoop fs -get /hello.txt /home/hadoop/Downloads
-put
功能:等同于copyFromLocal,将本地文件上传到hdfs
示例:hadoop fs -put /home/hadoop/Downloads/hello.txt /hello2.txt
-rm
功能:删除文件或文件夹
示例:hadoop fs -rm -r /hello2.txt
在web端查看