Phoenix安装配置

作者: Jeffbond | 来源:发表于2016-11-24 13:50 被阅读0次

    Phoenix安装配置

    1.简介

    Phoenix最早是saleforce的一个开源项目,后来成为Apache基金的顶级项目

    Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表、插入数据和对HBase数据进行查询

    因此Phoenix跟HBase是离不开的,Phoenix的安装也是基于HBase的。在安装Phoenix之前,请确保集群上已经安装了Hadoop集群跟HBase集群

    本集群上已部署CHD5.5.1版本的Hadooop(2.6.0)和HBase(1.0.0)

    各节点规划如下:

    192.168.20.100 node-20-100 hdfs-master1 nn1     jn1 hmaster1
    192.168.20.101 node-20-101 hdfs-master2 nn2 zk1 jn2 hmaster2        Phoenix
    192.168.20.102 node-20-102 hdfs-slave1  dn1 zk2 jn3 hregionserver1
    192.168.20.103 node-20-103 hdfs-slave2  dn2 zk3 jn4 hregionserver2
    192.168.20.104 node-20-104 hdfs-slave3  dn3 zk4 jn5 hregionserver3
    192.168.20.105 node-20-105 hdfs-slave4  dn4 zk5     hregionserver4
    

    注意:Cloudera官方并不支持Phoenix,也就是说从Phoenix官网下的预编译的包在CDH安装的HBase上根本不能运行,Phoenix官网对此也没有任何说明!!!刚开始按照Phoenix官网给出的步骤安装完Phoenix后运行报错,幸好有StackOverflow,才找到了原因,并且找到解决方案。链接如下:
    http://stackoverflow.com/questions/31849454/using-phoenix-with-cloudera-hbase-installed-from-repo

    解决方案:
    需要自己从Phoenix官网下载跟HBase版本对应的Phoenix版本(Phoenix 4.x版本均支持HBase 1.0.0)的源码来编译,得到编译后的两个相关jar包。具体安装步骤如下

    2.安装配置

    Phoenix最新版本是4.8,4.x均支持HBase 1.0.0,这里选用Phoenix 4.6.0版本

    2.1下载并解压

    从Phoenix官网下载预编译的phoenix-4.6.0-HBase-1.0-bin.tar.gz

    Phoenix客户端所在的节点最好安装有ZooKeeper,方便后续操作

    这里选择192.168.20.101节点作为Phoenix客户端

    • 切换到/opt目录下:$ cd /opt
    • wget:$ wget 'http://archive.apache.org/dist/phoenix/phoenix-4.6.0-HBase-1.0/bin/phoenix-4.6.0-HBase-1.0-bin.tar.gz'
    • 解压:$ tar -xzvf phoenix-4.6.0-HBase-1.0-bin.tar.gz
    • 建立软链接:$ ln -s phoenix-4.6.0-HBase-1.0-bin phoenix

    2.2编译源码

    如果从Phoenix官网下载4.6.0的源码来编译,需要自己修改pom.xml文件,比较麻烦。Github上已经有人把修改过pom.xml文件的源码上传了,链接如下:
    https://github.com/chiastic-security/phoenix-for-cloudera/tree/4.6-HBase-1.0-cdh5.5

    下载该链接的源码,用maven进行编译

    • 进入phoenix-for-cloudera-4.6-HBase-1.0-cdh5.5目录
    • $ mvn package -DskipTests

    编译成功后显示如下:

    compile succeed

    2.3替换

    将编译后``phoenix-for-cloudera-4.6-HBase-1.0-cdh5.5/phoenix-assembly/target目录下的phoenix-4.6.0-cdh5.5.1-client.jarphoenix-4.6.0-cdh5.5.1-server.jar分别替换/opt/phoenix目录下的phoenix-4.6.0-HBase-1.0-client.jarphoenix-4.6.0-HBase-1.0-server.jar`

    2.4将相关jar拷贝到HBase的lib目录下

    拷贝phoenix-4.6.0-cdh5.5.1-server.jar到集群上每个HBase的lib目录下

    $ cp phoenix-4.6.0-cdh5.5.1-server.jar /usr/lib/hbase/lib
    $ scp phoenix-4.6.0-cdh5.5.1-server.jar node-20-100:/usr/lib/hbase/lib/phoenix-4.6.0-cdh5.5.1-server.jar
    $ scp phoenix-4.6.0-cdh5.5.1-server.jar node-20-102:/usr/lib/hbase/lib/phoenix-4.6.0-cdh5.5.1-server.jar
    $ scp phoenix-4.6.0-cdh5.5.1-server.jar node-20-103:/usr/lib/hbase/lib/phoenix-4.6.0-cdh5.5.1-server.jar
    $ scp phoenix-4.6.0-cdh5.5.1-server.jar node-20-104:/usr/lib/hbase/lib/phoenix-4.6.0-cdh5.5.1-server.jar
    $ scp phoenix-4.6.0-cdh5.5.1-server.jar node-20-105:/usr/lib/hbase/lib/phoenix-4.6.0-cdh5.5.1-server.jar
    

    2.5配置Phoenix客户端的CLASSPATH

    phoenix-4.6.0-cdh5.5.1-client.jar添加到Phoenix客户端的CLASSPATH中,这里是192.168.20.101节点

    在/etc/profile.d目录下新建phoenix.sh

    export CLASSPATH=.:/opt/phoenix/phoenix-4.6.0-cdh5.5.1-client.jar
    
    $ source phoenix.sh
    

    2.6配置hbase-site.xml

    • Master的hbase-site.xml
    <property>
      <name>hbase.regionserver.wal.codec</name>
      <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
    </property>
    
    <property>
      <name>hbase.master.loadbalancer.class</name>
    <value>org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer</value>
    </property>
    <property>
       <name>hbase.coprocessor.master.classes</name>
      <value>org.apache.phoenix.hbase.index.master.IndexMasterObserver</value>
    </property>
    <property>
       <name>hbase.rpc.timeout</name>
      <value>300000</value>
    </property>
    
    • Region Server的hbase-site.xml
    <property>
      <name>hbase.regionserver.wal.codec</name>
      <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
    </property>
    
    <property>
    <name>hbase.region.server.rpc.scheduler.factory.class</name> 
    <value>org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory</value>
    <description>Factory to create the Phoenix RPC Scheduler that usesseparate queues for index and metadata updates</description>
    </property>
    <property>
     <name>hbase.rpc.controllerfactory.class</name>
    <value>org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory</value>
    <description>Factory to create the Phoenix RPCScheduler that uses separate queues for index and metadataupdates</description>
    </property>
     
    <property>
    <name>hbase.coprocessor.regionserver.classes</name>
    <value>org.apache.hadoop.hbase.regionserver.LocalIndexMerger</value>
    </property>
    <property>
       <name>hbase.rpc.timeout</name>
      <value>300000</value>
    </property>
    
    

    至此,Phoenix安装配置完毕

    3.验证是否可用

    3.1进入CLI

    切换到/opt/phoenix/bin目录下

    $ chmod 777 sqlline.py
    $ chmod 777 psql.py
    

    运行

    $ ./sqlline.py localhost
    

    结果如下:

    install success

    说明Phoenix安装成功

    3.2在终端执行SQL脚本

    运行

    $ ./sqlline.py localhost ../examples/STOCK_SYMBOL.sql
    

    报错:

    null.png

    解决:

    examples/STOCK_SYMBOL.sql里第一行-- creates stock table with single row删掉

    重新运行:

    null.png

    3.3加载数据

    运行:

    $ psql.py localhost ../examples/web_stat.sql ../examples/web_stat.csv ../examples/web_stat_queries.sql
    

    结果:

    result FullStackPlan

    欢迎关注公众号: FullStackPlan 获取更多干货哦~

    相关文章

      网友评论

        本文标题:Phoenix安装配置

        本文链接:https://www.haomeiwen.com/subject/vhtouttx.html