
HBase
行思坐忆,志凌云
务实北斗应用之星火,畅想北斗产品之燎原
展开
-
基于Java讲述HBase连接池技术
先看官方文档的总体描述:hbase有两种获得connection的方法,分别是如下两种: Connection connection = ConnectionFactory.createConnection(c...转载 2020-01-09 13:41:59 · 538 阅读 · 0 评论 -
hbase高性能读取数据(多线程+get(list))
前言:因业务需要,对hbase的读取性能进行研究与优化,现有网上的资料良莠不齐,写的不够清晰,对于初学者而言,很难实现高性能读取habse数据,自己整合资料,耗费一个多星期,完成了hbase高性能读取数据,当然本程序依旧有很大的优化空间,java多线程这一个点就是值得深入思考的经典问题。hbase读取数据方式:1、依旧rowkey查找数据 // 根据rowkey查找数据 publi...原创 2019-03-13 10:32:51 · 5504 阅读 · 0 评论 -
hbase重要调优(GC策略,flush,compact,split)
一:GC的调优1.jvm的内存 新生代:存活时间较短,一般存储刚生成的一些对象 老年代:存活时间较长,主要存储在应用程序中生命周期较长的对象 永久代:一般存储meta和class的信息 2.GC策略 Parrallel New Collector,垃圾回收策略 并行标记回收器(Concurrent Mark-Sweep Coll...转载 2019-03-21 16:56:58 · 246 阅读 · 0 评论 -
win7服务器单机模式安装hbase
在Win7以单机模式后安装好hadoop(参见前文 《Win7 64位系统上Hadoop单机模式的安装及开发环境搭建》),下面开始设置HBase的单机模式,HBase是一种类似Google BigTable的列式数据库,其底层存储可以使用HDFS,但也可以使用普通文件系统HBase安装步骤1:下载HBase 1.2.6:https://mirrors.tuna.tsinghua.edu.c...转载 2019-04-11 11:01:14 · 221 阅读 · 0 评论 -
hbase查询过程
HBaseConfiguration -> HTable -> RegionServers ->ROOT -> MATA ->对应的regionHBase客户端的 HTable类负责寻找相应的RegionServers来处理行。他是先查询 .META. 和 -ROOT 目录表。然后再确定region的位置。定位到所需要的区域后,客户端会直接 去访问相应的regi...原创 2019-03-29 09:17:09 · 721 阅读 · 0 评论 -
Zstd、GZip、Snappy等几种压缩方式时间效率对比
ZSTD 解压缩方式的时间与设置的非压缩的原数据大小有关小文件:KB级别,执行1000次普通文件:kb级别,执行100次大文件:4M+,执行10次ZSTD:解压缩分配空间等于压缩后的大小*5源码地址:https://github.com/L-Angel/compress-demo结论:Zstd压缩方式压缩比确实要高一些,对于小文件,在耗时上Zstd明显要好于其他的压缩方式,对于大...转载 2019-04-08 15:23:58 · 8684 阅读 · 1 评论 -
HBASE未来可期的数据压缩算法之ZSTD
tl;dr(太长不读):zstd是Facebook在2016年开源的新无损压缩算法,优点是压缩率和压缩/解压缩性能都很突出。在我们测试的文本日志压缩场景中,压缩率比gzip提高一倍,压缩性能与lz4、snappy相当甚至更好,是gzip的10倍以上。zstd还有一个特别的功能,支持以训练方式生成字典文件,相比传统压缩方式能大大的提高小数据包...转载 2019-04-08 17:05:59 · 1711 阅读 · 0 评论 -
Hbase Table already exists
问题描述:前端时间用pinpoint采集数据保存到Hbase,脏数据比较多,想清空数据库重新测试,发现Hbase清空表只能先删除表再重建,不能只清空数据;删除后重建表的时候就报Table already exists,用list查看发现表已经被删了,所以懵逼了~解...转载 2019-06-14 11:32:55 · 521 阅读 · 0 评论 -
hbase通过表名和rowkey获取列族下所有的列名
// public static ArrayList<String> getcolname(String rowkey,String tablename,String colf) throws IOException{ Get get = new Get(Bytes.toBytes(rowkey)); ArrayList<String> ...原创 2019-06-20 09:39:47 · 7447 阅读 · 3 评论 -
hadoop编译后安装目录分析,安装包在哪?
1.Hadoop编译后的文件目录(这是3.1.1支持zstd压缩版本)hadoop安装包所在地: hadoop-3.1.1-src/hadoop-dist/target/下,如下图2.hbase编译后的目录结构hbase安装包所在地:hbase-1.4.10\hbase-assembly\target下,如图:...原创 2019-07-18 09:30:00 · 747 阅读 · 0 评论 -
hbase支持zstd压缩(全网首发)
序言:hbase原生只支持gz压缩方式,很显然无法满足业务需求。现阶段hbase数据都是以hadoop作为存储容器,所以首先需要让hadoop支持zstd压缩。通过官网查看文档,hadoop3.X版本源码中有支持zstd的源码,所以一切就绪,只欠东风。第一步:编译Hadoop-3.1.1(在windows环境下坑太多,建议去Linux环境编译)参考我之前写的博客:https://blog.c...原创 2019-07-18 09:49:29 · 1680 阅读 · 3 评论 -
Hbase1.4.X服务报错(通过日志查看):splitting is non empty': Directory is not empty0
报错内容:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.fs.PathIsNotEmptyDirectoryException): `/hbase/WALs/XXXXX,60020,1553484690868-splitting is non empty’: Directory is not empty问题原因: ...原创 2019-07-19 10:53:00 · 1515 阅读 · 0 评论 -
hbase的thrift接口(thrift与thrift2的对比)
一、概述Hbase是目前比较火的列存储数据库,由于Hbase是用Java写的,因此它原生地提供了Java接口,对非Java程序人员,怎么办呢?幸好它提供了thrift接口服务器,因此也可以采用其他语言来编写Hbase的客户端,本文即是Hbase C++接口的介绍。目前的Hbase(0.94.11,本文即基于此版本)有两套thrift接口(可以叫thrift1和thrift2),它们并不兼容(...转载 2019-07-29 14:51:48 · 2756 阅读 · 0 评论 -
使用QT编写C++工程(通过Thrift)访问/操作/读写Hbase
背景:现项目需要使用c++连接hbase,但是网上资料参差不齐,没有完整的连接项目。通过自己整理与查阅资料,现整理步骤如下(windows环境):1、下载thrift,并配置环境变量2、用Thrift 生成访问Hbase所需的C++文件注意:使用thrift连接hbase有两种方式,分别对应thrift与thrift2(.thrift文件在hbase源码文件夹中,路径如下图)将.t...原创 2019-07-29 16:45:03 · 2026 阅读 · 0 评论 -
hbase表list不存在,但是创建时报错:已存在
原因是以前创建过这个表,但是hbase暴力删除了这个表后,zookeeper还保留了这个表的信息。在linux 下用hbase zkcli 命令进入ls /hbase/table 可以查看存在的表信息然后用命令rmr /hbase/table/表名 进入hbase shell 后就可以创建刚刚删除的...转载 2019-07-22 09:19:55 · 577 阅读 · 0 评论 -
hbase的thrift服务(thrift与thrift2)
一、概述Hbase是目前比较火的列存储数据库,由于Hbase是用Java写的,因此它原生地提供了Java接口,对非Java程序人员,怎么办呢?幸好它提供了thrift接口服务器,因此也可以...转载 2019-07-22 15:25:05 · 1934 阅读 · 0 评论 -
干货:HBASE性能(持续更新)
实际上说,hbase结构真的不复杂,相比传统的RDBMS来说,应该要简单。 HBASE整个物理层存储其实最后就是HFile,读内存block cache, 写缓存memstore, write buffer,客户端也能缓存rowkey位置信息。一、memstore客户端写数据先写入 memstore,默认为128M, 整个默认memstore大小为HEAP*0.4,现在假设你的 regio...翻译 2019-03-20 16:35:19 · 2645 阅读 · 0 评论 -
HBase版本memstore flush触发机制以及HRegionServer级别触发源码分析
一、Memstore存在的意义? 在HBase中,每个HRegionServer上有多个HRegion,每个HRegion上有多个HStore,而Memestore作为一个HStore的组成部分,当我们大量写操作发生的时候,如果超过了Memstore的设置阀值,就会执行flush到Hfile文件的操作。默认情况下hbase底层存储的文件系...转载 2019-03-20 11:05:40 · 998 阅读 · 0 评论 -
HBase详解
本文首先简单介绍了HBase,然后重点讲述了HBase的高并发和实时处理数据 、HBase数据模型、HBase物理存储、HBase系统架构,HBase调优、HBase Shell访问等。不过在此之前,你可以先了解 Hadoop生态系统 ,若想运行HBase,则需要先搭建好Hadoop集群环境,可以参考此文搭建5个节点的hadoop集群环境(CDH5) 。好了,让我们来学习HBase吧!HB...转载 2018-12-08 19:17:33 · 867 阅读 · 0 评论 -
HBASE优化--读表操作
本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法。有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客。下面是本文总结的第三部分内容:读表操作相关的优化方法。3. 读表操作3.1 多HTable并发读创建多个HTable客户端用于读操作,提高读数据的吞吐量,一个例子:static final Configuration conf = HBase...转载 2018-12-13 16:46:37 · 158 阅读 · 0 评论 -
hbase表结构设计研究
因为一直在做hbase的应用层面的开发,所以体会的比较深的一点是hbase的表结构设计会对系统的性能以及开销上造成很大的区别,本篇文章先按照hbase表中的rowkey、columnfamily、column、timestamp几个方面进行一些分析。最后结合分析如何设计一种适合应用的高效表结构。 1、表的属性&...转载 2018-12-10 11:20:08 · 229 阅读 · 0 评论 -
Hbase表结构设计
图片来自HBase企业应用…书籍 1 模式创建1.1 hbase模式结构 Hbase的模式结构包括表、RowKey、列族、Timestamp(时间版本)。其实模式是一个三维有序结构,前面三个维度确定一行数据。 Hbase的模式不同于关系型数据库(RDBMS),Hbase的单元格(cell)所在行是有序的,其列(Qual...转载 2018-12-10 11:21:49 · 471 阅读 · 0 评论 -
大数据之hbase的写数据过程详解
带着问题来寻找答案: 1.HBASE的读写过程就是HBASE的寻址过程 2.如何快速的寻找到地址? 3.为什么hbase可以快速的查询 写入数据? 4.Hbase的数据模型:底层存储的数据到底是怎么样的过程 ? 5.Hbase的数据模型设计:数据文件最终存储在hdfs的结构是怎么样的?并不是key value 客户端发起写数据请求 构建...转载 2018-12-11 16:02:29 · 566 阅读 · 0 评论 -
hbase批量入库的总结
最近这一段时间一直在研究hbase的批量入库,看似简单的问题其实埋着无数的坑...... 接下来就把我遇到的一些问题和解决的办法分享给大家,希望能让那些新接触到的人不至于像我一样走这么多弯路。 hbase一般的插入过程都使用HTable对象,将数据封装在Put对象中,Put在new创...转载 2018-12-11 16:22:06 · 2137 阅读 · 0 评论 -
HBase java 统计表行数
HBase统计表行数的方式如下:一、HBase自带MapReduce表行数统计RowCounter$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter ‘tableName’二、使用Scan与Filter的方式对表行数进行统计[java] view plain ...转载 2018-12-12 13:51:39 · 972 阅读 · 0 评论 -
HBASE获取表格的所有列族(java API)
前言:安装好hbase之后进入其lib文件夹,将所需要的jar包拷贝到web项目的lib文件夹之下,这样就不会出现jar包版本不同导致的相关问题。public static void getRowName(String tableName)throws IOException{ Table table=connection.getTable(TableName.valueOf(tabl...原创 2019-02-12 11:42:14 · 8694 阅读 · 1 评论 -
hbase在大数据上的应用举例
1. 游戏营销活动新渠道数据的实时性对于营销活动的效果有着十分明显的影响,由于数据延迟而带来的不良用户体验会导致玩家丧失继续参与活动的耐心从而使活动效果大打折扣。HBase在近几次营销活动(如炫舞拉新活动、天天酷跑新版预热活动、英雄联盟3周年活动、天天酷跑周年活动、英雄联盟拉新活动)中,从几十亿甚至百亿条数据中实时拉取数据的毫秒级响应,成为营销活动的一个新渠道。2. 广告日志处理广告成为互联...翻译 2019-02-28 13:50:18 · 487 阅读 · 0 评论 -
HBase表读写效率的技巧(持续更新)
一. 建表技巧1. 合理设计列族一张HBase表的列族数量最好控制在三个以内,因为当一个列族的MemStore中的数据量达到阈值时,会引起同一个region的所有columnFamily的MemStore进行flush操作,即使其中某些列族MemStore中的数据量还很小。因此,如果有很多列族的话,会产生许多小文件,可能会引起很多不必要的flush和compact操作,导致不必要的I/O负载。...翻译 2019-02-28 14:40:00 · 1306 阅读 · 0 评论 -
hbase表格实现数据压缩
压缩方式:压缩方式使用难易snappy需要手动安装snappyLZO需要手动安装lzoNONE自带,直接使用GZ自带,直接使用LZ4自带,直接使用使用方法:1、disable ‘table’2、更新表格命令alter 'table', NAME => 'f1', COMPRESSION => 'snappy'alte...原创 2019-02-28 15:37:23 · 1046 阅读 · 0 评论 -
HBase底层存储原理
首先HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式. 什么是BigTable:Bigtable是一个疏松的分布式的持久的多维排序的map,这个map被行键,列键,和时间戳索引.每一个值都是连续的byte数组.(A Bigtable is a sparse, distributed, pe...转载 2019-02-28 15:42:24 · 531 阅读 · 0 评论 -
HBase 数据导入 ImportTsv命令解析
命令格式:Usage: importtsv -Dimporttsv.columns=a,b,c 命令例子:hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="," -Dimporttsv.columns=HBASE_ROW_KEY,cf:name test /user/test1.csv命令解析...原创 2019-02-20 16:17:32 · 1187 阅读 · 2 评论 -
eclips连接另一台win7的虚拟机上的hbase数据库连接超时。
前提:ip可以互相ping通解决方案:1、将虚拟机里面的hosts文件增加虚拟机ip与主机名vim /etc/hosts#增加一行10.128.99.185 bsdroid.com2、将两台win7设备的hosts里面一样增加 10.128.99.185 bsdroid.comps:win7的hosts文件路径 C:\Windows\System32\drive...原创 2019-02-20 17:18:54 · 213 阅读 · 0 评论 -
Hbase存储及其原理详解
Hbase存储详解 started by chad walters and jim 2006.11 G release paper on BigTable 2007.2 inital Hbase prototype created as Hadoop contrib 2007.10 First useable Hbase 2008.1 Hadoop become Apache ...转载 2019-02-26 15:48:15 · 430 阅读 · 0 评论 -
Hbase 大表快速count
第一种比较简单,但是只适合小表进行count1.count命令最直接的方式是在hbase shell中执行count的命令可以统计行数。[html] view plain copyhbase> count ‘t1′&...转载 2018-12-12 14:17:01 · 1991 阅读 · 0 评论