hbase

HBase之rowkey设计原则和方法

↘锁芯ラ 提交于 2020-01-10 17:46:35
rowkey设计原则和方法 rowkey设计首先应当遵循三大原则: rowkey长度原则 rowkey是一个二进制码流,可以为任意字符串,最大长度为64kb,实际应用中一般为10-100bytes,它以byte[]形式保存,一般设定成定长。 一般越短越好,不要超过16个字节,注意原因如下: 1、目前操作系统都是64位系统,内存8字节对齐,控制在16字节,8字节的整数倍利用了操作系统的最佳特性。 2、hbase将部分数据加载到内存当中,如果rowkey过长,内存的有效利用率就会下降。 rowkey散列原则 如果rowkey按照时间戳的方式递增,不要将时间放在二进制码的前面,建议将rowkey的高位字节采用散列字段处理,由程序随即生成。低位放时间字段,这样将提高数据均衡分布,各个regionServer负载均衡的几率。 如果不进行散列处理,首字段直接使用时间信息,所有该时段的数据都将集中到一个regionServer当中,这样当检索数据时,负载会集中到个别regionServer上,造成热点问题,会降低查询效率。 rowkey唯一原则 必须在设计上保证其唯一性,rowkey是按照字典顺序排序存储的,因此,设计rowkey的时候,要充分利用这个排序的特点,将经常读取的数据存储到一块,将最近可能会被访问的数据放到一块。但是这里的量不能太大,如果太大需要拆分到多个节点上去。

整合phoenix4.6.0-HBase-1.0到cdh5..4.7 编译phoenix4.6源码 RegionServer 宕机

纵然是瞬间 提交于 2020-01-10 15:54:05
Phoenix 集成HBase Phoenix 版本:phoenix-4.6.0-HBase-1.0 源码下载地址: http://apache.cs.uu.nl/phoenix/phoenix-4.6.0-HBase-1.0/src/phoenix-4.6.0-HBase-1.0-src.tar.gz 应用下载地址: http://apache.cs.uu.nl/phoenix/phoenix-4.6.0-HBase-1.0/bin/phoenix-4.6.0-HBase-1.0-bin.tar.gz HBase 版本:1.0.0-cdh5.4.7 JDK 版本:1.7.0_45 Phoenix 编译 1、下载源码: 下载源码解压后需要修改文件有pom.xml、LocalIndexMerger.java、 IndexSplitTransaction.java 。 1.1、Pom.xml位于phoenix-4.6.0-HBase-1.0-src 下 1.2、 LocalIndexMerger.java位于phoenix-4.5.0-HBase-1.0-src/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver 1.3、 IndexSplitTransaction.java 位于 phoenix-4.5

Snapshots常用命令

时光怂恿深爱的人放手 提交于 2020-01-10 15:28:00
HBase Snapshots允许你对一个表进行快照(即可用副本),它不会对Region Servers产生很大的影响,它进行复制和 恢复操作的时候不包括数据拷贝。导出快照到另外的集群也不会对Region Servers产生影响。 下面告诉你如何使用Snapshots功能 1.开启快照支持功能,在0.95+之后的版本都是默认开启的,在0.94.6+是默认关闭 <property> <name>hbase.snapshot.enabled</name> <value>true</value> </property> 2.给表建立快照,不管表是启用或者禁用状态,这个操作不会进行数据拷贝 $ ./bin/hbase shell hbase> snapshot 'myTable', 'myTableSnapshot-122112' 3.列出已经存在的快照 $ ./bin/hbase shell hbase> list_snapshots 4.删除快照 $ ./bin/hbase shell hbase> delete_snapshot 'myTableSnapshot-122112' 5.从快照复制生成一个新表 $ ./bin/hbase shell hbase> clone_snapshot 'myTableSnapshot-122112', 'myNewTestTable' 6

初识 HBase

此生再无相见时 提交于 2020-01-10 14:58:38
HBase简介 对大数据领域有一定了解的小伙伴对HBase应该不会陌生,HBase是Apache基金会开源的一个分布式非关系型数据库,属于Hadoop的组件。它使用Java编写,需运行于HDFS文件系统之上。HBase与Hadoop中的其他组件一样,可以运行在廉价硬件上,并可提供数10亿行 X 数百万列的大数据存储、管理能力,以及随机访问和实时读/写能力。HBase的设计模型参考了Google的 Bigtable ,可以说是Bigtable的开源实现版本。 HBase特性 数据容量大 ,单表可以有百亿行、百万列,数据矩阵横向和纵向两个维度所支持的数据量级都非常具有弹性 多版本 ,每一列存储的数据可以有多个version 稀疏性 ,为空的列并不占用存储空间,表可以设计的非常稀疏 读写强一致 ,非 “最终一致性” 的数据存储,使得它非常适合高速的计算聚合 自动分片 ,通过Region分散在集群中,当行数增长的时候,Region也会自动的切分和再分配 Hadoop/HDFS集成 ,和HDFS开箱即用,不用太麻烦的衔接。扩展性强,只需要增加DataNode就可以增加存储空间 丰富的“简洁,高效”API ,提供了Thrift/REST API,Java API等方式对HBase进行访问 块缓存 , 布隆过滤器 ,可以高效的列查询优化 操作管理 ,Hbase提供了内置的web界面来操作

七(1)、HBase遇到的问题

岁酱吖の 提交于 2020-01-10 14:17:58
1、启动cdh的时候,HBase master启动不了,日志报错: Failed get of master address: java.io.IOException: Can't get master address 后面启动了httpd就可以正常启动HBase master了 来源: CSDN 作者: Angular_need 链接: https://blog.csdn.net/Angular_need/article/details/89332960

熟悉常用的HBase操作,编写MapReduce作业

谁说胖子不能爱 提交于 2020-01-10 12:59:34
1. 以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据: 学生表(Student)(不包括最后一列) 学号(S_No) 姓名(S_Name) 性别(S_Sex) 年龄(S_Age) 课程(course) 2015001 Zhangsan male 23 2015003 Mary female 22 2015003 Lisi male 24 数学(Math)85 cd /usr/local/hadoop ./sbin/start-dfs.sh cd /usr/local/hbase ./bin/start-hbase.sh hbase shell create 'Student',{NAME=>'S_No',VERSIONS=>5},{NAME=>'S_Name',VERSIONS=>5},{NAME=>'S_Sex',VERSIONS=>5},{NAME=>'S_Age',VERSIONS=>5} put 'Student','2015001','sname','Zhangsan' put 'Student','2015001','ssex','male' put 'Student','2015001','sage','23' put 'Student','2015002','sname','Mary' put 'Student','2015002',

Hbase的flush机制

拥有回忆 提交于 2020-01-10 07:31:06
Hbase Flush机制 最小Flush单元为HRegion,尽量减少CF数量以减少HStrore数量从而减少MemStore的数量,最终减少每次Flush的开销。 1.Region级别触发条件: a) hbase.hregion.memstore.flush.size Region中任意MemStore大小达到上限(默认128MB),触发Memstore,flush该region。 b) hbase.hstore.blockingStoreFiles 默认值:7 当前region的Storefile总数超过阈值,则该Region会block所有写请求进行compaction,以减少storefile数量直到完成一次存储文件的合并,或者阻塞到hbase.hstore.blockingWaitTime 超时才解除block。 当该region的一个store的storefile大小之和,即一个store的大小超过hbase.hregion.max.filesize时,这个region会被拆分。slit的入口在memstore flush操作之后,HRegion写入新的Hfile或者HStore刚刚进行完compact操作后, HBase就会调用CompactSplitThread.requestSplit判断是否需要split操作。这个判断如下:

熟悉常用的HBase操作,编写MapReduce作业

ぃ、小莉子 提交于 2020-01-10 05:47:10
1. 以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据: 学生表(Student)(不包括最后一列) 学号(S_No) 姓名(S_Name) 性别(S_Sex) 年龄(S_Age) 课程(course) 2015001 Zhangsan male 23 2015003 Mary female 22 2015003 Lisi male 24 数学(Math)85 2. 用Hadoop提供的HBase Shell命令完成相同任务: 列出HBase所有的表的相关信息;list 在终端打印出学生表的所有记录数据; 向学生表添加课程列族; 向课程列族添加数学列并登记成绩为85; 删除课程列; 统计表的行数;count 's1' 清空指定的表的所有记录数据;truncate 's1' 3. 用Python编写WordCount程序任务 程序 WordCount 输入 一个包含大量单词的文本文件 输出 文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词和频数之间有间隔 编写map函数,reduce函数 将其权限作出相应修改 本机上测试运行代码 放到HDFS上运行 下载并上传文件到hdfs上 用Hadoop Streaming命令提交任务 create 'Student', ' S_No ','S_Name', ’S_Sex’,

HBase存储剖析与数据迁移

拈花ヽ惹草 提交于 2020-01-10 02:55:42
1.概述   HBase的存储结构和关系型数据库不一样,HBase面向半结构化数据进行存储。所以,对于结构化的SQL语言查询,HBase自身并没有接口支持。在大数据应用中,虽然也有SQL查询引擎可以查询HBase,比如Phoenix、Drill这类。但是阅读这类SQL查询引擎的底层实现,依然是调用了HBase的Java API来实现查询,写入等操作。这类查询引擎在业务层创建Schema来映射HBase表结构,然后通过解析SQL语法数,最后底层在调用HBase的Java API实现。   本篇内容,笔者并不是给大家来介绍HBase的SQL引擎,我们来关注HBase更低层的东西,那就是HBase的存储实现。以及跨集群的HBase集群数据迁移。 2.内容   HBase数据库是唯一索引就是RowKey,所有的数据分布和查询均依赖RowKey。所以,HBase数据库在表的设计上会有很严格的要求,从存储架构上来看,HBase是基于分布式来实现的,通过Zookeeper集群来管理HBase元数据信息,比如表名就存放在Zookeeper的/hbase/table目录下。如下图所示: 2.1 Architecture   HBase是一个分布式存储系统,底层数据存储依赖Hadoop的分布式存储系统(HDFS)。HBase架构分三部分来组成,它们分别是:ZooKeeper

hbase shell 基本操作

◇◆丶佛笑我妖孽 提交于 2020-01-10 02:55:14
hbase shell 基本操作 启动HBASE [hadoop@master ~]$hbase shell 2019-01-24 13:53:59,990 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/home/hadoop/hbase/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/home/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple