之前的文章也提到过,最近工作中需要对HBase进行二次开发(参照HBase的AES加密方法,为HBase增加SMS4数据加密类型)。研究了两天,终于将开发流程想清楚并搭建好了debug环境,所以就迫不及待地想写篇文章分享给大家。
源码分析 的第一步就是要先编译好源代码,才能进行debug跟踪流程查看,本文总结了janusgraph源码编译的全流程!
我们常常会碰到需要迁移HBase数据的场景,当一个HBase集群运行较长时间后,往往数据量都会很大,HBase集群往往支撑的都是线上的业务,不像跑批的Hive/Spark集群,不能随便停机。HBase默认提供import/export方法支持备份和还原,而且支持增量,但是因为是使用HBase的API导出和还原数据,对RegionServer的压力会很大,往往会影响旧集群的在线业务。
本文介绍了HBase的WAL(Write Ahead Log)机制,包括其线程模型、多生产者单消费者模型以及日志落盘策略。HBase通过WAL机制将随机写转化为顺序写,提高了读写性能和可靠性。同时,WAL机制也保证了HBase的容错能力,即当发生故障时,可以从最近的备份中恢复数据。
以下是我修改后的两个子模块core和examples中的pom文件,只修改了version
关于如何阅读开源社区源码,最近陆续有同学过来问我这个问题。前段时间,在HBase技术交流群里,大家也讨论过一些零散的方法,但都不系统。借着这个问题,我也认真回顾了一下自己所用过的一些方法,觉的有必要整理出来,供大家参考。
如果重度依赖HBase,有必要对HBase源码进行深入理解,建议根据日志去找追踪源码!!!
该文档主要通过使用HBase快照导出历史全量数据并还原到新的HBase集群,然后改造源生的ExportSnapshot类,通过比较变化的文件实现导出增量,并最终实现HBase跨集群的增量备份和还原。
源码层面整理下我们常用的操作RDD数据处理与分析的函数,从而能更好的应用于工作中。
其中BusyRegionSplitPolicy是HBase-2.x新增的策略,其他6种在HBase-1.2.x中也可以使用。
关于上面的依赖包,如果在Ubuntu下,使用sudo apt-get install * 命令安装,如果在CentOS下,使用sudo yum install *命令来安装。
最近,在用Flink SQL批量写HBase,做调度。主要遇到了三个大坑,在接下来的三篇文章中逐个记录。三个大坑分别是,
导语:本文细致而全面地讲解使用flume输出数据到HBase的三种不同 Flume-Hbase-Sink 之间的差异性,以及技术细节。并且透彻而全面地总结了不同版本flume和HBase之间的兼容性问题。 为了更加详细说明三种不同hbasesink的差异性,本文在附录附上详细的源码解读。
摘要总结:本文主要介绍了如何在Java应用中操作HBase进行增删改查操作。主要包括了HBase的部署、HBase表的设计、HBase API的封装和调用、HBase的整合Spring Boot以及基于HBase的分布式事务等。同时,还通过一个具体的示例展示了如何在Spring Boot项目中整合HBase和Spring Data JPA,实现基于HBase的数据库操作功能。
该文介绍了 HBase 的 RPC 实现原理和调度过程,包括 RPC 的基本使用、HBase 的 RPC 框架、RPC 的调度过程以及重要的参数配置。
在分布式系统中,负载均衡是一个非常重要的功能,HBase通过Region的数量实现负载均衡,即通过hbase.master.loadbalancer.class实现自定义负载均衡算法。下面将为大家剖析HBase负载均衡的相关内容以及性能指标。
写博客也已经快一年了,从去年的1024到现在金秋10月已纷至沓来。回顾这一年所发布的原创文章,基本都是与大数据主流或者周边的技术为主。本篇博客,就为大家介绍几篇关于大数据领域必看的经典书籍,喜欢的小伙伴记得来发一键三连。
HBase是一个开源的NoSQL产品,它是实现了Google BigTable论文的一个开源产品,和Hadoop和HDFS一起,可用来存储和处理海量column family的数据。官方网址是:http://hbase.apache.org
自0.96版本之后,hbase 源码结构上做了很大的优化,目录结构也发生了变化,做了精简和优化,这里以0.98.8为例介绍,目录如下:
一,hbase的scan基本使用问题介绍 Hbase的Scan方法是基于Rowkey进行数据扫描的,过程中client会将我们的请求,转化为向服务端的RPC请求。那么这个时候我们可以考虑的优化,那么主要有一下三点: A,减少带宽(通过过滤器减少无用数据的 传输); B,减少RPC请求的次数; C,加缓存。 具体的转化为scan相关的操作如下: 1,scan可以设置过滤器 过滤器可以减少数据网络传输的数据量。 过滤器可以用来扫描ROWkey不连续的数据。 2,scan可以设置每批次的扫描行数 Scan.set
HBase提供了丰富的查询过滤功能。 比如说它提供了RegexStringComparator这样的函数,可以实现按照正则表达式进行过滤。它可以有效地弥补向前缀查询这样的机制,从而可以使hbase也支持了类似于like查询之类的功能。 然而在实践过程中,很多人都会遇到一个问题,对于里面的正则表达式没有过于详细的介绍,一直以为是直接从JAVA等一些标准的正则表达式演化过来。直接拿过来用就可以。 但是,这只是美好的猜测而已。 如stackoverflow上的这篇问题一样。http://stackoverflow
为什么要做数据治理?业务繁多,数据繁多,业务数据不断迭代。人员流动,文档不全,逻辑不清楚,对于数据很难直观理解,后期很难维护。
Spark是目前最流行的分布式计算框架,而HBase则是在HDFS之上的列式分布式存储引擎,基于Spark做离线或者实时计算,数据结果保存在HBase中是目前很流行的做法。例如用户画像、单品画像、推荐系统等都可以用HBase作为存储媒介,供客户端使用。 因此Spark如何向HBase中写数据就成为很重要的一个环节了。本文将会介绍三种写入的方式,其中一种还在期待中,暂且官网即可... 代码在spark 2.2.0版本亲测 1. 基于HBase API批量写入 第一种是最简单的使用方式了,就是基于RDD的分区
最近工作需要使用到Spark操作Hbase,上篇文章已经写了如何使用Spark读写Hbase全量表的数据做处理,但这次有所不同,这次的需求是Scan特定的Hbase的数据然后转换成RDD做后续处理,简单的使用Google查询了一下,发现实现方式还是比较简单的,用的还是Hbase的TableInputFormat相关的API。 基础软件版本如下: 直接上代码如下: 上面的少量代码,已经完整实现了使用spark查询hbase特定的数据,然后统计出数量最后输出,当然上面只是一个简单的例子,重要的是能把hbase数
在hudi中,hbase可以作为索引数据的存储,hudi默认使用的hbase版本为1.2.3。
HBase客户端API提供了Write Buffer的方式,即批量提交一批Put对象到HBase服务端。本文将结合HBase相关源码,分析如何在实际项目中合理设置和使用它。
Atlas官网没有提供Atlas的安装包,需要下载Atlas的源码后编译安装,下载Atlas源码需要登录Atlas官网下载Atlas:https://atlas.apache.org/#/Downloads,选择2.1.0版本:
Spark连接HBase实现查询的操作有好多种步骤,其中常用的是直接调用Hbase本身提供的写入和读出的接口。 然而不少人在此基础上进行了各种封装,有的支持spark sql on Hbase,著名如
最近公司大数据集群统一升级了 kerberos,那原先 的opentsdb就不能使用了,需要使用keytab方式登陆验证。
从上图可以看到zk中/Hbase/replication/rs的节点信息无法获取,然后我们立马去检查zk日志发现zk已经全部断联而且已经瘫痪,截图如下:
HBase官方提供了基于Mapreduce的批量数据导入工具:Bulk load和ImportTsv。关于Bulk load大家可以看下我另一篇博文。
有需求了解一下Opentsdb的源码,然后想着能在本地run起来,打些断点和日志来跟一下,然后兴致勃勃去网上找了资料看看能否快速run起来,但是发现所有的博客、文档啥的好像都来自同一出处,而且最后run起来也是很模糊,按教程我还是没成功。于是自己摸索着,慢慢解决问题run了起来,然后记录一下,希望对想要学习opentsdb的同学有帮助。转载的话麻烦注明出处~
1,执行命令安装一些依赖组件 yum install -y hadoop-lzo lzo lzo-devel hadoop-lzo-native lzop 2, 下载lzo的源码包并解压 wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz tar -zxvf lzo-2.09.tar.gz 3,在当前目录新建一个lzo目录,存储编译后的lzo文件 进入lzo-2.09目录 依次执行命令: expor
之前对于使用Phoenix查询Hbase大表数据一直卡死,于是搁置了好久,昨晚终于尝试了一下,完美搞定,本节文章来使用4种方法对比Hbase查询性能。
1、为何要 BulkLoad 导入?传统的 HTableOutputFormat 写 HBase 有什么问题? 我们先看下 HBase 的写流程: 通常 MapReduce 在写HBase时使
一、实验环境 3台CentOS release 6.4虚拟机,IP地址为 192.168.56.101 master 192.168.56.102 slave1 192.168.56.103 slave2 hadoop 2.7.2 hbase 1.1.4 hive 2.0.0 zookeeper 3.4.8 kylin 1.5.1(一定要apache-kylin-1.5.1-HBase1.1.3-bin.tar.gz包) master作为hadoop的NameNode、SecondaryNameNode、ResourceManager,hbase的HMaster slave1、slave2作为hadoop的DataNode、NodeManager,hbase的HRegionServer 同时master、slave1、slave2作为三台zookeeper服务器
一,基本功能介绍 -root-表在HBase 0.9.6以后的版本被移除了。 Hbase 0.9.6以前,三个重要信息: 1,-root-表的位置存储在Zookeeper上(只会存在一个regionserver上),内容是.meta表的存储信息 2,.meta表存储在一个regionserver上,存储的是用户的表的region信息,用户表越大,这个表的region会越多,进而会分布到不同的regionserver。 3,用户的表信息,用户表示存储在各个regionserver上。 Hbase 0.9.6以
Spark支持多种数据源,但是Spark对HBase 的读写都没有相对优雅的api,但spark和HBase整合的场景又比较多,故通过spark的DataSource API自己实现了一套比较方便操作HBase的API。
regionserver服务端使用的ReadQueues,WriteQueues,ScanQueues来代替传统线程池处理客户端读写请求,每个对列都有对等比例的线程hbase.regionserver.handler.count消费队列,负载均衡策咯比如ReadQueues使用的随机策咯getNextQueue.ThreadLocalRandom.current().nextInt(queueSize)
近期着手的一个项目需要将我方数据存储到Hadoop的大数据环境,由于本人是.net平台的开发者,没有怎么接触过大数据(因为他实在是太高大尚了)。但还好baidu, google后,还是很找到了解决办法,就是C#写数据到hbase,然后大数据开发者在从hbase读取数据进行多维度处理,如将一部分历史数据转移到hive,或者是将一部分数据推送到机器学习库进行学习。
JanusGraph设计的目的是处理大图,单机无论是在存储和计算能力上都无法满足大图处理。大规模图实时计算和分析是JanusGraph最基本的优势。本节将讨论更多JanusGraph特有的优势以及它底层支持的存储方案。
前两种方式:需要频繁的与数据所存储的 RegionServer 通信,一次性导入大量数据时,可能占用大量 Regionserver 资源,影响存储在该 Regionserver 上其他表的查询。
前面一篇文章介绍了Kafka的具体内容,今天讲述一下HBase相关的知识。首先HBase作为大数据发展初期伴随Google三大论文问世的一个组件,在今天依旧被广泛的应用,今天我们来仔细的分析一下HBase的内部原理,了解一下HBase的具体内幕,以便在工作中更好使用它。以下内容涉及到的源码基于HBase 的Master分支编译出的最新的3.0.0版本。
安全组没开放端口是原罪!!!导致好多BUG费时费力。Hbase悄悄咪咪的用了好多端口,比如被我抓到的42239,直接搜索报错药不对症。
领取专属 10元无门槛券
手把手带您无忧上云