什么是HDFS
适合运行在通用硬件(commodity hardware)上的分布式文件系统
高度容错性,数据建议至少冗余2份
提供高吞吐量的数据访问,因此更多的考虑数据批量处理
简单的一致性模型,一个文件经过创建、写入和关闭之后就不需要改变,现在支持追加
HDFS体系结构
Block:HDFS中的所有文件按数据块进行存储,HDFS默认块大小64MB,跟普通文件系统一样,但小于64MB,并不占用整块空间
NameNode:元数据节点,负责管理文件系统的命名空间和客户端对文件的访问,无数据会写入到硬盘
DateNode:数据节点,负责存储数据和处理文件系统的读写请求
HDFS Secondary NameNode核心原理
Fsimage完整无数据文件
Editlog RedoLog
Checkpoint
HDFS配置
块大小设置:dfs.blocksize
块冗余数设置:dfs.replication
NameNode内存大小设置
ChcekPoint:dfs.namenode.checkpoint.period/dfs.namenode.checkpoint.txns
HDFS命令行操作
hdfs dfs
hdfs dfs -ls
hdfs dfs -cat
hdfs dfs -chmod
hdfs dfs -chown
hdfs dfs -copyFromLocal
hdfs dfs -copyToLocal
hdfs dfs -cp
hdfs dfs -mv
hdfs dfs -mkdir
hdfs dfs -rmr
hdfs dfs -tail
hdfs dfs -du
HDFS的权限控制
跟Linux一致的权限模型
用户来源于客户端,组来源于上级目录
HDFS回收站
fs.trash.interval
/user/{User}/.Trash/Current
使用JAVA操作HDFS
操作API:http://hadoop.apache.org/
hdfs dfs = hadoop fs 没有区别
rm -r = rmr
rm只能删除文件
rmr就能删除目录