从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 来提快速度。有空试试。
从hbase读取数据优化策略和实验对照结果的更多相关文章
- Hbase读取数据
get命令和HTable类的get()方法用于从HBase表中读取数据.使用 get 命令,可以同时获取一行数据.它的语法如下: get ’<table name>’,’row1’ 下面的 ...
- 在Windows下MyEclipse运行JAVA程序连接HBASE读取数据出错
运行环境:Hadoop-2.5.0+Hbase-0.98.6 问题描述: 15/06/11 15:35:50 ERROR Shell: Failed to locate the winutils bi ...
- HBase最佳实践-读性能优化策略
任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少.总结 ...
- 万字长文详解HBase读写性能优化
一.HBase 读优化 1. HBase客户端优化 和大多数系统一样,客户端作为业务读写的入口,姿势使用不正确通常会导致本业务读延迟较高实际上存在一些使用姿势的推荐用法,这里一般需要关注四个问题: 1 ...
- oracle12c中新能优化新特性之热度图和自动数据优化
1. Oracle12c热度图和自动数据优化 信息生命周期管理(ILM)是指在数据生命周期内管理它们的策略.依赖于数据的年龄和对应用的业务相关性,数据能被压缩,能被归档或移到低成本的存储上.简言之,I ...
- 【转载】HBase 数据库检索性能优化策略
转自:http://www.ibm.com/developerworks/cn/java/j-lo-HBase/index.html 高性能 HBase 数据库 本文首先介绍了 HBase 数据库基本 ...
- HBase 数据库检索性能优化策略--转
https://www.ibm.com/developerworks/cn/java/j-lo-HBase/index.html HBase 数据表介绍 HBase 数据库是一个基于分布式的.面向列的 ...
- HBase 数据库检索性能优化策略
HBase 数据表介绍 HBase 数据库是一个基于分布式的.面向列的.主要用于非结构化数据存储用途的开源数据库.其设计思路来源于 Google 的非开源数据库"BigTable" ...
- hbase大规模数据写入的优化历程
业务背景:由于需要将ngix日志过滤出来的1亿+条用户行为记录存入Hbase数据库,以此根据一定的条件来提供近实时查询,比如根据用户id及一定的时间段等条件来过滤符合要求的若干行为记录,满足这一场景的 ...
随机推荐
- 【hive】hive表很大的时候查询报错问题
线上hive使用环境出现了一个奇怪的问题,跑一段时间就报如下错误: FAILED: SemanticException MetaException(message:Exception thrown w ...
- Android Studio3.0打包APK的时候 报错:
Error:Execution failed for task ':app:transformDexWithDexForRelease'.> com.android.build.api.tran ...
- R语言常用数学函数
语言的数学运算和一些简单的函数整理如下: 向量可以进行那些常规的算术运算,不同长度的向量可以相加,这种情况下最短的向量将被循环使用. > x <- 1:4 > a <- 1 ...
- 如何利用CSS中的ime-mode用来控制页面上文本框中的全角/半角输入
css 之 ime-mode语法:ime-mode : auto | active | inactive | disabled取值:auto : 默认值.不影响ime的状态.与不指定 ime-mode ...
- Java 基础入门随笔(8) JavaSE版——静态static
面向对象(2) this:代表对象.代表哪个对象呢?当前对象. 当成员变量和局部变量重名,可以用关键字this来区分. this就是所在函数所属对象的引用.(简单说:哪个对象调用了this所在的函数, ...
- python3 操作excel表
python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库可从这里下载https://pypi.python.org/pypi.下面分别记录py ...
- 怎么让Eclipse对html和js代码自动提示
使用eclipse自带的插件,无需另外安装插件,具体步骤如下1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist修改Auto Activ ...
- 运行jar包的命令
windows下使用java -jar xxx.jar运行,linux下使用nohup java -jar xxx.jar & 如果想停止jar运行,ps -ef查看进程(进程多的话也可以加上 ...
- ListView常用属性 (2012-01-12 17:20:27)
比较特别的属性,通过设置这样的属性可以做出更加美观的列表.stackFromBottom——设置该属性之后你最新条目就会显示你列表的最下面,值为true和false,如android:stackFro ...
- 服务器做ssh免秘钥登陆
集群内服务器做非root用户免秘钥登陆:1.node1新建用户abc1,制作公钥.私钥(一路回车键即可)ssh-keygen –t rsa将自动在/home/abc1/.ssh/目录下创建公私钥文件如 ...