Hbase
文章平均质量分 66
L.ZZ
这个作者很懒,什么都没留下…
展开
-
HBase入门教程
转自:https://blog.csdn.net/nosqlnotes/article/details/79647096 这是HBase入门系列的第1篇文章,介绍HBase的数据模型、适用场景、集群关键角色、建表流程以及所涉及的HBase基础概念,本文内容基于HBase 2.0 beta2版本。本文既适...转载 2019-02-27 11:18:50 · 6288 阅读 · 1 评论 -
轻松理解Hbase面向列的存储
1. 前言从严格的列式存储的定义来看,Hbase并不属于列式存储,有人称它为面向列的存储,请各位看官注意这一点。1.1 行式存储传统的数据库是关系型的,且是按行来存储的。如下图:其中只有张三把一行数据填满了,李四王五赵六的行都没有填满。因为这里的行结构是固定的,每一行都一样,即使你不用,也必须空到那里,而不能没有。1.2 列式存储为了与传统的区别,新型数据库叫做非关系型数据库,是按列来存储的。如下图:初次看列式存储稍微有点懵,下面给出行存与列存的转换:原来张三的一列(单元格)数据对应现在转载 2021-08-28 10:20:41 · 872 阅读 · 0 评论 -
HBase 常用Shell命令
1. 进入hbase shell console$HBASE_HOME/bin/hbase shell如果有kerberos认证,需要事先使用相应的keytab进行一下认证(使用kinit命令),认证成功之后再使用hbase shell进入可以使用whoami命令可查看当前用户hbase(main)> whoami2. 表的管理2.1 查看有哪些表hbase(main)>...转载 2019-11-21 15:30:19 · 253 阅读 · 0 评论 -
HBase基础
1. 前言HBase是一个分布式的、面向列的开源数据库。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。1.1 HBase表的特点大:一个表可以有有数以十亿行,上百万列面向列:面向列(族)的存储和权限访问,列(族)独立索引稀疏:对于未空(null)的列,并不...转载 2019-11-21 14:13:00 · 447 阅读 · 0 评论 -
Spark DataFrame写入HBASE常用方式
Spark是目前最流行的分布式计算框架,而HBase则是在HDFS之上的列式分布式存储引擎,基于Spark做离线或者实时计算,数据结果保存在HBase中是目前很流行的做法。例如用户画像、单品画像、推荐系统等都可以用HBase作为存储媒介,供客户端使用。因此Spark如何向HBase中写数据就成为很重要的一个环节了。本文将会介绍三种写入的方式。代码在spark 2.2.0版本亲测。1. 基于...转载 2019-02-27 13:50:04 · 350 阅读 · 0 评论 -
Phoenix开启对Hbase中的namespace及二级索引的支持
1. 开启schema与namespace的对应关系如果使用了hbase中的自定义namespace,不仅仅使用default,那么在phoenix中与之对应的是schema的概念,但是默认并没有开启,需要在hbase-site.xml中增加以下配置项: <property> &am原创 2019-02-27 13:53:20 · 751 阅读 · 1 评论 -
浅谈HBase的数据分布
浅谈HBase的数据分布摘要:HBase的rowkey设计一直都是难点和痛点,不合适的rowkey设计会导致读写性能、吞吐不佳等诸多问题。本文从数据分布问题展开,介绍HBase基于Range的分布策略与region的调度问题,详细讨论了rowkey的比较规则及其应用,希望能够加深用户对HBase数据分布机制和rowkey的理解,从而做出更合适的设计,精准、高效的使用HBase。数据分布问题...转载 2019-02-27 14:00:16 · 583 阅读 · 0 评论 -
HBase学习之路 (七)HBase 原理
目录系统架构物理存储整体的物理结构StoreFile 和 HFile 结构MemStore 和 StoreFileHbase WAL HLog预写Region 寻址机制老的 Region 寻址方式新的 Region 寻址方式 读写过程 读请求过程 写请求过程RegionServer 工作机制Region 分配RegionServer 上线RegionSer...转载 2019-02-27 14:00:24 · 153 阅读 · 0 评论 -
HBase RegionServer挂掉问题分析
0. 前言HBase在使用中会遇到非常多的问题,最为常见的就是HBase regionserver挂掉(此文中简称regionserver为RS),而RS挂掉的原因各不相同。在本文中对遇到过的HBase RS挂掉的情况做一个简单的整理。1. HBase集群预留内存不足现象:HBase RS在起来1-2min后马上挂掉日志为如下日志段的重复:Mon Aug 6 10:23:54 CST...转载 2019-02-27 14:02:10 · 2174 阅读 · 0 评论 -
hbase balance命令走过的坑
1.前言balance主要有四个命令:balance_switch, balancer, balancer_enabled ,balance_rsgroup(如果开启了rsgroup)2. balance_switchhbase帮助信息:hbase(main):001:0> help 'balance_switch'Enable/Disable balancer. Returns...转载 2019-02-27 14:03:00 · 1861 阅读 · 1 评论 -
HBase原理-RegionServer宕机数据恢复
1. 前言HBase采用类LSM的架构体系,数据写入并没有直接写入数据文件,而是会先写入缓存(Memstore),在满足一定条件下缓存数据再会异步刷新到硬盘。为了防止数据写入缓存之后不会因为RegionServer进程发生异常导致数据丢失,在写入缓存之前会首先将数据顺序写入HLog中。如果不幸一旦发生RegionServer宕机或者其他异常,这种设计可以从HLog中进行日志回放进行数据补救,保证...转载 2019-02-27 14:05:08 · 710 阅读 · 0 评论 -
HBase原理-数据读取流程解析
1. 前言和写流程相比,HBase读数据是一个更加复杂的操作流程,这主要基于两个方面的原因:其一是因为整个HBase存储引擎基于LSM-Like树实现,因此一次范围查询可能会涉及多个分片、多块缓存甚至多个数据存储文件;其二是因为HBase中更新操作以及删除操作实现都很简单,更新操作并没有更新原有数据,而是使用时间戳属性实现了多版本。删除操作也并没有真正删除原有数据,只是插入了一条打上”delet...转载 2019-02-27 14:06:09 · 684 阅读 · 0 评论 -
Hbase中Region/Store/StoreFile/Hfile之间的关系
Region/Store/StoreFile/Hfile之间的关系1. Regiontable在行的方向上分隔为多个Region。Region是HBase中分布式存储和负载均衡的最小单元,即不同的region可以分别在不同的Region Server上,但同一个Region是不会拆分到多个server上。Region按大小分隔,表中每一行只能属于一个region。随着数据不断插入表,reg...原创 2019-05-07 16:41:55 · 11457 阅读 · 2 评论 -
Phoenix边讲架构边调优
一 基础架构详解1  概念讲调优之前,需要大家深入了解phoenix的架构,这样才能更好的调优。Apache Phoenix在Hadoop中实现OLTP和运营分析,实现低延迟应用是通过结合下面两个优势:具有完整ACID事务功能的标准SQL和JDBC API的强大功能通过利用HBase作为后台存储,为NoSQL世界提供了late-bound, schema-on-r...转载 2019-02-27 11:34:16 · 1074 阅读 · 1 评论 -
Phoenix二级索引原理及Bulkload注意问题
Phoenix 索引生命周期原创 2019-12-10 14:02:42 · 3622 阅读 · 1 评论 -
Hbase优化之RowKey设计
1. 为什么要使用预分区HBase默认建表时有一个region,这个region的rowkey是没有边界的,即没有startkey和endkey。在数据写入时,所有数据都会写入这个默认的region。随着数据量的不断增加,这个默认的region会越来越大,当达到某个阈值会自动split成为2个region。2. 不使用预分区存在的问题写热点问题(所有新数据都往一个region上写);...原创 2019-02-27 11:29:23 · 874 阅读 · 1 评论 -
Hbase优化之预分区设计
1. 背景HBase建表时默认只有一个region,这个region的rowkey是没有边界的,即没有startkey和endkey。在数据写入时,所有数据都会写入这个默认的region。随着数据量的不断增加,这个默认的region会越来越大,当达到某个阈值会自动split成为2个region。此外,频繁的region split操作会严重影响Hbase集群的性能。所以,一般推荐在建表时进行预...原创 2019-02-27 14:12:17 · 370 阅读 · 0 评论 -
Hbase 出现 org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet 错误
1. 错误描述ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet at org.apache.hadoop.hbase.master.HMaster.checkServiceStarted(HMaster.java:2372) at org.apach...原创 2019-02-27 14:16:45 · 6214 阅读 · 1 评论 -
Hbase容错和恢复
1. HLogFileHLog文件就是一个普通的Hadoop Sequence File,Sequence File 的Key是HLogKey对象,HLogKey中记录了写入数据的归属信息,除了table和region名字外,同时还包括 sequence number和timestamp,timestamp是“写入时间”,sequence number的起始值为0,或者是最近一次存入文件系统中s...原创 2019-02-27 14:13:24 · 257 阅读 · 0 评论 -
剖析HBase负载均衡和性能指标
1.概述在分布式系统中,负载均衡是一个非常重要的功能,在HBase中通过Region的数量来实现负载均衡,HBase中可以通过hbase.master.loadbalancer.class来实现自定义负载均衡算法。下面将为大家剖析HBase负载均衡的相关内容以及性能指标。2.内容在HBase系统中,负载均衡是一个周期性的操作,通过负载均衡来均匀分配Region到各个RegionServer上...转载 2019-02-27 14:13:34 · 407 阅读 · 0 评论 -
HBase原理 - 数据写入流程解析
HBase - 数据写入流程解析 众所周知,HBase默认适用于写多读少的应用,正是依赖于它相当出色的写入性能:一个100台RS的集群可以轻松地支撑每天10T的写入量。当然,为了支持更高吞吐量的写入,HBase还在不断地进行优化和修正,这篇文章结合0.98版本的源码全面地分析HBase的写入流程,全文分为三个部分,第一部分介绍客户端的写入流程,第二部分介绍服务器端...转载 2019-02-27 14:14:36 · 2176 阅读 · 0 评论 -
Hbase regions在RegionServer上迁移原理解析
1. 前言当Hbase集群中某个RegionServer挂掉之后,Hbase是如何把这台server上的regions迁移到其它的RegionServer上的呢?要弄清楚这个问题,首先要了解Hbase中Region的寻址机制,在此基础上来理解regions在RegionServer之间迁移的原理。2. Region 寻址机制在Hbase中,读写操作都在 RegionServer 上发生,每个...原创 2019-02-27 14:17:41 · 3336 阅读 · 1 评论 -
Scala操作Hbase空指针异常java.lang.NullPointerException处理
Hbase版本:Hortonworks Hbase 1.1.2问题描述:使用Scala操作Hbase时,发生空指针异常(java.lang.RuntimeException: java.lang.NullPointerException),异常如下:18/09/13 20:28:51 ERROR Executor: Exception in task 1.0 in stage 361....原创 2019-02-27 11:23:56 · 1538 阅读 · 1 评论 -
Hortonworks的开源框架SHC的使用(一)
1. 软件准备shc源码包下载地址:https://github.com/hortonworks-spark/shc/releases2. 编译源码包(1) 解压源码包,修改项目根目录下的pom文件根据自己使用的版本修改各组件的版本号,以下是我修改后的pom文件:```<groupId>com.hortonworks</groupId>转载 2019-02-27 11:24:17 · 678 阅读 · 0 评论 -
Hortonworks的开源框架SHC的使用(二)
shc测试环境的搭建参考:spark读写HBase之使用hortonworks的开源框架shc(一):源码编译以及测试工程创建读写HBase需要两个核心的元素:用户描述数据结构的schema字符串与schema字符串相对应的实体类1. 定义schema字符串object Catalog { val schema = s"""{ | &a转载 2019-02-27 11:24:30 · 174 阅读 · 0 评论 -
HBase RowKey设计原则
1. Hbase中定位一条数据对于关系型数据库,数据定位可以理解为“二维坐标”;但是hbase中需要四维来定位一个单元格,即[行健、列族、列限定符、时间戳]2. 什么是热点?HBase中的行是按照rowkey的字典顺序排序的,这种设计优化了scan操作,可以将相关的行以及会被一起读取的行存取在临近位置,便于scan。然而糟糕的rowkey设计是热点的源头。 热点发生在大量的client直接访...转载 2019-02-27 11:25:02 · 123 阅读 · 0 评论 -
Hbase优化之二级索引
1. 为什么需要用二级索引?对于HBase而言,如果想精确地定位到某行记录,唯一的办法是通过rowkey来查询。如果不通过rowkey来查找数据,就必须逐行地比较每一列的值,即全表扫瞄。对于较大的表,全表扫描的代价是不可接受的。但是,很多情况下,需要从多个角度查询数据。例如,在定位某个人的时候,可以通过姓名、身份证号、学籍号等不同的角度来查询,要想把这么多角度的数据都放到rowkey中几乎不可能...原创 2019-02-27 11:25:38 · 780 阅读 · 1 评论 -
Phoenix性能优化常用手段
1. 建表优化Salting 翻译成中文是加盐的意思,本质是在hbase的rowkey的byte数组的第一个字节位置设定一个系统生成的byte值, 这个byte值是由主键生成rowkey的byte数组做一个哈希算法,计算得来的。Salting之后可以把数据分布到不同的region上,这样有利于phoenix并发的读写操作。示例:CREATE TABLE TEST (HOST VARCHAR ...转载 2019-02-27 11:27:49 · 2282 阅读 · 1 评论 -
Phoenix使用SALT_BUCKETS创建预分区
1. 基础知识Phoenix Salted Table是phoenix为了防止hbase表rowkey设计为自增序列而引发热点region读和热点region写而采取的一种表设计手段。通过在创建表的时候指定SALT_BUCKETS来实现pre-split(预分割)。如下表示创建表的时候将表预分割到20个region里面。CREATE TABLE SALT_TEST (a_key VARCHAR...原创 2019-02-27 11:28:09 · 824 阅读 · 1 评论