Hadoop学习笔记(二)--HDFS分布式文件系统
HDFS简介
优点:
- 处理超大文件
- 流式的访问数据(一次写入,多次读取)
- 运行于廉价的商用机器集群上
局限性:
- 不适合处理低延迟数据访问
- 无法高效存储大量的小文件
- 不支持多用户写入及任意修改文件
HDFS架构
主从结构
- 主节点:只有一个NameNode(单点故障),HA下会有多个NameNode。
- 从节点:有很多DataNode。
NameNode负责
- 接收用户操作请求
- 维护文件系统的目录结构
- 管理文件与block之间的关系,block与DataNode之间的关系
DataNode负责
- 存储文件
- 文件被分成block存储在磁盘上
- 为保证数据安全,文件会有多个副本
HDFS核心设计
数据块
HDFS块默认大小,Hadoop1是64M,Hadoop2是128M
数据副本存放策略
在多数情况下,HDFS默认的副本系数是3。
- 第一个block副本放在和client所在的node里(如果client不在集群范围内,则这第一个node是随机选取的,系统会尝试不选择那些太满或者太忙的node)。
- 第二个副本放置在与第一个节点不同的机架中的node中(随机选择)。
- 第三个副本和第二个副本在同一个机架,随机放在不同的node中。
安全模式
hadoop dfsadmin -safemode leave //强制NameNode退出安全模式
hadoop dfsadmin -safemode enter //进入安全模式
hadoop dfsadmin -safemode get //查看安全模式状态
hadoop dfsadmin -safemode wait //等待,一直到安全模式结束
负载均衡
分析数据块分布和重新均衡DataNode上的数据分布的工具。
$HADOOP_HOME/sbin/start-balancer.sh
心跳机制
1. Hadoop是master/slave结构,master中有NameNode、ResourceManager,slave中有DataNode、NodeManager。
2. master启动时,会启动一个ipc(Inter-Process Communication,进程间通信)server服务,等待slave连接。
3. slave启动时,会主动连接master中的服务,并且每隔3秒连接一次master,这就是心跳,slave通过心跳汇报自己的状态给master。
4. NameNode通过心跳知道DataNode的状态;ResourceMangager也通过心跳知道Nodemanager的状态。
5. 如果master长时间没有收到slave的心跳,那么它就认为slave宕机了。
机架感知
大型Hadoop集群是以机架的形式来组织的。默认没有启用。
HDFS操作
- 命令行接口
- Java接口