目錄
一、主機(jī)規(guī)劃
二、Phoenix 安裝
1. 解壓、配置環(huán)境
2. 復(fù)制兩個(gè)文件
3. 重啟 HBase 集群
4. 安裝驗(yàn)證
(1)連接 HBase
(2)視圖映射
(3)表映射
參考:
一、主機(jī)規(guī)劃
? ? ? ? 繼續(xù)上一篇,本篇介紹在同一環(huán)境中安裝 Phoenix,并連接上篇部署的 HBase 集群。
? ? ? ? 所需安裝包:Phoenix-5.1.3
? ? ? ? 下表描述了四個(gè)節(jié)點(diǎn)上分別將會(huì)運(yùn)行的相關(guān)進(jìn)程。Phoenix 相對(duì)于 HBase 來(lái)說(shuō)就是一個(gè)支持 SQL 的客戶端軟件,為能在集群環(huán)境中任何節(jié)點(diǎn)上都能使用 Phoenix 命令行,在所有節(jié)點(diǎn)上都安裝。簡(jiǎn)便起見,安裝部署過(guò)程中所用的命令都使用操作系統(tǒng)的 root 用戶執(zhí)行。
? ? ? ? ? ? ? ? ? ? ? ? ? ? 節(jié)點(diǎn) 進(jìn)程 |
node1 |
node2 |
node3 |
node4 |
Phoenix |
* |
* |
* |
* |
二、Phoenix 安裝
? ? ? ? 在所有節(jié)點(diǎn)上執(zhí)行下面第1、2步操作,在 node1 節(jié)點(diǎn)上執(zhí)行第3步操作。
1. 解壓、配置環(huán)境
# 解壓
tar -zxvf phoenix-hbase-2.5-5.1.3-bin.tar.gz
# 編輯 /etc/profile 文件
vim /etc/profile
?
# 添加下面兩行
export PHOENIX_HOME=/root/phoenix-hbase-2.5-5.1.3-bin/
export PHOENIX_CLASSPATH=$PHOENIX_HOME
export PATH=$PHOENIX_HOME/bin:$PATH
?
# 加載生效
source /etc/profile
2. 復(fù)制兩個(gè)文件
cp $PHOENIX_HOME/phoenix-server-hbase-2.5-5.1.3.jar $HBASE_HOME/lib/
cp $HBASE_HOME/conf/hbase-site.xml $PHOENIX_HOME/bin/
3. 重啟 HBase 集群
stop-hbase.sh
start-hbase.sh
4. 安裝驗(yàn)證
(1)連接 HBase
# 連接,參數(shù)為 Zookeeper 節(jié)點(diǎn)
sqlline.py node1,node2,node3
# 列出表
!table
? ? ? ? 輸出:
[root@vvml-yz-hbase-test~]#sqlline.py node1,node2,node3
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect -p driver org.apache.phoenix.jdbc.PhoenixDriver -p user "none" -p password "none" "jdbc:phoenix:node1,node2,node3"
Connecting to jdbc:phoenix:node1,node2,node3
24/03/07 14:44:45 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
24/03/07 14:44:45 WARN impl.MetricsConfig: Cannot locate configuration: tried hadoop-metrics2-phoenix.properties,hadoop-metrics2.properties
Connected to: Phoenix (version 5.1)
Driver: PhoenixEmbeddedDriver (version 5.1)
Autocommit status: true
Transaction isolation: TRANSACTION_READ_COMMITTED
sqlline version 1.9.0
0: jdbc:phoenix:node1,node2,node3> !table
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-+
| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | ?TABLE_TYPE ?| REMARKS | TYPE_NAME | SELF_REFERENCING_COL_NAME | REF_GENERATION | INDEX_STATE | |
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-+
| ? ? ? ? ? | SYSTEM ? ? ?| CATALOG ? ?| SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | SYSTEM ? ? ?| CHILD_LINK | SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | SYSTEM ? ? ?| FUNCTION ? | SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | SYSTEM ? ? ?| LOG ? ? ? ?| SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | SYSTEM ? ? ?| MUTEX ? ? ?| SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | SYSTEM ? ? ?| SEQUENCE ? | SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | SYSTEM ? ? ?| STATS ? ? ?| SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | SYSTEM ? ? ?| TASK ? ? ? | SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-+
0: jdbc:phoenix:node1,node2,node3>
? ? ? ? 默認(rèn)情況下,直接在 HBase 中創(chuàng)建的表,通過(guò) Phoenix 是查看不到的。如上一篇在 hbase shell 中創(chuàng)建的 test 表,這里沒有顯示。如果要在 Phoenix 中操作直接在 HBase 中創(chuàng)建的表,則需要在 Phoenix 中進(jìn)行表的映射。映射方式有兩種:視圖映射和表映射。
(2)視圖映射
? ? ? ? Phoenix 創(chuàng)建的視圖是只讀的,所以只能用來(lái)做查詢,無(wú)法通過(guò)視圖對(duì)源數(shù)據(jù)進(jìn)行修改等操作。
0: jdbc:phoenix:node1,node2,node3> create view "test"(pk varchar primary key,"cf"."a" varchar,"cf"."b" varchar,"cf"."c" varchar,"cf"."d" varchar,"cf"."e" varchar);
No rows affected (0.178 seconds)
0: jdbc:phoenix:node1,node2,node3> !table
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-+
| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | ?TABLE_TYPE ?| REMARKS | TYPE_NAME | SELF_REFERENCING_COL_NAME | REF_GENERATION | INDEX_STATE | |
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-+
| ? ? ? ? ? | SYSTEM ? ? ?| CATALOG ? ?| SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | SYSTEM ? ? ?| CHILD_LINK | SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | SYSTEM ? ? ?| FUNCTION ? | SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | SYSTEM ? ? ?| LOG ? ? ? ?| SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | SYSTEM ? ? ?| MUTEX ? ? ?| SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | SYSTEM ? ? ?| SEQUENCE ? | SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | SYSTEM ? ? ?| STATS ? ? ?| SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | SYSTEM ? ? ?| TASK ? ? ? | SYSTEM TABLE | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
| ? ? ? ? ? | ? ? ? ? ? ? | test ? ? ? | VIEW ? ? ? ? | ? ? ? ? | ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ?| ? ? ? ? ? ? | |
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-+
0: jdbc:phoenix:node1,node2,node3> select * from "test";
+------+--------+--------+--------+--------+--------+
| ?PK ?| ? a ? ?| ? b ? ?| ? c ? ?| ? d ? ?| ? e ? ?|
+------+--------+--------+--------+--------+--------+
| row1 | value1 | ? ? ? ?| ? ? ? ?| ? ? ? ?| ? ? ? ?|
| row2 | ? ? ? ?| value2 | ? ? ? ?| ? ? ? ?| ? ? ? ?|
| row3 | ? ? ? ?| ? ? ? ?| value3 | ? ? ? ?| ? ? ? ?|
| row4 | ? ? ? ?| ? ? ? ?| ? ? ? ?| value4 | ? ? ? ?|
| row5 | ? ? ? ?| ? ? ? ?| ? ? ? ?| ? ? ? ?| value5 |
+------+--------+--------+--------+--------+--------+
5 rows selected (0.021 seconds)
0: jdbc:phoenix:node1,node2,node3>?
? ? ? ? HBase 嚴(yán)格區(qū)分大小寫,創(chuàng)建視圖時(shí)表名、列族、列名需要用雙引號(hào)括起來(lái)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-846603.html
(3)表映射
0: jdbc:phoenix:node1,node2,node3> drop view "test";
No rows affected (0.011 seconds)
0: jdbc:phoenix:node1,node2,node3> create table "test"(pk varchar primary key,"cf"."a" varchar,"cf"."b" varchar,"cf"."c" varchar,"cf"."d" varchar,"cf"."e" varchar) column_encoded_bytes=0;
5 rows affected (5.676 seconds)
0: jdbc:phoenix:node1,node2,node3> upsert into "test" values('a','1','2','3','4','5');
1 row affected (0.007 seconds)
0: jdbc:phoenix:node1,node2,node3> select * from "test";
+------+--------+--------+--------+--------+--------+
| ?PK ?| ? a ? ?| ? b ? ?| ? c ? ?| ? d ? ?| ? e ? ?|
+------+--------+--------+--------+--------+--------+
| a ? ?| 1 ? ? ?| 2 ? ? ?| 3 ? ? ?| 4 ? ? ?| 5 ? ? ?|
| row1 | value1 | ? ? ? ?| ? ? ? ?| ? ? ? ?| ? ? ? ?|
| row2 | ? ? ? ?| value2 | ? ? ? ?| ? ? ? ?| ? ? ? ?|
| row3 | ? ? ? ?| ? ? ? ?| value3 | ? ? ? ?| ? ? ? ?|
| row4 | ? ? ? ?| ? ? ? ?| ? ? ? ?| value4 | ? ? ? ?|
| row5 | ? ? ? ?| ? ? ? ?| ? ? ? ?| ? ? ? ?| value5 |
+------+--------+--------+--------+--------+--------+
6 rows selected (0.013 seconds)
0: jdbc:phoenix:node1,node2,node3> !quit
Closing: org.apache.phoenix.jdbc.PhoenixConnection
[root@vvml-yz-hbase-test~]#
? ? ? ? 表映射方式時(shí),數(shù)據(jù)更新是對(duì)源表的操作,刪除表也會(huì)刪除 HBase 中的源表。如果只做查詢,強(qiáng)烈建議使用視圖方式映射,刪除視圖不影響 HBase 源數(shù)據(jù)。Phoenix 4.10 版本后,對(duì)列映射做了優(yōu)化,采用一套新的機(jī)制,不再基于列名方式映射到 HBase。如果必須要表映射,則需要禁用列映射規(guī)則(column_encoded_bytes=0),但這會(huì)降低查詢性能。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-846603.html
參考:
- Apache Phoenix 映射已存在 HBase 表,查詢不到數(shù)據(jù)
- https://phoenix.apache.org/installation.html
到了這里,關(guān)于基于 HBase & Phoenix 構(gòu)建實(shí)時(shí)數(shù)倉(cāng)(3)—— Phoenix 安裝的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!