1. 在Hadoop 1.x 的块大小默认是64M,而2.x 和3.x默认大小为128M.
2. 块大小计算方法,取离磁盘速度最近的2的倍数,比如磁盘速度为100M/s,那块大小就取128M.
3. hdfs的特点,适合一次写入,多次读取,不支持修改文件,适合做分析,不适合做网盘.
4. 块大小设置的属性为dfs.blocksize,默认2.x为128M, 1.x为64M,本地模式为32M.
5. hadoop的配置参数的优先级
()1)客户端代码中设置的值 >(2)ClassPath下的用户自定义配置文件 >(3)然后是服务器的默认配置
6. hdfs 写数据的流程
(1) 客户端对数据文件切片(128M一片).
(2) 客户端向namenode请求上传数据
(3) namenode响应客户端的请求,允许上传数据
(4) 客户端向namenode请求开始发送数据并请求返回上传的datanode
(5) namenode 返回 三个datanode给客户端(假如数据的副本数为3)
(6) 客户端在接收到datanode之后,创建输出流,并向节点发出建立block传输通道的请求
(7) 各个datanode在接收到请求之后,返回相应,建立传输通道.
(8) 然后客户端就开始传输第一个block到一个节点上(我们暂时称为n1).
(9) 该节点(n2)收到数据之后,n1又传向下一个节点,并且n1,节点在内存中序列化数据,然后写到硬盘中.
(10) 后面的节点收到数据也是和n1的节点一样的操作,直到所有的节点都完成,就会返回一个应答给客户端.
(11) 客户端接着传下一个切片的数据.
7. 机架感知
就是在上传数据的服务器有一份副本,然后在同一个机架的一台 服务器上也有一个副本,在不在同一机架的服务器上也有一个副本.
8. hdfs 读数据流程
(1) 客户端向namenode发起读请求
(2) namenode 返回有该数据的datanode的地址
(3) 客户端收到改地址之后,就会向datanode(有多个datanode有该数据,datanode的选择为路径最小原则)发起请求读数据
(4) 该datanode返回数据.
9. nn和2nn的工作机制
(1)CheckPoint的触发有两个条件:
定时时间到了
edits满了
(2) 查看Fsimage使用OIV
hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径
hdfs oiv -p XML -i fsimage_0000000000000000025 -o /opt/module/hadoop-2.7.2/fsimage.xml
(3) oev查看Edits文件
hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径
hdfs oev -p XML -i edits_0000000000000000012-0000000000000000013 -o /opt/module/hadoop-2.7.2/edits.xml
(4) NameNode如何确定下次开机启动的时候合并哪些Edits?
seen_txid文件记录着目前正在用哪个edits.
10. namenode数据恢复
(1) 关闭namenode进程
(2) 删除namenode数据
(3) 拷贝2nn数据到nn
(4) namenode
11. 最小副本条件是99.99%的副本上报了块列表信息
12. 安全模式操作
(1)bin/hdfs dfsadmin -safemode get (功能描述:查看安全模式状态)
(2)bin/hdfs dfsadmin -safemode enter (功能描述:进入安全模式状态)
(3)bin/hdfs dfsadmin -safemode leave (功能描述:离开安全模式状态)
(4)bin/hdfs dfsadmin