hbase

HBase常用shell操作

无人久伴 提交于 2019-12-15 04:29:35
1、进入HBase客户端命令操作界面 bin/hbase shell 2、查看帮助命令 hbase(main):001:0> help 3、查看当前数据库中有哪些表 hbase(main):002:0> list 4、创建一张表 创建user表,包含info、data两个列族 hbase(main):010:0> create ‘user’, ‘info’, 'data’ 或者 hbase(main):010:0> create ‘user’, {NAME => ‘info’, VERSIONS => ‘3’},{NAME => ‘data’} 5、添加数据操作 向user表中插入信息,row key为rk0001,列族info中添加name列标示符,值为zhangsan hbase(main):011:0> put ‘user’, ‘rk0001’, ‘info:name’, 'zhangsan’ 向user表中插入信息,row key为rk0001,列族info中添加gender列标示符,值为female hbase(main):012:0> put ‘user’, ‘rk0001’, ‘info:gender’, 'female’ 向user表中插入信息,row key为rk0001,列族info中添加age列标示符,值为20 hbase(main):013:0> put

Phoenix二级索引原理及Bulkload注意问题

佐手、 提交于 2019-12-15 01:11:48
前言 最近在Hbase的使用过程中遇到了很多问题,通过各种查资料测试最终得到解决。趁此机会也对Hbase预分区及索引的原理作了一些较深入的学习,以便更好的使用Hbase及对数据库性能调优。 下面对Hbase的索引触发原理及Bulkload导入数据需注意的问题作了简要总结,希望能对大家起到一些帮助,共同学习进步。 1. Phoenix索引在Hbase中的存储形式 本文所说phoenix索引,默认都是指全局索引 使用phoenix为hbase中 表example 创建二级索引 INDEX_EXAMPLE 后,在Hbase或Phoenix中使用 list 或 !tables 命令查看当前表的时候,会发现多了数据库中多了一张原表对应的索引表。 phoenix索引表在Hbase中也是以表的形式存在,且该表的Row_key就是创建索引时的所有索引字段的拼接。当为多列建立索引时,rowkey实际上是这些column的组合,并且是按照它们的先后顺序的组合。 2. 多列索引的原理 在Phoenix中,我们可以为一张表的多个列(column)创建索引,但是在查询时必须要按照索引列的顺序来查询。例如,以下表为例: # 创建表 CREATE TABLE example ( row_key varchar primary key, col1 varchar, col2 varchar, col3

HBase常用shell操作

99封情书 提交于 2019-12-14 18:39:32
1、进入HBase客户端命令操作界面 bin/hbase shell 2、查看帮助命令 help 3、查看当前数据库中有哪些表 list 4、创建一张表 创建user表,包含info、data两个列族 create 'user' , 'info' , 'data' 或者 create 'user' , { NAME = > 'info' , VERSIONS = > '3' } , { NAME = > 'data' } 5、添加数据操作 向user表中插入信息,row key为rk0001,列族info中添加name列标示符,值为zhangsan put 'user' , 'rk0001' , 'info:name' , 'zhangsan' 向user表中插入信息,row key为rk0001,列族info中添加gender列标示符,值为female put 'user' , 'rk0001' , 'info:gender' , 'female' 向user表中插入信息,row key为rk0001,列族info中添加age列标示符,值为20 put 'user' , 'rk0001' , 'info:age' , '20' 向user表中插入信息,row key为rk0001,列族data中添加pic列标示符,值为picture put 'user' , 'rk0001' ,

阿里巴巴HBase高可用8年填坑实录

眉间皱痕 提交于 2019-12-14 17:21:17
前言 2011年毕玄和竹庄两位大神将HBase引入阿里技术体系,2014年接力棒转到东8区第一位HBase commiter天梧手中,多年来与淘宝、旺旺、菜鸟、支付宝、高德、大文娱、阿里妈妈等几乎全BU合作伙伴携手共进,支撑了双十一大屏、支付宝账单、支付宝风控、物流详情等核心业务。 2018年双十一,HBase全天处理请求2.4万亿行,单集群吞吐达到千万级别。从一个婴儿成长为青年,阿里HBase摔过很多次,甚至头破血流,我们在客户的信任之下幸运的成长,感激涕零。 2017年开始阿里HBase走向公有云,我们有计划的在逐步将阿里内部的高可用技术提供给外部客户,目前已经上线了同城主备,将作为我们后续高可用能力发展的一个基础平台。 本文分四个部分回顾阿里HBase在高可用方面的发展:大集群、MTTF&MTTR、容灾、极致体验,希望能给大家带来一些共鸣和思考。 大集群 一个业务一个集群在初期很简便,但随着业务增多会加重运维负担,更重要的是无法有效利用资源。 首先每一个集群都要有Zookeeper、Master、NameNode这三种角色,固定的消耗3台机器。其次有些业务重计算轻存储,有些业务重存储轻计算,分离模式无法削峰填谷。因此从2013年开始阿里HBase就走向了大集群模式,单集群节点规模达到700+。 隔离性是大集群的关键难题。保障A业务异常流量不会冲击到B业务,是非常重要的能力

连你也能看懂的大数据之Hadoop——Hbase,得之幸之

这一生的挚爱 提交于 2019-12-14 16:04:50
通过之前的介绍,我们了解了Hadoop框架下两个核心技术,我们发现这两个核心技术有一个共同的不足:操作数据延时性较高,不适合实时操作的场景。那么今天我们来看看Hadoop框架下可以实现实时读写访问的组件——Hbase。 工程师 什么是Hbase? 晓智 Hbase全称为Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 Hbase在Hadoop生态圈中的位置 通过之前的介绍我们了解到:MapReduce是Hadoop生态圈中的分布式计算框架,HDFS为Hadoop生态圈中的分布式文件存储的服务,那么Hbase在Hadoop框架中扮演着什么样的角色呢?简单来说,Hbase类似于传统的关系型数据库,是Hadoop框架中的结构化数据存储服务,是一种列式的分布式数据库。换言之:HDFS管理的是存放在多个硬盘上的数据文件,而Hbase管理的是类似于key—value映射的表。即便如此,Hbase的底层依旧依赖 HDFS 来作为其物理存储。 此外,Hbase的工作还需要zookeeper的协助,Zookeeper在此提供一些配置服务,维护元信息和命名空间等服务,Hbase在Hadoop生态圈中的位置如下图所示: Hbase与传统关系数据库的区别 在传统的数据库RDBMS

Hive与HBase的区别

自闭症网瘾萝莉.ら 提交于 2019-12-14 15:34:33
从使用方面讲 Hive是一个构建在Hadoop平台上的数据仓库,可以将结构化的数据文件映射为一张数据库表。通过Hive可以使用HQL语言查询存放在HDFS上的数据。HQL是一种类SQL语言,这种语言最终被转化成Map/Reduce。 HBase 是基于HDFS平台的Key/Value类型的NoSql数据库,是一个分布式、可扩展、存储海量数据的数据库,并且对与null值保存不占用空间。HBase能够在数据库上实时运行,而不是运行MapReduce任务。HBase被分区成表,表格又进一步分割成列族。列族必须使用Schema定义,列族将某一类型的列集合起来。例如:"message"列族可能包含"to"、"from" 、"date" 、"body"等列。HBase中每一个Key/Value被定义为一个cell,一个完整的cell由rowkey、列族、列、时间戳组成。在HBase中,行是Key/Value映射的集合,整个映射通过rowkey来唯一标识。HBase利用Hadoop的基础设施,可以进行水平扩展。 两者的特点 Hive帮助熟悉SQL的人运行MapReduce任务。运行Hive查询会花费较长时间,因为Hive的默认计算引擎是Hadoop的MapReduce。当然Hive也可以将底层计算引擎更换为Spark/Tez等。 HBase通过存储Key/Value类型数据来工作

基于Hadoop环境搭建HBase集群

末鹿安然 提交于 2019-12-14 07:58:33
准备环境 使用如下三台机器进行HBase集群搭建。 49.235.8.131 master 180.76.149.30 slave1 180.76.179.221 slave2 集群搭建 第一步:将HBase安装包 hbase-1.4.5-bin.tar.gz上传到 /home/hbase 目录下。 #上传命令 [root@master home]# sz -y 第二步:解压上传的hbase安装包 #解压 [root@master software]# tar -xzvf hbase-1.4.5-bin.tar.gz 第三步:配置HBase环境变量 # set Java environment HBASE_HOME=/home/hbase/hbase-1.4.5 HADOOP_HOME=/home/hadoop/hadoop-2.7.7 JAVA_HOME=/java/jdk1.8.0_161 PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export HBASE_HOME export PATH export

Access virtual box hbase from windows java application

那年仲夏 提交于 2019-12-14 04:12:20
问题 Hi i am new to hbase and trying to practice it. First of all i would like to describe about system configuration. BACKGROUND: I am using Windows 7 and installed Oracle Virtual Box. Then installed ubuntu server on Virtual Box after that I installed hbase0.98-hadoop2-bin.tar.gz on ubuntu. I have configured hbase in standalone mode. My hbase-site.xml file is like: <Configuration> <property> <name>hbase.rootdir</name> <value>file:///home/abc/hbase</value> </property> <property> <name>hbase

HBase 的5大特征(面试必问)

倾然丶 夕夏残阳落幕 提交于 2019-12-14 02:49:34
海量存储 Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正是因为Hbase良好的扩展性,才为海量数据的存储提供了便利。 列式存储 这里的列式存储其实说的是列族存储,Hbase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定。 极易扩展 Hbase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。 通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。 备注:RegionServer的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode的机器,进行存储层扩容,提升Hbase的数据存储能力和提升后端存储的读写能力。 高并发 由于目前大部分使用Hbase的架构,都是采用的廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务。 稀疏 稀疏主要是针对Hbase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。 来源: CSDN 作者:

How to scan for a particular column value in hbase?

橙三吉。 提交于 2019-12-14 02:33:18
问题 I am new to using hbase. I have multiple columns which have attributes How do I search for a particular attribute. how do I use the scan command in this case? scan 'table_name' gives all the records. 回答1: you can use, scan 'tablename' , {COLUMNS => 'cfamily:cqualifier'} You can scan multiple columns at a same time using, scan 'tablename' , {COLUMNS => ['cf1:cq1' , 'cf2:cq2']} 回答2: Though it is a very old question, But I feel to update this as this would help others to get the answer. Me too a