Hdfs体系结果及shell java操作方式
hdfs设计基础
硬件错误需要冗余
流式数据访问(数据分析)
大规模数据集
简单一致性模型,文件一次写入就不能修改
程序采用”数据就近”原则分配节点执行
主节点:只有一个nameNode
记录文件是如何分割成数据块,以及数据块存储在哪些节点上
对内存和i/o进行管理
接收用户操作请求
维护文件系统的目录结构
管理文件与block之间的关系,block与dataNode之间的关系
-------------------------------------------------------------------------
管理文件命名空间
记录每个文件数据块在各个Datanode上的位置和副本信息
协调客户端对文件的访问
记录空间内的改动和空间本身属性的改动
Namenode使用事务日志记录hdfs元数据的变化,使用映像文件存储文件系统的命名空间,文件映射,文件属性
读取数据流程:
从namenode取得文件数据块位置列表
据据列表找到datanode
从datanode取得数据
Hdfs 可靠性
冗余副本策略
可以在hdfs-site.xml中指定副本数量
Datenode启动时,遍历本地文件系统,产生一份hdfs数据块和本地文件对应列表
机架策略
副本存放在不同的机架
心跳机制
Namenode周期性的从datanode接收心跳信号和块报告
Namenode根据块报告验证元数据
当datanode没有发送心跳,则不再给其i/o请求
由于datanode失效,低于预设阈值,namenode会重新进行复制
安全模式
Namenode启动时会在一个安全模式
不会写数据
收集各个datanode的报告,当数据块达到最小副本数以上,认为安全
在一定比例的数据块确认为安全后,过指定时间安全模式结束
如果检测到副本数不足的数据块,会复制使其达到最小副本数
校验和
创建文件时,每个数据块都会产生效验和
校验和会隐藏文件形式保存在命名空间下
客户端获取数据时可以检查校验和是否相同来检查数据块
如果数据块损坏,可以读其他副本
回收站
删除文件,放入trash
回收站文件可以恢复
可以指定时间彻底删除
元数据保护
映像文件和事务日志是namenode的核心文件,可以有多个副本
副本会降低性能,增加安全性
Namenode发生故障,需要手工切换
快照
支持存储某个时间点的映像
辅助名称节点: secondary namenode (手工)
监控HDFS状态的辅助后台程序
每个集群只有一个
与nameNode进行通信,定期保存HDFS元数据
可作为备用namenode节点使用
从节点:有多个 dataNodes
每台从服务器都运行一个
负责把hdfs数据块读写到本地文件系统
----------------------------------------------------
负责所在物理节点的存储管理
一次写入,多次读(不可以修改)
文件由数据块组成64M
数据块会散布到各个节点
存储文件
文件被分成block存储在磁盘上
为保证数据安全,文件会有多个副本
Hdfs 的文件操作
命令方式
Api方式
添加新节点
节点装好hadoop
将namenode中的有关配置复制到本节点
修改nasters和slaves文件(所有节点),添加节点
设置ssh
启动该节点的datanode和tasktracker(hadoop-demon.sh start datanode/tasktracker)
运行start-balancer.sh(数据负载均衡)
启动特定后台进程,可以查看start-all.sh