大数据基础之HDFS

https://hadoop.apache.org
A distributed file system that provides high-throughput access to application data.

特点:

  • 大文件、一次写入多次读取,修改只支持Append
  • 多副本
  • 流式、非低延时

一 概念

元数据、File-Block、机架、副本、读数据、写数据

File-Block、Replication

QJM部署

NameNode、DataNode、ZKFC、JournalNode

HA

zk节点

  • /hadoop-ha/${dfs.nameservices}/ActiveBreadCrumb 永久节点
  • /hadoop-ha/${dfs.nameservices}/ActiveStandbyElectorLock 临时节点

代码

org.apache.hadoop.hdfs.tools.DFSZKFailoverController

二 常用命令

hdfs dfs -ls /
hdfs dfs -du -h /
hdfs dfsadmin -report
hdfs haadmin -getAllServiceState
hdfs fsck /tmp/36c8b0727c814dc2ae5d520a45fadeb0.51c9f1f1e3652991ed3071c6c0bb0264 -files -blocks -locations -racks
hdfs dfs -setrep 2 /user/hive/warehouse/temp.db/test_ext_o/000000_0
hdfs balancer -threshold 10
hadoop distcp hdfs://master1:8020/foo/a hdfs://master1:8020/foo/b hdfs://master2:8020/bar/foo

三 读写过程

四 Namenode相关

文件

全量+增量
fsimage、edit log

内存估算

Total = 198 ∗ num(Directory + Files) + 176 ∗ num(blocks) + 2% ∗ size(JVM Memory Size)

五 Datanode相关

分配策略

选择策略:

  • 1 当前机架(相对hdfs client而言)chooseLocalNode
  • 2 远程机架(相对hdfs client而言)chooseRemoteRack
  • 3 另一机架
  • 4 全部随机 chooseRandom

代码:

org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.findNewDatanode

副本检查

BlockManager中启动线程ReplicationMonitor,ReplicationMonitor定期检查哪些block存在副本缺失,并将待复制block信息通知原始DataNode,DataNode收到信息后会不断复制block,默认一次2个block;

代码:

org.apache.hadoop.hdfs.server.blockmanagement.BlockManager

相关配置:

dfs.replication
dfs.namenode.replication.interval
dfs.namenode.replication.work.multiplier.per.iteration
dfs.namenode.replication.max-streams

六 安全模式

SafeMode 是 NameNode 的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受上传、删除、修改等变更请求。
在 NameNode 主节点启动时,HDFS 首先进入安全模式,DataNode 在启动的时候会向 NameNode 发送心跳信号并汇报可用的 block 的状态,当整个系统达到安全标准时,HDFS 自动离开安全模式。
安全标准:block缺失率低于0.1%
dfs.namenode.safemode.threshold-pct=0.999

退出安全模式命令

hdfs dfsadmin -safemode leave

posted @ 2022-05-31 16:05  匠人先生  阅读(188)  评论(0编辑  收藏  举报