尚硅谷大数据技术之Phoenix.docx

上传人:b****5 文档编号:7397935 上传时间:2023-01-23 格式:DOCX 页数:18 大小:1.15MB
下载 相关 举报
尚硅谷大数据技术之Phoenix.docx_第1页
第1页 / 共18页
尚硅谷大数据技术之Phoenix.docx_第2页
第2页 / 共18页
尚硅谷大数据技术之Phoenix.docx_第3页
第3页 / 共18页
尚硅谷大数据技术之Phoenix.docx_第4页
第4页 / 共18页
尚硅谷大数据技术之Phoenix.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

尚硅谷大数据技术之Phoenix.docx

《尚硅谷大数据技术之Phoenix.docx》由会员分享,可在线阅读,更多相关《尚硅谷大数据技术之Phoenix.docx(18页珍藏版)》请在冰豆网上搜索。

尚硅谷大数据技术之Phoenix.docx

尚硅谷大数据技术之Phoenix

第1章Phoenix简介

1.1Phoenix定义

Phoenix是HBase的开源SQL皮肤。

可以使用标准JDBCAPI代替HBase客户端API来创建表,插入数据和查询HBase数据。

1.2Phoenix特点

1)容易集成:

如Spark,Hive,Pig,Flume和MapReduce。

2)操作简单:

DML命令以及通过DDL命令创建和操作表和版本化增量更改。

3)完美支持Hbase二级索引创建。

1.3Phoenix架构

1.4Phoenix的作用

第2章Phoenix快速入门

2.1Phoenix安装部署

2.1.1官方网址:

2.1.2上传jar包到/opt/software/

解压到/opt/module改名为phoenix

[atguigu@hadoop101module]$tar-zxvf/opt/software/apache-phoenix-4.14.2-HBase-1.3-bin.tar.gz-C/opt/module

[atguigu@hadoop101module]$mvapache-phoenix-4.14.2-HBase-1.3-binphoenix

2.1.3复制server和client这俩个包拷贝到各个节点的hbase/lib

在phoenix目录下

[atguigu@hadoop101module]$cd/opt/module/phoenix/

向每个节点发送serverjar

[atguigu@hadoop101phoenix]$cpphoenix-4.14.2-HBase-1.3-server.jar/opt/module/hbase/lib/

[atguigu@hadoop101phoenix]$scpphoenix-4.14.2-HBase-1.3-server.jarhadoop102:

/opt/module/hbase/lib/

[atguigu@hadoop101phoenix]$scpphoenix-4.14.2-HBase-1.3-server.jarhadoop103:

/opt/module/hbase/lib/

向每个节点发送clientjar

[atguigu@hadoop101phoenix]$cpphoenix-4.14.2-HBase-1.3-client.jar/opt/module/hbase/lib/

[atguigu@hadoop101phoenix]$scpphoenix-4.14.2-HBase-1.3-client.jarhadoop102:

/opt/module/hbase/lib/

[atguigu@hadoop101phoenix]$scpphoenix-4.14.2-HBase-1.3-client.jarhadoop103:

/opt/module/hbase/lib/

2.1.4在root权限下给/etc/profile下添加如下内容

#phoenix

exportPHOENIX_HOME=/opt/module/phoenix

exportPHOENIX_CLASSPATH=$PHOENIX_HOME

exportPATH=$PATH:

$PHOENIX_HOME/bin

2.1.5启动Zookeeper,Hadoop,Hbase

2.1.6启动Phoenix

[atguigu@hadoop101phoenix]$/opt/module/phoenix/bin/sqlline.pyhadoop101,hadoop102,hadoop103:

2181

2.2phoenix表操作

2.2.1显示所有表

table或!

tables

2.2.2创建表

CREATETABLEIFNOTEXISTSus_population(

StateCHAR

(2)NOTNULL,

CityVARCHARNOTNULL,

PopulationBIGINT

CONSTRAINTmy_pkPRIMARYKEY(state,city));

如下显示:

在phoenix中,默认情况下,表名等会自动转换为大写,若要小写,使用双引号,如"us_population"。

2.2.3插入记录

upsertintous_populationvalues('NY','NewYork',8143197);

2.2.4查询记录

select*fromus_population;

select*fromus_populationwherestate='NY';

2.2.5删除记录

deletefromus_populationwherestate='NY';

2.2.6删除表

droptableus_population;

2.2.7退出命令行

!

quit

2.3phoenix表映射

2.3.1Phoenix和Hbase表的关系

默认情况下,直接在hbase中创建的表,通过phoenix是查看不到的。

如图1和图2,US_POPULATION是在phoenix中直接创建的,而kylin相关表是在hbase中直接创建的,在phoenix中是查看不到kylin等表的。

图1phoenix命令行中查看所有表:

图2hbase命令行中查看所有表:

如果要在phoenix中操作直接在hbase中创建的表,则需要在phoenix中进行表的映射。

映射方式有两种:

视图映射和表映射

2.3.2Hbase命令行中创建表test

Hbase中test的表结构如下,两个列簇name、company.

Rowkey

name

company

empid

firstname

lastname

name

address

启动Hbaseshell

[atguigu@hadoop101~]$/opt/module/hbase-1.3.1/bin/hbaseshell

创建Hbase表test

hbase(main):

001:

0>create'test','name','company'

创建表,如下图:

2.3.3视图映射

Phoenix创建的视图是只读的,所以只能用来做查询,无法通过视图对源数据进行修改等操作。

在phoenix中创建视图test表

0:

jdbc:

phoenix:

hadoop101,hadoop102,hadoop103>createview"test"(empidvarcharprimarykey,"name"."firstname"varchar,"name"."lastname"varchar,"company"."name"varchar,"company"."address"varchar);

删除视图

0:

jdbc:

phoenix:

hadoop101,hadoop102,hadoop103>dropview"test";

2.3.3表映射

使用ApachePhoenix创建对HBase的表映射,有两种方法:

1)当HBase中已经存在表时,可以以类似创建视图的方式创建关联表,只需要将createview改为createtable即可。

0:

jdbc:

phoenix:

hadoop102,hadoop103,hadoop104>createtable"test1"(empidvarcharprimarykey,"name"."firstname"varchar,"name"."lastname"varchar,"company"."name"varchar,"company"."address"varchar);

2)当HBase中不存在表时,可以直接使用createtable指令创建需要的表,系统将会自动在Phoenix和HBase中创建person_infomation的表,并会根据指令内的参数对表结构进行初始化。

0:

jdbc:

phoenix:

hadoop101,hadoop102,hadoop103>createtable"test"(empidvarcharprimarykey,"name"."firstname"varchar,"name"."lastname"varchar,"company"."name"varchar,"company"."address"varchar)column_encoded_bytes=0;

2.3.4使用spark对phoenix的读写

在Phoenix中查看数据

select*fromSTOCK_SYMBOL

如下显示:

在Hbase中查看数据

scan"STOCK_SYMBOL"

更多使用详情,请参考http:

//phoenix.apache.org/phoenix_spark.html

2.3.5视图映射和表映射的对比与总结:

相比于直接创建映射表,视图的查询效率会低,原因是:

创建映射表的时候,Phoenix会在表中创建一些空的键值对,这些空键值对的存在可以用来提高查询效率。

使用createtable创建的关联表,如果对表进行了修改,源数据也会改变,同时如果关联表被删除,源表也会被删除。

但是视图就不会,如果删除视图,源数据不会发生改变。

第3章Phoenix创建Hbase二级索引

3.1配置Hbase支持Phoenix创建二级索引

3.1.1添加如下配置到Hbase的Hregionserver节点的hbase-site.xml

--phoenixregionserver配置参数-->

hbase.regionserver.wal.codec

org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec

hbase.region.server.rpc.scheduler.factory.class

org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory

FactorytocreatethePhoenixRPCSchedulerthatusesseparatequeuesforindexandmetadataupdates

hbase.rpc.controllerfactory.class

org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory

FactorytocreatethePhoenixRPCSchedulerthatusesseparatequeuesforindexandmetadataupdates

3.1.2添加如下配置到Hbase中Hmaster节点的hbase-site.xml中

--phoenixmaster配置参数-->

hbase.master.loadbalancer.class

org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer

hbase.coprocessor.master.classes

org.apache.phoenix.hbase.index.master.IndexMasterObserver

3.1.3验证效果:

3.2创建索引

3.2.1phoenix的索引分类

1)globalindex是默认的索引格式。

适用于多读少写的业务场景。

写数据的时候会消耗大量开销,因为索引表也要更新,而索引表是分布在不同的数据节点上的,跨节点的数据传输带来了较大的性能消耗。

在读数据的时候Phoenix会选择索引表来降低查询消耗的时间。

如果想查询的字段不是索引字段的话索引表不会被使用,也就是说不会带来查询速度的提升。

CREATEINDEXmy_indexONmy_table(my_col)

2)Localindex适用于写操作频繁的场景。

索引数据和数据表的数据是存放在相同的服务器中的,避免了在写操作的时候往不同服务器的索引表中写索引带来的额外开销。

查询的字段不是索引字段索引表也会被使用,这会带来查询速度的提升。

CREATELOCALINDEXmy_indexONmy_table(my_index)

建立localindex可能出现的问题

hbase-site.xml的zookeeeper的配置信息不能加2181,否则在创建localindex的时候会报以下异常:

正常配置:

hbase.zookeeper.quorum

hadoop101,hadoop102,hadoop103

 

Localindex和Globalindex区别:

Localindex由于是数据与索引在同一服务器上,所以要查询的数据在哪台服务器的哪个region是无法定位的,只能先找到region然后在利用索引。

Globalindex是一种分布式索引,可以直接利用索引定位服务器和region,速度更快,但是由于分布式的原因,数据一旦出现新增变化,分布式的索引要进行跨服务的同步操作,带来大量的通信消耗。

所以在写操作频繁的字段上不适合建立Globalindex。

 

3.2.2三种提升效率查询方式

1)CREATEINDEXmy_indexONmy_table(v1)INCLUDE(v2)

2)SELECT/*+INDEX(my_tablemy_index)*/v2FROMmy_tableWHEREv1='foo'

3)CREATELOCALINDEXmy_indexONmy_table(v1)

3.2.3如何删除索引

DROPINDEXmy_indexONmy_table

第4章Squirrel可视化连接Phoenix

4.1下载Squirrel的jar包官方网址

http:

//squirrel-

4.2在Windows环境下安装Squirrel程序

1)选择Java方式打开安装

2)自定义安装目录

3)一直Next到安装完成

4.3配置Squirrel连接到Phoenix

1)复制Phoenix的client.jar包到D:

\work\squirrel\lib的lib下

2)启动Squirrel

3)配置Driver

4)添加Driver具体配置信息

配置信息:

Name=Phoenix

ExampleURL=jdbc:

phoenix:

hadoop101,hadoop102,hadoop103:

2181

JavaClassPath选择D:

\work\squirrel\lib\phoenix-4.14.2-HBase-1.3-client.jar

ClassName=org.apache.phoenix.jdbc.PhoenixDriver

5)配置Aliases

6)添加Aliases具体配置信息

配置信息:

Name=任意

Driver选择刚才添加的Phoenix

URL=jdbc:

phoenix:

hadoop101,hadoop102,hadoop103:

2181

UserName=任意

Password=任意

7)测试连接是否成功

双击连接Phoenix

8)使用Squirrel查询数据

查询sql(WEB_STAT表要提前建好并导入数据)

[atguigu@hadoop101bin]$psql.py../examples/STOCK_SYMBOL.sql

[atguigu@hadoop101bin]$psql.py../examples/STOCK_SYMBOL.csv

select*fromWEB_STAT;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1