zoukankan      html  css  js  c++  java
  • 从hbase读取数据优化策略和实验对照结果

    起因:工作须要。我须要每5分钟从hbase中。导出一部分数据,然后导入到ES中。可是在開始阶段编写的python脚本,我发现从hbase读取数据的速度较慢,耗费大量的时间。影响整个导数过程,恐怕无法在5分钟内完毕导数工作

    在咨询了老人后,採取部门优化策略,并记录了实验结果。

    hbase结果大致例如以下

    粉丝表

    rowKey  是粉丝ID

    列名 含义
    id 粉丝ID
    ut 更新时间
    ...  ...
       

    此hadoop集群有13台机器


    任务的目标把hbase中前5分钟录入的数据录入到ES中。

    1. 为了开速开发,我刚開始python通过thrift接口读取数据,显然耗时比較多

    在这此实验中,提取数据以来的是ut 这列(更新时间字段)

    2. 採用java client + SimpleColumnValueFilter 提取数据

    使用thrift 接口很的慢,照理说thrift server 相当于hbase client 仅仅只是多进行一次数据转发,不应该这么慢,但现实就是这么残忍。

    3. 因为hbase在插入数据时同一时候会记录timestamp,所以能够直接使用timestamp来提取数据(至少缩小了scan的查找范围)

    4.,5 减小导数的时间范围,能够观察到,时间的下降不是线性的。我判断scan 操作有部分时间开销是基础时间开销,假设导入多少数据,时间也不会下降非常多

    6. 採用MapReduce后,速度有了成倍的提高。询问得知。正常情况下通过hbase client 从hbase中提取数据是线性,向一个region server发出请求后,再向还有一个region sever发出请求。显然map reduce 并行比串行的速度提高了非常多。 

    到阶段6时间已经满足业务须要了。据说还能够通过拆分region 来提快速度。有空试试。



  • 相关阅读:
    二叉树的前中后序遍历(非递归)
    剑指offer——圆圈中最后剩下的数字
    剑指offer——和为s的连续正整数序列
    leetcode300.最长上升子序列
    将网络描述符设置为非阻塞的场景
    leetcode72.编辑距离
    浅谈各种锁机制
    TCP如何保证可靠传输?
    JavaScript(七)
    JavaScript(六)
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7118089.html
Copyright © 2011-2022 走看看