温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
Fayson的github: https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢
1.文档编写目的
Fayson在前面的文章《Cloudera Labs中的Phoenix》,《如何在CDH中使用Phoenix》和《如何使用Phoenix在CDH的HBase中创建二级索引》中介绍了Cloudera Labs中的Phoenix,如何在CDH5.11.2中安装和使用Phoenix4.7,以及如何使用Phoenix4.7 CDH5.14.2建立HBase的二级索引。
我们知道Phoenix是Cloudera实验室的项目,并不提供官方支持,CDH的安装Parcel包并不默认打包Phoenix。而Cloudera实验室在2016-06-24基于CDH5.7发布Phoenix4.7后,至今再未更新Phoenix版本。虽然在Fayson在《如何使用Phoenix在CDH的HBase中创建二级索引》文章中,在CDH5.14.2也使用Phoenix4.7版本没发现问题。但Phoenix作为Apache的一个顶级项目,其实一直在持续更新的,版本更新迭代挺快,最新的是基于HBase2.0的Phoenix5.0.0-alpha。
所以如果我们想在CDH上使用新的Phoenix,去玩玩一些新的功能,该怎么办呢。其实在Phoenix每次发布的版本,在官网的下载页面都可以找到与最新的CDH版本相对应的Parcel包的。在Phoenix官方,目前最新的版本为Apache Phoenix4.14.0和CDH5.14.2,如下所示:
代码语言:javascript复制http://phoenix.apache.org/download.html
(可左右滑动)
本文Fayson主要介绍如何在CDH5.14.2中使用Parcel安装Phoenix4.14.0.
- 内容概述:
1.下载与安装Apache Phoenix4.14.0
2.启用Kafka的Sentry赋权
3.Kafka的赋权测试
4.总结
- 测试环境:
1.CM5.14.3/CDH5.14.2
2.Phoenix4.14.0
3.操作系统版本为Redhat7.4
4.采用root用户进行操作
5.集群未启用Kerberos
2.下载与安装Apache Phoenix4.14.0
1.最新的Phoenix4.14.0对应CDH的Parcel有好几个版本,请确保选择与你的CDH和OS版本对应的Parcel包,Fayson的环境是CDH5.14.2 Redhat7.4,对应Phoenix4.14.0的Parcel包下载地址为:
代码语言:javascript复制http://www.apache.org/dist/phoenix/apache-phoenix-4.14.0-cdh5.14.2/parcels/APACHE_PHOENIX-4.14.0-cdh5.14.2.p0.3-el7.parcel
http://www.apache.org/dist/phoenix/apache-phoenix-4.14.0-cdh5.14.2/parcels/APACHE_PHOENIX-4.14.0-cdh5.14.2.p0.3-el7.parcel.asc
http://www.apache.org/dist/phoenix/apache-phoenix-4.14.0-cdh5.14.2/parcels/manifest.json
(可左右滑动)
2.将Phoenix4.14的安装包发布到http服务
代码语言:javascript复制[root@ip-172-31-6-83 ~]# mv phoenix4.14/ /var/www/html
[root@ip-172-31-6-83 ~]# systemctl start httpd
(可左右滑动)
3.在Cloudera Manger中配置Phoenix4.14.0的Parcel地址,
保存更改
4.然后下载->分配->激活
5.回到主页发现HBase服务要部署客户端配置并重启。
按要求重启服务,过程略。
3.Phoenix4.14的基本操作
1.连接到Phoenix的终端,在Phoenix中建表hbase_test
代码语言:javascript复制cd /opt/cloudera/parcels/APACHE_PHOENIX/bin
./phoenix-sqlline.py ip-172-31-6-83.ap-southeast-1.compute.internal:2181:/hbase create table hbase_test
(
s1 varchar not null primary key,
s2 varchar,
s3 varchar,
s4 varchar,
s5 varchar,
s6 varchar,
s7 varchar,
s8 varchar,
s9 varchar,
s10 varchar,
s11 varchar
);
(可左右滑动)
2.插入一条数据,然后进行查询。
代码语言:javascript复制upsert into hbase_test values('1','testname','testname1','testname2','testname3','testname4','testname5','testname6','testname7','testname8','testname9');
select * from hbase_test;
upsert into hbase_test values('2','testname','testname1','testname2','testname3','testname4','testname5','testname6','testname7','testname8','testname9');
upsert into hbase_test values('3','testname','testname1','testname2','testname3','testname4','testname5','testname6','testname7','testname8','testname9');
select * from hbase_test where s1='2';
(可左右滑动)
3.在hbase shell中进行检查
可以发现之前通过Phoenix创建的hbase_test表存在,并且插入的3条数据也显示正常。
4.Phoenix4.14的bulkload
1.准备一个测试csv文件用来导入Phoenix的表中,Fayson这里准备一个1.2GB,995W行,11个字段的数据文件。
代码语言:javascript复制[root@ip-172-31-6-83 generatedata]# cat hbase_data.csv | wc -l
9950000
[root@ip-172-31-6-83 generatedata]# du -sh hbase_data.csv
1.2G hbase_data.csv
[root@ip-172-31-6-83 generatedata]# head hbase_data.csv
340111200507061443,鱼言思,0,遂宁,国家机关,13004386766,15900042793,广州银行1,市场三街65号-10-8,0,1
320404198104281395,暨梅爱,1,临沧,服务性工作人员,13707243562,15004903315,广州银行1,太平角六街145号-9-5,0,3
371326195008072277,人才奇,1,黔西南,办事人员和有关人员,13005470170,13401784500,广州银行1,金湖大厦137号-5-5,1,0
621227199610189727,谷岚,0,文山,党群组织,13908308771,13205463874,广州银行1,仰口街21号-6-2,1,3
533324200712132678,聂健飞,1,辽阳,不便分类的其他劳动者,15707542939,15304228690,广州银行1,郭口东街93号-9-3,0,2
632622196202166031,梁子伯,1,宝鸡,国家机关,13404591160,13503123724,广州银行1,逍遥一街35号-14-8,1,4
440883197110032846,黎泽庆,0,宝鸡,服务性工作人员,13802303663,13304292508,广州银行1,南平广场113号-7-8,1,4
341500196506180162,暨芸贞,0,黔西南,办事人员和有关人员,13607672019,13200965831,广州银行1,莱芜二路117号-18-3,1,4
511524198907202926,滕眉,0,南阳,国家机关,15100215934,13406201558,广州银行1,江西支街52号-10-1,0,3
420205198201217829,陶秀,0,泸州,商业工作人员,13904973527,15602017043,广州银行1,城武支大厦126号-18-2,1,0
(可左右滑动)
2.将准备好的csv文件put到HDFS,然后通过Phoenix自带的bulkload工具将准备好的csv文件批量导入到Phoenix的表中。
代码语言:javascript复制[root@ip-172-31-6-83 generatedata]# hadoop fs -mkdir /fayson
[root@ip-172-31-6-83 generatedata]# hadoop fs -put hbase_data.csv /fayson
[root@ip-172-31-6-83 generatedata]#
(可左右滑动)
代码语言:javascript复制[root@ip-172-31-6-83 ~]# HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH/lib/hbase/hbase-protocol-1.2.0-cdh5.14.2.jar:/opt/cloudera/parcels/CDH/lib/hbase/conf hadoop jar /opt/cloudera/parcels/APACHE_PHOENIX/lib/phoenix/phoenix-4.14.0-cdh5.14.2-client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool -t hbase_test -i /fayson/hbase_data.csv
(可左右滑动)
3.在Phoenix和hbase shell中分别查询确认数据入库成功。
代码语言:javascript复制select * from HBASE_TEST limit 10;
scan 'HBASE_TEST',{LIMIT => 1}
(可左右滑动)
5.Phoenix4.14的二级索引测试
1.按照如下语句建立覆盖索引
代码语言:javascript复制CREATE INDEX index1_hbase_test ON hbase_test(s6) INCLUDE(s2)
(可左右滑动)
提示要对HBase进行一些配置才能执行该语句。
2.将以下配置增加到hbase-site.xml,通过Cloudera Manager搜索HBase服务的“hbase-site.xml 的 HBase 服务高级配置代码段(安全阀)”。
代码语言:javascript复制<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
(可左右滑动)
保存更改,然后重启HBase。
3.再次执行建立覆盖索引的语句
代码语言:javascript复制CREATE INDEX index1_hbase_test ON hbase_test(s6) INCLUDE(s2);
(可左右滑动)
覆盖索引建立成功
4.执行查询语句测试索引性能。
代码语言:javascript复制select s6 from hbase_test where s6='13505503576';
select s2 from hbase_test where s6='13505503576';
(可左右滑动)
发现都是毫秒级返回,覆盖索引建立成功并生效。
5.建立本地索引
代码语言:javascript复制create local index index2_hbase_test on hbase_test (s7);
(可左右滑动)
6.在查询项中不包含索引字段的条件下,一样查询比较快速。
代码语言:javascript复制select s2 from hbase_test where s7='13500591348';
select * from hbase_test where s7='13500591348';
(可左右滑动)
可以发现这2个查询语句返回时间都在毫秒级,而如果不建立索引,查询时间为35S以上。
6.总结
1.Apache Phoenix最新的4.14.0可以通过Parce方式比较方便的安装在最新的CDH5.14.2,基本SQL操作,bulkload以及二级索引功能均测试成功。
2.虽然Cloudera在Phoenix4.7.0以后,没有官方再推出与新版的Phoenix集成的Parcel包。但是Apache Phoenix一直保持跟随CDH的步伐,从Apache Phoenix主页可以看到CDH5.11/5.12/5.13/5.14的各个OS的Parcel包均有下载。
参考:
http://phoenix.apache.org/download.html
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操