HDFS

技术细节

1.HDFS在存储数据的时候会将数据进行切换。

2.HDFS中两类主要节点:NameNode和DataNode。

3.在HDFS中,会对每一个块进行备份,这些备份称之为副本(replication)。默认的副本数量为3。

Block

1.表示数据块,HDFS中数据存储的基本形式也是Block。

2.每Hadoop2.X中,每一个Block默认是128M。可以通过dfs.blocksize调节Block的大小,单位默认是字节。

3.如果一个文件本身不到一个Block的大小,那么这个文件会作为一个Block进行存储,在存储的时候,这个文件本身是多大那么就占用多大的空间。例如一个文件只有10M,那么这个文件对应的Block也就只有10M。

4.切块的意义:

a.切块是为了能够存储一些超大文件。

b.为了快速进行备份保证副本数量。

5.在切块的时候,并不是不同的块就一定放在不同的节点上。

6.HDF会对每一个块分配一个递增的编号。-BlockID。

NameNode

1.NameNode在HDFS中负责管理DataNode以及存储元数据(metadata)

2.元数据-是对上传的文件的描述信息:

a.文件的存储路径

b.文件的权限

c.记录文件大小以及Block的大小

d.Block和DataNode的映射关系

e.记录每一个文件的副本的数量

3.元数据在NameNode中存储在内存以及磁盘中

4.元数据存储在内存中的目的:快速操作

5.元数据在磁盘中的目的:崩溃恢复。

6.元数据在磁盘中的存储位置由hadoop.tmp.dir属性来决定

7.元数据在磁盘上的存储和fsimage和edits文件有关

edits文件记录的是HDFS的写操作

fsimage文件记录的是元数据-fsimage中的元数据和内存中的元数据不是实时的。-fsimage中的元数据往往会落后于内存中的元数据。

8.当NameNode接收到写操作的时候,先将写操作记录到edits_inprogress,如果记录成功,则将该操作更新到内存中修改内存中的元数据。更新完内存之后就会给客户端返回一个元数据修改成功的信号。

9.fsimage在更新的时候,会先将edits_inprogress滚动成edis_XXXX-XXXX,然后再将滚动出来的edits文件中的数据转化成命令执行到fsimage中。生成一个新的edits_inprogress。

10.fsimage的更新条件:

a.时间角度:当距离上一次的更新过去了指定的时间(默认是3600s,即1h)之后,就会将edits中

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值