电脑培训分享Hbase知识点总结

电脑培训分享Hbase知识点总结,第1张

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实战等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9514804.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存