hbase概念:
非结构化的分布式的面向列存储非关系型的开源的数据库,根据谷歌的三大论文之一的bigtable
高宽厚表
作用:
为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
能干什么:
存储大量结果集数据,低延迟的随机查询。
sql:
结构化查询语言
nosql:
非关系型数据库,列存储和文档存储(查询低延迟),hbase是nosql的一个种类,其特点是列式存储。
非关系型数据库--列存储(hbase)
非关系型数据库--文档存储(MongoDB)
非关系型数据库--内存式存储(redis)
非关系型数据库--图形模型(graph)
hive和hbase区别
Hive的定位是数据仓库,虽然也有增删改查,但其删改查对应的是整张表而不是单行数据,查询的延迟较高。其本质是更加方便的使用mr的威力来进行离线分析的一个数据分析工具。
HBase的定位是hadoop的数据库,电脑培训发现是一个典型的Nosql,所以HBase是用来在大量数据中进行低延迟的随机查询的。
hbase运行方式:
standalonedistrubited
单节点和伪分布式
单节点:单独的进程运行在同一台机器上
hbase应用场景:
存储海量数据低延迟查询数据
hbase表由多行组成
hbase行一行在hbase中由行健和一个或多个列的值组成,按行健字母顺序排序的存储。
1、要在HBase表中实现索引,可以使用Regions建立列族和表,并通过对该列采用IndexTable设置索引参数来获得。
2、原因是HBase是一个分布式数据库,其中的数据都是有序的,可以利用这一有序性来获得更快的查询效果。
Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表,插入数据和查询HBase数据。
1) 容易集成:如Spark,Hive,Pig,Flume和Map Reduce。
2) 性能好:直接使用HBase API以及协处理器和自定义过滤器,可以为小型查询提供毫秒级的 性能 ,或者为数千万行提供数秒的性能。
3) *** 作简单:DML命令以及通过DDL命令创建表和版本化增量更改。
4) 安全功能: 支持GRANT和REVOKE 。
5) 完美支持Hbase二级索引创建。
解压到/opt/module 改名为phoenix
[root@hadoop101 module]$ tar -zxvf /opt/software/apache-phoenix-4141-HBase-13-bintargz -C /opt/module [root@hadoop101 module]$ mv apache-phoenix-4141-HBase-13-bin phoenix
在phoenix目录下
[root@hadoop101 module]$ cd /opt/module/phoenix/
向每个节点发送server jar
[root@hadoop101 phoenix]$ cp phoenix-4141-HBase-13-serverjar /opt/module/hbase-131/lib/ [root@hadoop101 phoenix]$ scp phoenix-4141-HBase-13-serverjar hadoop102:/opt/module/hbase-131/lib/ [root@hadoop101 phoenix]$ scp phoenix-4141-HBase-13-serverjar hadoop103:/opt/module/hbase-131/lib/
向每个节点发送client jar
[root@hadoop101 phoenix]$ cp phoenix-4141-HBase-13-clientjar /opt/module/hbase-131/lib/ [root@hadoop101 phoenix]$ scp phoenix-4141-HBase-13-clientjar hadoop102:/opt/module/hbase-131/lib/ [root@hadoop101 phoenix]$ scp phoenix-4141-HBase-13-clientjar hadoop103:/opt/module/hbase-131/lib/
#phoenix export PHOENIX_HOME=/opt/module/phoenix export PHOENIX_CLASSPATH=$PHOENIX_HOME export PATH=$PATH:$PHOENIX_HOME/bin
[root@hadoop101 phoenix]$ /opt/module/phoenix/bin/sqllinepy hadoop101,hadoop102,hadoop103:2181
!table 或 !tables
CREATE TABLE IF NOT EXISTS us_population ( State CHAR(2) NOT NULL, City VARCHAR NOT NULL, Population BIGINT CONSTRAINT my_pk PRIMARY KEY (state, city));
如下显示:
在phoenix中,默认情况下,表名等会自动转换为大写,若要小写,使用双引号,如"us_population"。
upsert into us_population values('NY','NewYork',8143197);
select from us_population ; select from us_population wherestate='NY';
delete from us_population wherestate='NY';
drop table us_population;
!quit
默认情况下,直接在hbase中创建的表,通过phoenix是查看不到的。如图1和图2,US_POPULATION是在phoenix中直接创建的,而kylin相关表是在hbase中直接创建的,在phoenix中是查看不到kylin等表的。
图1 phoenix命令行中查看所有表:
图2 hbase命令行中查看所有表:
如果要在phoenix中 *** 作直接在hbase中创建的表,则需要在phoenix中进行表的映射。映射方式有两种: 视图映射和表映射
Hbase 中test的表结构如下,两个列簇name、company
Rowkeynamecompany
empidfirstnamelastnamenameaddress
启动Hbase shell
[root@hadoop101 ~]$ /opt/module/hbase-131/bin/hbase shell
创建Hbase表test
hbase(main):001:0> create 'test','name','company'
创建表,如下图:
Phoenix创建的视图是只读的,所以只能用来做查询,无法通过视图对源数据进行修改等 *** 作。
在phoenix中创建视图test表
0: jdbc:phoenix:hadoop101,hadoop102,hadoop103> create view "test"(empid varchar primary key,"name""firstname" varchar,"name""lastname" varchar,"company""name" varchar,"company""address" varchar);
删除视图
0: jdbc:phoenix:hadoop101,hadoop102,hadoop103> drop view "test";
使用Apache Phoenix创建对HBase的表映射,有两种方法:
1) 当HBase中已经存在表时,可以以类似创建视图的方式创建关联表,只需要将create view改为create table即可。
0: jdbc:phoenix:hadoop101,hadoop102,hadoop103> create table "test"(empid varchar primary key,"name""firstname" varchar,"name""lastname" varchar,"company""name" varchar,"company""address" varchar);
2) 当HBase中不存在表时,可以直接使用create table指令创建需要的表,系统将会自动在Phoenix和HBase中创建person_infomation的表,并会根据指令内的参数对表结构进行初始化。
0: jdbc:phoenix:hadoop101,hadoop102,hadoop103> create table "test"(empid varchar primary key,"name""firstname" varchar,"name""lastname" varchar,"company""name" varchar,"company""address" varchar);
在Phoenix中查看数据
select from STOCK_SYMBOL
如下显示:
在Hbase中查看数据
scan "STOCK_SYMBOL"
更多使用详情,请参考 >
有时候我们需要统计HBase表的行数,一般要么是写MR程序,要么是写SQL。以下就是可用的几种方式:
HBase Shell 自带的统计函数命令
hbase> count 't1'
hbase> count 't1',INTERVAL => 100000
hbase> count 't1', CACHE => 1000
hbase> count 't1', INTERVAL => 10, CACHE => 1000
注意 :其中, INTERVAL 为统计的行数间隔,默认为1000, CACHE 为统计的数据缓存。这种方式效率很低,如果表行数很大的话不建议采用这种方式。
hbase orgapachehadoophbasemapreduceRowCounter 'tablename'
解释:这种方式效率比上一种要高很多,调用的hbase jar中自带的统计行数的类。
创建 Hive 与 HBase 的关联表,将 HBase 当作 Hive 的外部表。
以上就是关于电脑培训分享Hbase知识点总结全部的内容,包括:电脑培训分享Hbase知识点总结、请描述怎样才能获得hbase表中哪些列能实现索引为什么、Phoenix实战等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)