HDFS的体系结构和操作
HDFS fs 常用命令
1.对hdfs操作的命令格式是hadoop fs
1.1 -ls <path> 表示对hdfs下一级目录的查看
hadoop fs -ls hdfs://chaoren:9000/ ----对HDFS的根目录进行查看(Linux下:ls /)
path:这个可以使用more core-site.xml进行查看,发现里面配置有这个path的值为hdfs://chaoren:9000。
1.2 -lsr <path> 表示对hdfs目录的递归查看
hadoop fs -lsr hdfs://chaoren:9000/
hadoop fs -lsr /
这两个命令的作用是一样的,都是查询HDFS根目录下的
1.3 -mkdir <path> 创建目录
hadoop fs -mkdir /d1 ---创建文件夹d1
hadoop fs -ls / ---验证文件夹是否创建成功
1.4 -put <src> <des> 从linux上传文件到hdfs
hadoop fs -put ./core-site.xml hdfs://chaoren:9000/d1
1.5 -get <src> <des> 从hdfs下载文件到linux
hadoop fs -get /d1/core-site.xml .
1.6 -text <path> 查看文件内容
hadoop fs -text /d1/core-site.xml
1.7 -rm <path> 表示删除文件
hadoop fs -rm /d1/core-site.xml
1.8 -rmr <path> 表示递归删除文件
hadoop fs -rmr /d1
2.hdfs在对数据存储进行block划分时,如果文件大小超过block,那么按照block大小进行划分;不如block size的,划分为一个块,是实际数据大小。
Namenode:
1、是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。接收用户的操作请求。
2、文件包括:(源码中hdfs-site.xml的dfs.name.dir属性)
(1)fsimage:元数据镜像文件。存储某一时段namenode内存元数据信息。
(2)edits:操作日志文件。
(3)fstime:保存最近一次checkpoint的时间。
以上这些文件都是保存在Linux的文件系统中。
Datanode:
提供真实文件数据的存储服务。
文件块(block):最基本的存储单位。HDFS默认block大小是64MB。
不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间,只占用实际大小!
Replication:源码中hdfs-site.xml的dfs.replication属性。多副本,默认是三个。
SecondaryNameNode:
1、HA的一个解决方案。但不支持热配。配置即可。
2、执行过程:从namenode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到namenode,同时重置namenode的edits。
3、默认安装在namenode节点上,但这样不安全。
*****PermissionDenyException 权限不足**********
错误:dfs.permissions的默认值是true。但是自己在用时,将其改为了false。改为了false,就不会报权限不足的错误了。