1. 程式人生 > >HBase的SQL驅動---Phoenix

HBase的SQL驅動---Phoenix

一、Phoenix簡介

Apache Phoenix是HBase的SQL驅動,是構建在Apache HBase之上的一個SQL中間層。Phoenix完全使用Java編寫,程式碼位於GitHub上,並且提供了一個客戶端可嵌入JDBC驅動。Phoenix使得HBase支援通過JDBC的方式進行訪問,並將你的SQL查詢轉成HBase的掃描和相應的動作。Phoenix並不是想HBase那樣用於map-reduce job的,而是通過標準化的語言來訪問HBase資料的。

 

二、Phoenix和HBase版本的對應關係

Phoenix 2.x —— HBase 0.94.x

Phoenix 3.x —— HBase 0.94.x

Phoenix 4.x —— HBase 0.98.1+

本案例中的HBase使用的版本是0.98.17,因此選用的Phoenix版本是4.8.1

 

三、Phoenix的安裝

  • 將壓縮包上傳到/home/software目錄下,進行解壓
[[email protected] software]# pwd
/home/software
[[email protected] software]# ll
總用量 198304
-rw-r--r--  1 root  root  203045474 12月  7 14:16 apache-phoenix-4.8.1-HBase-0.98-bin.tar.gz
drwxr-xr-x 12 10021 10021      4096 12月  3 16:51 hadoop-2.7.1
drwxr-xr-x  8 root  root       4096 12月  4 10:59 hbase
drwxr-xr-x  8 uucp    143      4096 3月  15 2017 jdk1.8
drwxr-xr-x 12  1000  1000      4096 12月  3 14:16 zookeeper
[
[email protected]
software]# tar -xf apache-phoenix-4.8.1-HBase-0.98-bin.tar.gz
[[email protected] software]# ll
總用量 198308
drwxrwxr-x  4  1000  1000      4096 9月  23 2016 apache-phoenix-4.8.1-HBase-0.98-bin
-rw-r--r--  1 root  root  203045474 12月  7 14:16 apache-phoenix-4.8.1-HBase-0.98-bin.tar.gz
drwxr-xr-x 12 10021 10021      4096 12月  3 16:51 hadoop-2.7.1
drwxr-xr-x  8 root  root       4096 12月  4 10:59 hbase
drwxr-xr-x  8 uucp    143      4096 3月  15 2017 jdk1.8
drwxr-xr-x 12  1000  1000      4096 12月  3 14:16 zookeeper
[
[email protected]
software]# rm apache-phoenix-4.8.1-HBase-0.98-bin.tar.gz
rm:是否刪除普通檔案 "apache-phoenix-4.8.1-HBase-0.98-bin.tar.gz"?yes
[[email protected] software]# ll
總用量 20
drwxrwxr-x  4  1000  1000 4096 9月  23 2016 apache-phoenix-4.8.1-HBase-0.98-bin
drwxr-xr-x 12 10021 10021 4096 12月  3 16:51 hadoop-2.7.1
drwxr-xr-x  8 root  root  4096 12月  4 10:59 hbase
drwxr-xr-x  8 uucp    143 4096 3月  15 2017 jdk1.8
drwxr-xr-x 12  1000  1000 4096 12月  3 14:16 zookeeper
[[email protected] software]# mv apache-phoenix-4.8.1-HBase-0.98-bin/ phoenix-4.8.1-HBase-0.98-bin/
[[email protected] software]# ll
總用量 20
drwxr-xr-x 12 10021 10021 4096 12月  3 16:51 hadoop-2.7.1
drwxr-xr-x  8 root  root  4096 12月  4 10:59 hbase
drwxr-xr-x  8 uucp    143 4096 3月  15 2017 jdk1.8
drwxrwxr-x  4  1000  1000 4096 9月  23 2016 phoenix-4.8.1-HBase-0.98-bin
drwxr-xr-x 12  1000  1000 4096 12月  3 14:16 zookeeper
[[email protected] software]#
  • 將Phoenix安裝目錄下對應的jar包拷貝到HBase的lib目錄下

[[email protected] phoenix-4.8.1-HBase-0.98-bin]# pwd
/home/software/phoenix-4.8.1-HBase-0.98-bin
[[email protected] phoenix-4.8.1-HBase-0.98-bin]# ll
總用量 222240
drwxrwxr-x 3 1000 1000     4096 9月  23 2016 bin
drwxrwxr-x 3 1000 1000     4096 9月  23 2016 examples
-rw-rw-r-- 1 1000 1000   144042 9月  23 2016 LICENSE
-rw-rw-r-- 1 1000 1000    10176 9月  23 2016 NOTICE
-rw-rw-r-- 1 1000 1000 92615360 9月  23 2016 phoenix-4.8.1-HBase-0.98-client.jar
-rw-rw-r-- 1 1000 1000 61409126 9月  23 2016 phoenix-4.8.1-HBase-0.98-hive.jar
-rw-rw-r-- 1 1000 1000  6620831 9月  23 2016 phoenix-4.8.1-HBase-0.98-queryserver.jar
-rw-rw-r-- 1 1000 1000 24744193 9月  23 2016 phoenix-4.8.1-HBase-0.98-server.jar
-rw-rw-r-- 1 1000 1000 27996147 9月  23 2016 phoenix-4.8.1-HBase-0.98-thin-client.jar
-rw-rw-r-- 1 1000 1000  3853630 9月  23 2016 phoenix-core-4.8.1-HBase-0.98.jar
-rw-rw-r-- 1 1000 1000  2204415 9月  23 2016 phoenix-core-4.8.1-HBase-0.98-sources.jar
-rw-rw-r-- 1 1000 1000  1831557 9月  23 2016 phoenix-core-4.8.1-HBase-0.98-tests.jar
-rw-rw-r-- 1 1000 1000    34775 9月  23 2016 phoenix-flume-4.8.1-HBase-0.98.jar
-rw-rw-r-- 1 1000 1000    23162 9月  23 2016 phoenix-flume-4.8.1-HBase-0.98-sources.jar
-rw-rw-r-- 1 1000 1000    23295 9月  23 2016 phoenix-flume-4.8.1-HBase-0.98-tests.jar
-rw-rw-r-- 1 1000 1000   118890 9月  23 2016 phoenix-hive-4.8.1-HBase-0.98.jar
-rw-rw-r-- 1 1000 1000    79884 9月  23 2016 phoenix-hive-4.8.1-HBase-0.98-sources.jar
-rw-rw-r-- 1 1000 1000    40072 9月  23 2016 phoenix-hive-4.8.1-HBase-0.98-tests.jar
-rw-rw-r-- 1 1000 1000   156914 9月  23 2016 phoenix-pherf-4.8.1-HBase-0.98.jar
-rw-rw-r-- 1 1000 1000  2682120 9月  23 2016 phoenix-pherf-4.8.1-HBase-0.98-minimal.jar
-rw-rw-r-- 1 1000 1000   111744 9月  23 2016 phoenix-pherf-4.8.1-HBase-0.98-sources.jar
-rw-rw-r-- 1 1000 1000    58648 9月  23 2016 phoenix-pherf-4.8.1-HBase-0.98-tests.jar
-rw-rw-r-- 1 1000 1000    41471 9月  23 2016 phoenix-pig-4.8.1-HBase-0.98.jar
-rw-rw-r-- 1 1000 1000    27848 9月  23 2016 phoenix-pig-4.8.1-HBase-0.98-sources.jar
-rw-rw-r-- 1 1000 1000    43362 9月  23 2016 phoenix-pig-4.8.1-HBase-0.98-tests.jar
-rw-rw-r-- 1 1000 1000    22776 9月  23 2016 phoenix-queryserver-4.8.1-HBase-0.98.jar
-rw-rw-r-- 1 1000 1000    16532 9月  23 2016 phoenix-queryserver-4.8.1-HBase-0.98-sources.jar
-rw-rw-r-- 1 1000 1000    24969 9月  23 2016 phoenix-queryserver-4.8.1-HBase-0.98-tests.jar
-rw-rw-r-- 1 1000 1000    16021 9月  23 2016 phoenix-queryserver-client-4.8.1-HBase-0.98.jar
-rw-rw-r-- 1 1000 1000    12770 9月  23 2016 phoenix-queryserver-client-4.8.1-HBase-0.98-sources.jar
-rw-rw-r-- 1 1000 1000    10333 9月  23 2016 phoenix-queryserver-client-4.8.1-HBase-0.98-tests.jar
-rw-rw-r-- 1 1000 1000    80504 9月  23 2016 phoenix-spark-4.8.1-HBase-0.98.jar
-rw-rw-r-- 1 1000 1000    23706 9月  23 2016 phoenix-spark-4.8.1-HBase-0.98-sources.jar
-rw-rw-r-- 1 1000 1000    96504 9月  23 2016 phoenix-spark-4.8.1-HBase-0.98-tests.jar
-rw-rw-r-- 1 1000 1000    16355 9月  23 2016 phoenix-tracing-webapp-4.8.1-HBase-0.98.jar
-rw-rw-r-- 1 1000 1000  2275587 9月  23 2016 phoenix-tracing-webapp-4.8.1-HBase-0.98-runnable.jar
-rw-rw-r-- 1 1000 1000    11720 9月  23 2016 phoenix-tracing-webapp-4.8.1-HBase-0.98-sources.jar
-rw-rw-r-- 1 1000 1000     8068 9月  23 2016 phoenix-tracing-webapp-4.8.1-HBase-0.98-tests.jar
-rw-rw-r-- 1 1000 1000      794 9月  23 2016 README
[[email protected] phoenix-4.8.1-HBase-0.98-bin]# cp phoenix-4.8.1-HBase-0.98-client.jar phoenix-4.8.1-HBase-0.98-server.jar /home/software/hbase/lib/
  • 配置環境變數,並使環境變數生效
[[email protected] phoenix-4.8.1-HBase-0.98-bin]# vim /etc/profile

[[email protected] phoenix-4.8.1-HBase-0.98-bin]# source /etc/profile

 

四、啟動

  • 啟動Zookeeper(Hadoop01、Hadoop02、Hadoop03)
[[email protected] bin]# pwd
/home/software/zookeeper/bin
[[email protected] bin]# cd /home/software/zookeeper/bin/
[[email protected] bin]# pwd
/home/software/zookeeper/bin
[[email protected] bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/software/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[[email protected] bin]#
  • 啟動Hadoop(Hadoop01)
[[email protected] bin]# start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
18/12/07 15:02:04 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [hadoop01 hadoop02]
hadoop02: starting namenode, logging to /home/software/hadoop-2.7.1/logs/hadoop-root-namenode-hadoop02.out
hadoop01: starting namenode, logging to /home/software/hadoop-2.7.1/logs/hadoop-root-namenode-hadoop01.out
hadoop01: starting datanode, logging to /home/software/hadoop-2.7.1/logs/hadoop-root-datanode-hadoop01.out
hadoop02: starting datanode, logging to /home/software/hadoop-2.7.1/logs/hadoop-root-datanode-hadoop02.out
hadoop03: starting datanode, logging to /home/software/hadoop-2.7.1/logs/hadoop-root-datanode-hadoop03.out
Starting journal nodes [hadoop01 hadoop02 hadoop03]
hadoop03: starting journalnode, logging to /home/software/hadoop-2.7.1/logs/hadoop-root-journalnode-hadoop03.out
hadoop02: starting journalnode, logging to /home/software/hadoop-2.7.1/logs/hadoop-root-journalnode-hadoop02.out
hadoop01: starting journalnode, logging to /home/software/hadoop-2.7.1/logs/hadoop-root-journalnode-hadoop01.out
18/12/07 15:02:33 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting ZK Failover Controllers on NN hosts [hadoop01 hadoop02]
hadoop01: starting zkfc, logging to /home/software/hadoop-2.7.1/logs/hadoop-root-zkfc-hadoop01.out
hadoop02: starting zkfc, logging to /home/software/hadoop-2.7.1/logs/hadoop-root-zkfc-hadoop02.out
starting yarn daemons
starting resourcemanager, logging to /home/software/hadoop-2.7.1/logs/yarn-root-resourcemanager-hadoop01.out
hadoop03: starting nodemanager, logging to /home/software/hadoop-2.7.1/logs/yarn-root-nodemanager-hadoop03.out
hadoop02: starting nodemanager, logging to /home/software/hadoop-2.7.1/logs/yarn-root-nodemanager-hadoop02.out
hadoop01: starting nodemanager, logging to /home/software/hadoop-2.7.1/logs/yarn-root-nodemanager-hadoop01.out
[[email protected] bin]#
  • 啟動HBase(Hadoop01)
[[email protected] bin]# pwd
/home/software/hbase/bin
[[email protected] bin]# ./start-hbase.sh
starting master, logging to /home/software/hbase/logs/hbase-root-master-hadoop01.out
hadoop01: starting regionserver, logging to /home/software/hbase/bin/../logs/hbase-root-regionserver-hadoop01.out
hadoop03: starting regionserver, logging to /home/software/hbase/bin/../logs/hbase-root-regionserver-hadoop03.out
hadoop02: starting regionserver, logging to /home/software/hbase/bin/../logs/hbase-root-regionserver-hadoop02.out
[[email protected] bin]#
  • 啟動Phoenix(Hadoop01)

[[email protected] bin]# pwd
/home/software/phoenix-4.8.1-HBase-0.98-bin/bin
[[email protected] bin]# ll
總用量 144
drwxrwxr-x 4 1000 1000  4096 9月  23 2016 config
-rw-rw-r-- 1 1000 1000 32440 9月  23 2016 daemon.py
-rwxrwxr-x 1 1000 1000  1881 9月  23 2016 end2endTest.py
-rw-rw-r-- 1 1000 1000  1621 9月  23 2016 hadoop-metrics2-hbase.properties
-rw-rw-r-- 1 1000 1000  3056 9月  23 2016 hadoop-metrics2-phoenix.properties
-rw-rw-r-- 1 1000 1000  1084 9月  23 2016 hbase-site.xml
-rw-rw-r-- 1 1000 1000  2583 9月  23 2016 log4j.properties
-rwxrwxr-x 1 1000 1000  5120 9月  23 2016 performance.py
-rwxrwxr-x 1 1000 1000  3249 9月  23 2016 pherf-cluster.py
-rwxrwxr-x 1 1000 1000  2729 9月  23 2016 pherf-standalone.py
-rwxrwxr-x 1 1000 1000  2116 9月  23 2016 phoenix_sandbox.py
-rwxrwxr-x 1 1000 1000  9354 9月  23 2016 phoenix_utils.py
-rwxrwxr-x 1 1000 1000  2739 9月  23 2016 psql.py
-rwxrwxr-x 1 1000 1000  7746 9月  23 2016 queryserver.py
-rw-rw-r-- 1 1000 1000  1820 9月  23 2016 readme.txt
-rw-rw-r-- 1 1000 1000  1687 9月  23 2016 sandbox-log4j.properties
-rwxrwxr-x 1 1000 1000  4315 9月  23 2016 sqlline.py
-rwxrwxr-x 1 1000 1000  5426 9月  23 2016 sqlline-thin.py
-rwxrwxr-x 1 1000 1000  6895 9月  23 2016 tephra
-rw-rw-r-- 1 1000 1000  2037 9月  23 2016 tephra-env.sh
-rwxrwxr-x 1 1000 1000  6884 9月  23 2016 traceserver.py

[[email protected] bin]# ./sqlline.py hadoop01,hadoop02,hadoop03:2181
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:hadoop01,hadoop02,hadoop03:2181 none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:hadoop01,hadoop02,hadoop03:2181
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/software/phoenix-4.8.1-HBase-0.98-bin/phoenix-4.8.1-HBase-0.98-client.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/software/hadoop-2.7.1/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
18/12/07 15:10:02 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Connected to: Phoenix (version 4.8)
Driver: PhoenixEmbeddedDriver (version 4.8)
Autocommit status: true
Transaction isolation: TRANSACTION_READ_COMMITTED
Building list of tables and columns for tab-completion (set fastconnect to true to skip)...
86/86 (100%) Done
Done
sqlline version 1.1.9
0: jdbc:phoenix:hadoop01,hadoop02,hadoop03:21>

 

至此,Phoenix啟動完成!