1.环境
环境准备
- 三台节点
- zookeeper三节点
- hadoop三节点
- hbase三节点
2.pheonix集成
官网下载地址,需挂梯子,使用官网推荐的对应hbase版本即可
https://phoenix.apache.org/download.html
下载及解压
wget https://dlcdn.apache.org/phoenix/phoenix-5.2.0/phoenix-hbase-2.5.0-5.2.0-bin.tar.gz
tar -zxvf phoenix-hbase-2.5.0-5.2.0-bin.tar.gz
mv phoenix-hbase-2.5.0-5.2.0-bin phoenix-hbase
修改 /etc/profile 环境变量
export PHEONIX_HOME=/root/phoenix-hbase
export PHEONIX_CLASSPATH=$PHEONIX_HOME
export PATH=$PHEONIX_HOME/bin:$PATH
配置资源重载
source /etc/profile
拷贝解压包内服务端jar至hbase/lib目录
cp phoenix-server-hbase-2.5.0-5.2.0.jar ../hbase/lib/
三台节点均配置
3. 开启二级索引和shema
修改 hbase-site.xml
<property><name>hbase.regionserver.wal.codec</name><value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property><property><name>phoenix.schema.mapSystemTablesToNamespace</name><value>true</value></property><property><name>phoenix.schema.isNamespaceMappingEnabled</name><value>true</value></property>
三台节点均配置
4.启动pheonix
重启hbase
./stop-hbase.sh
./start-hbase.sh
单机具体重启看上篇hbase文章
这里连接的是zookeeper地址,默认使用2181端口
sqlline.py node1,node2,node3
执行语句即可
CREATE TABLE IF NOT EXISTS "student"(
id VARCHAR primary key,
name VARCHAR,
age BIGINT,
addr VARCHAR
);
5.索引
5.1.全局索引
create index index_name on my_table(column);
在查询列只有column时快,在hbase中会单独开索引表使用一行存储,有其他列需回表
如 select columns from my_table where columns =xxx
5.2.包含索引
create index index_name on my_table(column1) include(column2);
在查询列只有 column1或column2 都快,在hbase中一条数据会使用两行存储
phoenix语法-官网
https://phoenix.apache.org/language/index.htm
5.3 本地索引
create local index index_name on my_table(columns);
columns可多个
适用于写操作频繁,会将所有信息放在一个影子列族中,读取也是范围扫描但是没有全局索引快,会直接在表中修改,不用单独创建索引表
后续命令行或者使用客户端连接即可