hbase

apache kylin总结

人走茶凉 提交于 2020-01-15 04:39:50
去年12月挖的坑,今天找时间填上。update:20190119 一、kylin架构 核心是预计算,在此架构上做了一些优化。计算结果存储在Hbase,对Hive等查询转换为Hbase的Scan,提高速度。 缺点亦明显,先天没有AD-HOC能力 二、kylin高可用部署 Kylin的每个结点都可以部署为Job节点(build cube用)兼查询节点。并且每个节点之间对等。因此只要前面加个Nginx做请求转发即可。 Kylin支持通过增加节点水平扩容。 三、kylin on hbase vs kylin on druid 目前的 Kylin 数据存储使用 HBase,存储 Cube 时将维度值和度量值转换成 HBase 的 KeyValue。因为 HBase 不支持二级索引,只有一个行键 (RowKey) 索引,Kylin 的维度值会按照固定的顺序拼接作为 RowKey 存储,那么排在 RowKey 前面的维度,就会获得比后面的维度更好的过滤性能。 也就是说排在rowkey后面的维度查询,效率极低,因为需要scan Hbase的行数非常大,Druid可以解决这个问题。 其特点: 1)数据实时流入,毫秒级延迟即可查询。与ES有些像? 2)支持倒排索引,具有良好的过滤性能。(Hbase只支持一级索引,导致rowkey后面的维度过滤性能差) 这是其较于 Kylin On

HBase 内存管理理解

。_饼干妹妹 提交于 2020-01-14 23:09:22
1. 基础知识 1.1 Region Server内存布局 参考[2] 1.2 堆内内存 物理内存少于20G,建议只配置堆内内存 配置参数: hbase-env.sh 的参数 HBASE_HEAPSIZE ,默认1G 为 on-heap BlockCache 的实现,称之为 LruBlockCache ,也称 L1 Cache 默认开启,可在表的列族级关闭, desc 'table' 查看 BLOCKCACHE => 'false' 设置 hbase.block.data.cachecompressed 为 true 可开启BlockCache压缩。性能影响 HBASE-11331 :吞吐率增加50%,延迟增加30%,gc增加80%,CPU负载增加2%。 1.3 堆外内存 物理内存大于20G,建议配置堆外内存 off-heap BlockCache 称为 BucketCache ,也称 L2 Cache 堆外内存总大小由 -XX:MaxDirectMemorySize=20G 参数配置,或者 hbase-env.sh 的参数 HBASE_OFFHEAPSIZE hbase.bucketcache.size 配置 BucketCache 的占堆外内存比例(若 <1.0 )或大小( >=1 ,单位 MB ) hbase.bucketcache.ioengine 设置为 offheap

Spark give Null pointer exception during InputSplit for Hbase

痴心易碎 提交于 2020-01-14 08:51:06
问题 I am using Spark 1.2.1,Hbase 0.98.10 and Hadoop 2.6.0. I got a null point exception while retrieve data form hbase. Find stack trace below. [sparkDriver-akka.actor.default-dispatcher-2] DEBUG NewHadoopRDD - Failed to use InputSplit#getLocationInfo. java.lang.NullPointerException: null at scala.collection.mutable.ArrayOps$ofRef$.length$extension(ArrayOps.scala:114) ~[scala-library-2.10.4.jar:na] at scala.collection.mutable.ArrayOps$ofRef.length(ArrayOps.scala:114) ~[scala-library-2.10.4.jar:na

画像体系之-HBase缓存漫谈

对着背影说爱祢 提交于 2020-01-14 04:42:18
背景 用户/内容画像的对存储的要求其实是比较高的: 能批量更新(比如更新所有用户某个属性) 大量随机读取(甚至可能没有热点数据) 随机属性更新/添加 可持久化 易于横向扩展解决性能问题 上一次重度使用HBase已经是两年前了。HBase能够满足上面五个要求,所以用HBase作为画像体系的主要存储引擎便水到渠成。 问题 因为有批量更新,随机属性的更新/添加,那么必然会缓存失效,从而触发磁盘IO导致读取响应时间受到影响。在画像体系里,随机读取量大,比如召回了1000个id,然后你需要取这1000个id的属性集合,并且要求响应时间能够控制在100ms。基本只要碰到磁盘IO就歇菜了。所以现在我们希望HBase能够把所有数据都缓存住。 HBase读缓存特色 HBase的缓存目前我所了解的是Block Cache. Block Cache是什么概念的呢,我们知道HBase的最小文件单元是HFile, HFile是有结构的,主要包含: 索引,可以是多层 数据 元数据 当然还有一个布隆过滤器,方便确定一个元素是不是在HFile里。 并且只会有三个动作: 新增HFile HFile 合并 HFile的分裂 这里需要注意HFile一旦生成里面的元素就不会被改变。 一个HFile的数据会被切分成多个Block,每个Block一般而言都会有一些元信息。当然这些切分其实是逻辑上的。Block

Sqoop整合HBase

筅森魡賤 提交于 2020-01-14 02:34:30
sqoop是一个数据导入导出的工具,可以将关系型数据库当中的数据导入到大数据平台来,也可以将大数据平台当中的数据导入到关系型数据库当中去 我们也可以通过sqoop导入数据到hbase或者从hbase当中导出数据 需求一 : 将 mysql表当中的数据导入到 HB ase当中来 第一步 : 修改 sqoop 配置 文件 sqoop导入导出HBase的数据,需要修改sqoop的配置文件sqoop-env.sh cd /export/servers/sqoop-1.4.6-cdh5.14.0/conf vim sqoop-env.sh #Set path to where bin/hadoop is available export HADOOP_COMMON_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0 #Set path to where hadoop-*-core.jar is available export HADOOP_MAPRED_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0 #set the path to where bin/hbase is available export HBASE_HOME=/export/servers/hbase-1.2.0-cdh5.14.0 #Set

How to pass system property to map function in hadoop

泄露秘密 提交于 2020-01-14 02:21:07
问题 is there a way how to pass system parameter (something like -Dmy_param=XXX) to map function in hadoop map reduce framework. Submission of job to hadoop cluster is done via .setJarByClass(). In mapper I have to create configuration so I would like to make it configerable so I thought that standard way via property file would be ok. Just struggling with passing parameter where the property is set. Another way would be to add property file to submitted jar. Does someone have an experience how

HBase的JavaAPI常用练习

随声附和 提交于 2020-01-14 02:16:10
本篇博客,小菌为大家带来关于使用HBase的JavaAPI的一些常用练习。 使用hbaseapi 对hbase_rate表,按照 startRowKey=1 和 endRowKey=100 进行扫描查询结果。 @Test public void scanData ( ) throws IOException { // 获取连接 Configuration configuration = HBaseConfiguration . create ( ) ; configuration . set ( "hbase.zookeeper.quorum" , "node01:2181,node02:2181,node03:2181" ) ; Connection connection = ConnectionFactory . createConnection ( configuration ) ; //获取表 Table rate_table = connection . getTable ( TableName . valueOf ( "hbase_rate" ) ) ; // 创建扫描对象 Scan scan = new Scan ( ) ; // 设置startkey 和 endkey 属性 scan . setStartRow ( "1" . getBytes ( ) ) ;

大数据-Hbase

巧了我就是萌 提交于 2020-01-13 21:42:33
HBase 1.概念 HBase 是一个基于Hadoop的 分布式 可扩展 巨大数据 仓库 当用户需要对海量数据进行 实时 (时效性) 随机 (记录级别数据)读/写 用户可以使用Hbase Hbase设计目标是能够持有一张巨大的表 该表的规模能达到 数十亿行 * 数百亿列 并且可以运行在商用的硬件集群之上 Hbase是一个 开源的 分布式 版本化 的非关系化的数据库-NOSQL 该设计仿照了Google的BigTable设计 2.列存储 将IO特性相似的列归为一个簇 HBase底层在检索的时候以列簇为最小文件加载单位 Hbase中所有的记录都是按照一定顺序排列的 ROWKEY -- > 列簇 -- > 列名字 -- > 时间戳 默认查询返回时间戳最新版本记录 列存储的优缺点 优点: 支持稀疏存储 null值不存 磁盘IO利用率100% 缺点: 值包含ROWKEY/列信息/时间戳 定义 ROWKEY:等价关系型数据库的主键id 列簇:将IO操作特性相似的列归为一个簇 Hbase底层会以列簇为单位索引数据 列:列簇/列名/列值/时间戳构成 时间戳:用于记录Hbase中数据的版本 一般系统会自动指定为插入数据时间 3.Shell命令-掌握 Namespace-数据库 修改namespace:alter_namespace 创建namespace:create_namespace

HBase: Records returned where field is not present

自古美人都是妖i 提交于 2020-01-13 20:20:51
问题 I have a person table in HBase like below - ROW_KEY COLUMN+CELL dinesh column='details:code',value=dr-01 dinesh column='status:is_error',value=false dinesh column='time:date_created',value=1553747864740 dinesh column='time:last_updated',value=1553747864740 alex column='details:code',value=al-01 alex column='time:date_created',value=1553747786521 alex column='time:last_updated',value=1553747786521 I want to fetch only the records where is_error field is false. This attribute will be present

Unable to see columns in Phoenix View

回眸只為那壹抹淺笑 提交于 2020-01-13 19:09:37
问题 I have a tweet table in HBase,Please find below it's description using hbase describe tweet {NAME => 'tweets', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICAT ION_SCOPE => '0', COMPRESSION => 'GZ', VERSIONS => '1', TTL => 'FOREVER', MIN_VE RSIONS => '0', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'} and created it's corresponding view in Phoenix as CREATE VIEW "tweets" ( pk VARCHAR PRIMARY KEY,"tweets".fromuser VARCHAR ); But