hbase scan 查询的问题?

问答 ruiqi ⋅ 于 2018-03-09 19:15:16 ⋅ 最后回复由 ruiqi 2018-03-19 10:30:59 ⋅ 4372 阅读

我们查询的数据有点多 ,在查询的时候遇到的一些问题 想请教下 :

  1. 首先 如果我们在spark 中 使用scan 查询 hbase 表 没有设置 startRow 和stopRow ,程序看是扫描了很多结果,但是 有的数据该有查询结果的,但是 从查询出来的数据来看 丢失了
  2. 然后我们在程序中设置了scan的startRow 和stopRow 但是看日志查询的结果 不是 想要的结果 。查询看图file
成为第一个点赞的人吧 :bowtie:
回复数量: 9
  • 青牛 国内首批大数据从业者,就职于金山,担任大数据团队核心研发工程师
    2018-03-14 22:11:47

    你startRow和stopRow是怎么设置的?数据怎么能丢,除非设置了过期时间

  • ruiqi
    2018-03-14 23:01:07

    @青牛 过期时间没有设置 查询的时候设置了范围。在全表查询的时候 我们 是用 long型 ip值作为rowkey的 。所以在查询的时候没有设置startRow 和 stopRow 。我们从hbase里面查询出来数据后 进行数据处理,然后重新入库 到里面 但是 根据入库的数据跟 基础数据上 对应不上。 处理过程校验过了 没有出错。

  • ruiqi
    2018-03-14 23:02:40

    @青牛 我问的时候说设置了startRow 和 stopRow 。因为我们rowkey 是 ip的 long 型 从 0 到42亿多,我分成 0 到400万 这么叠加 进行设置startRow 和stopRow的

  • 青牛 国内首批大数据从业者,就职于金山,担任大数据团队核心研发工程师
    2018-03-14 23:03:28

    @ruiqi 如果hbase没有出错,那只能是你中间数据处理的问题,中间步骤多加点counter用于观察。有些问题在本地跑的时候是看不出来的

  • ruiqi
    2018-03-14 23:07:07

    @青牛 嗯 。。明白了。对了我们最近放弃 使用scan的方式查询hbase ,就算用spark 换成get 查询 对于hbase 的负载特别高。 现在集群环境已经是15台 设备了。 入库数据在5分钟1亿到3亿 数据 ,30g数据量最低。 然后再加上读的话 hbase 就承受不住了。我们想调优的话 应该怎么做。 从查询调还是 插入那里呢?

  • 青牛 国内首批大数据从业者,就职于金山,担任大数据团队核心研发工程师
    2018-03-15 22:13:11

    @ruiqi 这要看瓶颈在哪里,是在硬盘io那,还是regionserver的gc哪里,另外自动split关了没?

  • ruiqi
    2018-03-15 22:22:05

    @青牛 自动split没有关。我们设置的是超过30G的话 自动分。 gc调的是128g 内存跑不了这么多。数据插入的时候负载 不高主要是查询。 我们rowKey 没有 预分区 ,如果这么想预分区的话 怎么分呢?后来今天换成get的方式查询 ,负载 请求次数太多 。用scan 也是同样的方式。

  • 青牛 国内首批大数据从业者,就职于金山,担任大数据团队核心研发工程师
    2018-03-16 11:09:12

    @ruiqi 那就是你查询的时候遇到region split了,这样hbase性能就很差了,get还不如scan那,先分析rowkey的分布在决定怎么预分region,把gc日志打出来吧,看看时间

  • ruiqi
    2018-03-19 10:30:59

    @青牛 嗯呢好的

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter