HDFS
是一个分布式的文件系统
我们可以用命令来访问系统的文件 - 访问HDFS的命令 hadoop dfs -- 已过时 hadoop fs -- 使用范围更大 hdfs dfs -- 使用范围较小 hadoop fs和hdfs dfs之间没有大的区别 - 技巧 1.在命令行中输入hdfs ,回车后可以提示hdfs后可以使用哪些命令 2.hdfs dfs,回车后会提示dfs 可以添加的一些常用shell命令 - 注意事项 分布式文件系统的路径在命令行中,要从/开始写,即绝对路径
hdfs块
块的大小是固定的,块是hdfs系统中最小的存储单位 hadoop1.0块大小为64M hadoop2.0块大小为128M hadoop3.0块大小为256M hdfs文件会别切分成多个块,每个块是独立单元,每个块存放在不同的datanode,整个过程做hdfs会保证一个块存储在一个数据节点,文件大小或者文件最后一个块没达到128M不会占领整块空间
hdfs块大小
最小化寻址时间 块128M是为了最小化寻址的开销时间磁盘的寻址时间大约在5-15ms平均10ms 最小化寻址通常认为1s的百分之1最优块大小选择参考传输速度 如2010年硬盘传输速度100m/s选取块大小128M 节省内存的使用率 一个块的元数据大概150个字节,因此块越大存的数据越多,所以hdfs不适合存储小文件 不适合存储小文件: (从存储能力出发(固定内存))大量的小文件会导至集群的储存能力不足 (从内存占用出发(固定存储能力))小文件存储比大文件占用更多的内存
块的相关参数
hdfs-site.xml dfs.blocksize 默认块大小,已字节为单位,,可以使用后缀不区分大小写 k,m,g,t,p,e dfs.namenode.fs-limits.min-block-size 以字节为单位的最小块大小,由namenode在创建时强制执行事件,可以防止意外创建带有小块的文件降低性能 dfs.namenode.fs-limits.max-blocks-per-file 每个文件的最大块数,写入时namenode执行,可以防止创建低性能的超大文件
块的存储位置
hdfs-site.xml dfs.datanode.data.dir 确定dfs数据节点将块储存在本地文件系统的何处
hdfs优点
1.高容错(硬件故障是常态):数据自动保存为多个副本,副本丢失后会自动恢复 2.适合大集群:GB,TB,甚至是PB级数据,千万规模的文件数量,1000以上的节点规模 3.数据访问:一次写入,多次读取,保证数据的一致性,安全性 4.构建成本低:可以构建在廉价机器上 5.多种软硬件平台中的可移植性 6.高效性:hadoop能够在节点之间动态的移动数据,并保证各个节点的动态平衡,因此处理速度快 7.高可靠性:hadoop的储存和处理数据的能力值得人们信赖
hdfs 缺点
不适合做低延迟的数据访问: 因为是处理大型数据,高吞吐率,所以高延迟 不适合小文件存取: 小文件需要消耗大量的寻址时间,内存有限,大文件更省内存 不适合并发写入,文件随机修改: hdfs文件只能有一个写者,只能append不支持多用户对一个文件写操作,以及在任意位置修改
hdfs体系结构
hdfs是master/slaves主从结构 由四部分组成:client(客户端),Namenode(名称节点),datanode(数据节点),sec