00_Hadoop HDFS 原理
2024-05-23 21:29:58 0 举报
HDFS源码剖析
作者其他创作
大纲/内容
维护nameNode状态
磁盘
发送edits log到大多数
内存fsimage
4、写入磁盘
fsimage
监听edits log,拉取最新数据
dataNode进程 机房3
构建fsimage
ZKFC进程
block01
rack aware机架感知特性
写入
zk cluster
edit log
Hadoop1.x nameNode方案
大SQL
6、推送最新的fsimage7、nameNode将本地new edits log变为edits log
block02
1、checkpoint每隔一段时间会执行一次
active状态
namenode说白了,就是在自己内存里搞一份元数据,有任何修改就在内存里改改,然后写一份变更日志到edits log文件里去,不停追加,如果重启,那么就读取fsimage文件和editslog,然后editslog与fsimage合并,然后写一份新的fsimage,同时清空edits log,就这原理
4、内存中合并
secondary namenode OR checkpoint node
active nameNode 进程
1、内存中创建结构
转换为MapReduce计算任务的java逻辑代码
HealthMonitor
filesystem namespace(元数据)整个文件目录组织结构block、datanode的映射关系
移动计算任务
1 同机房1个备份,保证备份速度2 跨机房1个备份,容灾保证一个block至少3个备份nameNode需要保证拥有3个副本的block>80%才能正常访问,否则会进入安全模式safe mode,如果发现某个block不足3个,就会指示DataNode复制足量的block副本
监控健康状态
3、checkpoint定时或定量
主备重新选举
failovercontroller
3、拉取fsimage和editslog
维护和name node一模一样的元数据
每次namenode重启的时候,要用-importCheckpoint指令,从其他地方去加载fsimage数据到自己内存中来
ZKFC监控nameNode是否存活主备切换
实时发送
heartbeat
数据破损计算checksum 并和上传时候的checksum比较,如果不一致,就读取其他副本block
block report
读取:知道文件切分几个block,并放在哪些DataNode上
5、删除
hive
ActiveStandbyElecto
2、通知namenode别写edits log,暂时写一个new edits log
计算作业
journal nodes
dataNode进程 机房2
checkpoint
dataNode进程 机房1
启动时扫描block,生成block list发送给nameNode做校验
Hadoop1.x backup Node方案
edit log数据流
standby nameNode进程
Hadoop HDFS 原理
读取editlog
内存fsimage保存了一份和namenode一模一样的元数据了
MapReduce
journal nodes 集群
构建最新fsimage
5、写入本地磁盘
yarn
用backup node,namenode自己本地不用维护一份edits log文件,自己不用写磁盘,直接在内存里一份fsimage数据,然后每次接收到一条元数据修改操作,就应用到自己内存里,然后发送一个edtis log数据流给backup node
元数据
写入数据
发起选举
nameNode挂了
replication factor复制因子 = 3
0 条评论
下一页