Apache Phoenix 为 Apache Hadoop 提供基于 SQL 的 OLTP 和运营分析,使用 Apache HBase 作为其后备存储,并提供与 Apache 生态系统中其他项目的集成,如 Spark、Hive、Pig、Flume和 MapReduce 。
1、下载Phoenix
$ wget http://apache.fayea.com/phoenix/apache-phoenix-5.0.0-HBase-2.0/bin/apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz
2、将phoenix*.jar拷贝到各个节点
包括Master、HBase的每个节点
$ cd apache-phoenix-5.0.0-HBase-2.0-bin
$ scp -r apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz cdh@cdh02:/home/cdh/
3、解压Phoenix
$ tar -zxvf apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz
$ cd apache-phoenix-5.0.0-HBase-2.0-bin
$ sudo phoenix*.jar /opt/cloudera/parcels/CDH/lib/hbase/lib/
4、增加hbase-site.xml 配置
hbase-site.xml 的 Gateway客户端高级配置代码段(安全阀)
hbase-site.xml 的 RegionServer 高级配置代码段(安全阀)
切记!!! 这两个地方都要添加, 否则RegionServer启动不了
1、二级索引支持
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
1、命名空间开启
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>consistent</value>
</property>
HBase >> 配置 >> RegionServer >> 高级 >> ssl-server.xml 的 HBase 服务高级配置代码段(安全阀)>> 点击 + 添加


HBase >> 配置 >> Gateway >> 高级 >> ssl-server.xml 的 HBase 服务高级配置代码段(安全阀)>> 点击 + 添加


5、重启Hbase集群, 部署客户端配置

把core.xml、hdfs.xml、hbase.xml拷贝到/home/cdh/apache-phoenix-5.0.0-HBase-2.0-bin/bin/下
$ 上传下载文件到服务器,拷贝目录下所有文件到 /home/cdh/apache-phoenix-5.0.0-HBase-2.0-bin/bin/
$ cp *.xml /home/cdh/apache-phoenix-5.0.0-HBase-2.0-bin/bin/
$ /home/cdh/apache-phoenix-5.0.0-HBase-2.0-bin/bin/sqlline.py

Java使用引入依赖
<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-core</artifactId>
<version>5.0.0-HBase-2.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.log4j</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>16.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.8.4</version>
</dependency>
package com.pactera.hbase;
import java.sql.*;
public class Phoenix {
private static String driver = "org.apache.phoenix.jdbc.PhoenixDriver";
public static void main(String[] args) throws SQLException {
try
{
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Statement stmt = null;
ResultSet rs = null;
Connection con = DriverManager.getConnection("jdbc:phoenix:storage01,storage02,storage03:2181/hbase");
stmt = con.createStatement();
String sql = "select * from test_phoenix_api";
rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.print("id:"+rs.getInt("mykey"));
System.out.println(",name:"+rs.getString("mycolumn"));
}
stmt.close();
con.close();
}
}
网友评论