首页 > 其他分享 >hfile通过bulkload拷贝到hbase方式---TODO待整理

hfile通过bulkload拷贝到hbase方式---TODO待整理

时间:2023-06-14 17:37:35浏览次数:45  
标签:region --- split key bulkload hbase Hfile 入库 HFILE


 

 

参考链接:


 

http://www.ithao123.cn/content-101658.html  hbase之 bulkload的主要类 LoadIncrementalHFiles

 

 

http://www.thinksaas.cn/group/topic/233674/  bulkload 执行 mv和cp的区别

 

使用LoadIncrementalHFiles装载HFILE到HBASE的一点心得

 

 

:

 

数据入HBASE一般有两种方法:

1.HTable.put(),单条或者多条的方式入库。

2.先生成HFILE,然后将HFILE入库

前者适合于少量数据入库,后者主要面向海量数据入库。

 

 首先说下HFILE,HFILE是有序的KEYVALUE集合,对于入库HBASE,HFILE需要按照Key进行排序(key是由rowkey和列族、列名等构成的),排序后,HFILE就有个startKey和endKey,她的所有key是再这两者之间的

 

 其次是HBASE的表,一个表可能存储再多个regionserver上,在每个regionserver包括多个Region,关系大概是:TABLE-->REGIONSERVER-->REGION。每个REGION的数据的key是有一个范围的,也是有个startKey和endKey,不同region的key的范围是没有交集的,所以一个table的key的范围可以表示为{{null,endkey1},{startkey2,endtime2},{startkey3,endkey3}......{startkeyn,null}}。

 

 

 接下来说Hfile批量入Hbase,LoadIncrementalHFiles会检查HFILE的目录(结构是主目录->列族目录->hfile),把需要批量导入的Hfile放到一个列表中,依次执行。导入每一个Hfile,系统会判断hfile是否再某个region中还是跨了region(通过前面说的startkey,endkey进行判断)。如果在一个region中,就是进行导入,系统会通过rpc调用regionserver的方法,先把HFILE复制Region所在的文件系统中(如果处于不同的FS),然后直接将HFILE直接改名为Region的一个StoreFile,并更新该Region的Storefile列表,这样该HFILE就入库。如果在HFILE跨的region,那么需要对Hfile进行split(分成.top和.bottom两个文件,每个文件单属于一个region,也是Hfile格式的,放在_tmp下,),接下来把split之后的文件进行入库。

 

 

最后,根据这些理解来解释一些问题:

1、问:HFILE为什么需要排序?

答:那是应为REGION中的storefile是有序的,只有hfile有序,才能通过简单的拆分和rename来转换为storefile,而实现入库。

2、问:有时Hfile入库成功后,原Hfile会被移除,有时又不是?

答:如果Hfile的key属于单个region时,直接通过rename导入的,所以原文件不见了。而如果key跨了region,那么需要split到_tmp下,最终入库的的split后的文件,原hfile没有动,所以需要人工去删它。

3、问:如果HFILE跨域多个region,会不会有问题?

答:每次split都是分成两个文件,前一个文件肯定是属于单个region的,后一个文件就不一定了,所以,处理split后的文件时会做同样的判断,确保跨region的hfile不断的split。

 

标签:region,---,split,key,bulkload,hbase,Hfile,入库,HFILE
From: https://blog.51cto.com/u_16081606/6478701

相关文章

  • 欧奈儿行业 RPS 排名,一图览全貌 2023-06-14
    自动复盘2023-06-14k线图是最好的老师,点击详情图可以看到行业20日RPS的排名,最底下子图是行业rps走势线跟踪板块总结:成交额超过100亿排名靠前,macd柱由绿转红成交量要大于均线有必要给每个行业加一个上级的归类,这样更能体现主流方向公众hao:醉卧梦星......
  • jqtreetable jquery-treeview
    jqtreetable[img]http://dl.iteye.com/upload/attachment/466717/80fc34ec-ed82-3c04-b2f4-5de688bbf990.jpg[/img]jquery-treeview[img]http://dl.iteye.com/upload/attachment/466715/3c0521cb-37e0-3fc6-8dfc-f438b48e8569.jpg[/img]......
  • ma系列之-7-文本处理工具grep egrep 和正则
      1概念: grep概念:根据模式搜索文本,并将符合模式的文本行显示出来。 globalreserchbyexpressiongrep的特点:就是在某个行中找只要符合匹配的行就可以,就是做部分匹配的,不是整个单词匹配,显示的是整行数据,重点展示的是匹配到的那个字段。 grep使用的模式Pattern组成:由文本......
  • 可节省40%MCU开发成本的音乐睡眠灯语音扩展芯片方案N9300-S16
    随着社会节奏的加快,人们每天的生活节奏也在不断的加快,工作压力也在不断的加大,越来越多的人都面临着失眠的痛苦,当拖着疲惫不堪的身体躺到床上时,却发现由于担忧每天的工作或月底需要交房租等问题,久久无法入眠;这时打开睡眠音乐灯,在舒缓的音乐中、在渐变的灯光中慢慢忘却工作中的压力,慢......
  • ESP32-CAM开发板刷固件时遇到问题与解决方法
    ESP32-CAM开发板刷固件时遇到的问题通过ThonnyIDE给ESP32-CAM刷入micorpython固件时,我遇到三个问题,给大家做个参照。1从MicroPython官网下载的固件没有Camera库,所以经过多次努力,找到了一个国外的开发者前辈,他给MicroPython中添加了Camera摄像头库。2ESP32-CAM有专门的......
  • mysql-主从数据一致性检查工具 pt-table-checksum
    pt-table-checksum工具介绍pt-table-checksum是PerconaToolkit的一个组件,用于检测MySQL主、从库的数据是否一致。它的原理是在主库执行基于statement的SQL语句来生成主库数据块的checksum,把相同的SQL语句传递到从库执行,并在从库上计算相同数据块的checksum,最后,比......
  • GCC/G++选项 -Wl,-Bstatic和-Wl,-Bdynamic
    GCC/G++选项-Wl,-Bstatic和-Wl,-Bdynamic参考https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html gcc使用-Wl传递连接器参数,ld使用-Bdynamic强制连接动态库,-Bstatic强制连接静态库。所以部分静态,部分动态连接这么写:gcc...-Wl,-Bstatic-l<your-static-lib>-Wl,-Bdyn......
  • FTP上传错误----“200 Type set to I”
    用FilezillaServer做的FTP服务器,没有使用客户端上传东西,直接用win10的文件管理器访问上传文件,发现有的文件上传时会提示:”200TypesettoI“,(如下图所示) 一阵猛上网搜索,原以为是由于“主动模式”(Active)和“被动模式”(PASV)的模式,使用客户端测试好像都可以。几经折腾,一直没有......
  • ajax之post请求application/x-www-form-urlencoded传参的解决方案
    ​ 在使用ajax进行参数获取时,始终获取不到参数,但是调用postman可以正常接收参数,所以初步推测是参数格式不正确,那么正确的格式应该怎么写呢?一般按照正常的逻辑,我们在传递application/x-www-form-urlencoded时,参数应该这样写,但实际操作中发现一直获取不到参数。ajax.create(......
  • 2023.6.14 - vue多页面项目配置
    抽离multipage.config.js多页面配置文件const{resolve}=require('path');constfs=require('fs');//获取多页的入口配置constpagesPath='src/pages';//pages页面配置constpages=getAllPages(resolve(pagesPath));//alias配置constaliasConfi......