大数据常见读写

HDFS读流程

1.client访问NameNode,查询元数据信息,获得这个文件的数据块位置列表,返回输入流对象。
2.就近挑选一台datanode服务器,请求建立输入流。
3.DataNode向输入流中中写数据,以packet为单位来校验。
4.关闭输入流

HDFS写流程

1、客户端向NameNode发出写文件请求。
2、检查是否已存在文件、检查权限。若通过检查,直接先将操作写入EditLog,并返回输出流对象。
3、client端按128MB的块切分文件。
4、client将NameNode返回的DataNode列表和Data数据一同发送给最近的第一个DataNode节点,此后client端和多个DataNode构成pipeline管道。

client向第一个DataNode写入一个packet,这个packet便会在pipeline里传给第二个、第三个…DataNode。

在pipeline反方向上,逐个发送ack(命令正确应答),最终由pipeline中第一个DataNode节点将ack发送给client。

5、写完数据,关闭输输出流.
6、发送完成信号给NameNode。

HBase数据的写入过程:

1、Client访问zookeeper,获取元数据存储所在的regionserver
2、通过刚刚获取的地址访问对应的regionserver,拿到对应的表存储的regionserver
3、去表所在的regionserver进行数据的添加
4、查找对应的region,在region中寻找列族,先向memstore中写入数据
5、当memstore写入的值变多,触发溢写操作(flush),进行文件的溢写,成为一个StoreFile
6、当溢写的文件过多时,会触发文件的合并(Compact)操作,合并有两种方式(major,minor)

HBase数据的读取流程:

1.Client访问zookeeper,获取元数据存储所在的regionserver
2.通过刚刚获取的地址访问对应的regionserver,拿到对应的表存储的regionserver
3.去表所在的regionserver进行数据的读取
4.查找对应的region,在region中寻找列族,先找到memstore,找不到去blockcache中寻找,再找不到就进行storefile的遍历
5.找到数据之后会先缓存到blockcache中,再将结果返回
blockcache逐渐满了之后,会采用LRU的淘汰策略。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值