☆☆☆★☆☆☆

唯有努力才能活成自己想要活成的样子

导航

读取HBases的数据的三种常见用法

感谢提供者https://blog.csdn.net/javastart/article/details/80889190?utm_source=blogxgwz0

HBase中Scan从大的层面来看主要有三种常见用法:ScanAPI、TableScanMR以及SnapshotScanMR。

ScanAPI:

客户端next设计原理:HBase中scan根据发送的命令过去,服务器并不是将满足扫描条件的所有数据一次性返回给客户端;

应用场景:scan API的效率很大程度上取决于扫描的数据量。通常建议OLTP业务中少量数据量扫描的scan可以使用scan API;

TableScanMR:

TableScanMR的工作原理其实就是ScanAPI的并行化,ableScanMR会将scan请求根据目标region的分界进行分解,分解成多个sub-scan,每个sub-scan本质上就是一个ScanAPI

假如scan是全表扫描,那这张表有多少region,就会将这个scan分解成多个sub-scan,每个sub-scan的startkey和stopkey就是region的startkey和stopkey

应用场景:HBase扫描大量数据进行分析

SnapshotScanMR:

SnapshotScanMR扫描于原始表对应的snapshot之上,根据snapshot restore出来的hfile

SnapshotScanMR直接会在客户端打开region扫描HDFS上的文件,不需要发送Scan请求给RegionServe

SnapshotScanMR直接绕过regionserver在客户端借用region中的扫描机制直接扫描hdfs中数据,

优点:1)减小对RegionServer的影响,2)极大的提升了扫描效率。SnapshotScanMR相比TableScanMR在扫描效率上会有2倍~N倍的性能提升;

注意点:

TableScanMR和SnapshotScanMR都会存在的问题,两者实际上都是按照region对scan进行切分,然而对于很多大region(大于30g),单个region的扫描粒度还是太大,很多scan扫描可能并没有涉及多个region,结果只会集中在某一个region上;

 

posted on 2020-05-12 17:38  Yr-Zhang  阅读(726)  评论(0编辑  收藏  举报