phoenix 使用说明
2018-06-14~2018-06-19
Apache Phoenix是构建在HBase之上的关系型数据库层,作为内嵌的客户端JDBC驱动用以对HBase中的数据进行低延迟访问。Apache Phoenix会将用户编写的sql查询编译为一系列的scan操作,最终产生通用的JDBC结果集返回给客户端。数据表的元数据存储在HBase的表中被会标记版本号,所以进行查询的时候会自动选择正确的schema。直接使用HBase的API,结合协处理器(coprocessor)和自定义的过滤器的话,小范围的查询在毫秒级响应,千万数据的话响应速度为秒级。
1. 为 CDH 安装 phoenix
下载链接:
解压到每个节点并执行:
# cp apache-phoenix-4.14.0-cdh5.14.2-bin/phoenix-4.14.0-cdh5.14.2-server.jar /opt/cloudera/parcels/CDH/jars/
# cd /opt/cloudera/parcels/CDH/lib/hbase/lib
# ln -s ../../../jars/phoenix-4.14.0-cdh5.14.2-server.jar phoenix-4.14.0-cdh5.14.2-server.jar
Phoenix支持两种索引:可变索引跟不可变索引。在可变表上建的索引是可变索引,在不可变表上建的索引是不可变索引。可变索引是指插入或删除数据的时候会同时更新索引;不可变索引适用于只写入一次不再更改的表,索引只建立一次,再插入数据不会更新索引。需要在 hbase-site.xml 中进行相关配置使其支持可变索引(不可变索引无需另外配置,默认支持)。
java.sql.SQLException: ERROR 1029 (42Y88): Mutable secondary indexes must have the hbase.regionserver.wal.codec property set to org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec in the hbase-sites.xml of every region server.
集群所有 RegionServer 的 hbase-site.xml 配置文件里面增加如下配置:
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
<description>支持可变索引</description>
</property>
<property>
<name>hbase.regionserver.executor.openregion.threads</name>
<value>100</value>
<description>Phoenix导致HBase集群region offline故障</description>
</property>
<property>
<name>hbase.rpc.timeout</name>
<value>6000000</value>
</property>
<property>
<name>hbase.client.operation.timeout</name>
<value>6000000</value>
</property>
<property>
<name>hbase.client.scanner.timeout.period</name>
<value>6000000</value>
</property>
<property>
<name>hbase.client.ipc.pool.type</name>
<value>RoundRobinPool</value>
</property>
<property>
<name>hbase.clie