Ambari安装phoenix-hbase5.X(适配phoenix-queryserver)

Posted Emmitte

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ambari安装phoenix-hbase5.X(适配phoenix-queryserver)相关的知识,希望对你有一定的参考价值。

背景

    phoenix-hbase4.15及5.X版本后,phoenix-hbase安装包中就不带phoenix-queryserver,phoenix-queryserver需要单独安装。

    Apache官方已给出:   

In the 4.4-4.14 and 5.0 releases the query server and its JDBC client are part of the standard Phoenix distribution. They require no additional dependencies or installation.

After the 4.15 and 5.1 release, the query server has been unbundled into the phoenix-queryserver repository, and its version number has been reset to 6.0.

       由于Ambari安装phoenix-hbase默认带着phoenix-queryserver,若安装phoenix-hbase4.15及5.X版本,phoenix会启动失败,因此本文对安装脚本进行修改,已令Ambari能够适配phoenix-hbase高版本,并启动成功。

       本文将从手动安装跟Ambari安装两种方式出发适配phoenix-hbase高版本,本文选用phoenix-hbase-2.2-5.1.2-bin.tar.gz、phoenix-queryserver-6.0.0-bin.tar.gz,下载地址如下:

https://dlcdn.apache.org/phoenix/phoenix-5.1.2/phoenix-hbase-2.2-5.1.2-bin.tar.gz

https://dlcdn.apache.org/phoenix/phoenix-queryserver-6.0.0/phoenix-queryserver-6.0.0-bin.tar.gz

手动安装

  • 下载安装phoenix-hbase

        下载phoenix-hbase-2.2-5.1.2-bin.tar.gz

wget https://dlcdn.apache.org/phoenix/phoenix-5.1.2/phoenix-hbase-2.2-5.1.2-bin.tar.gz

        解压

tar –zxvf phoenix-hbase-2.2-5.1.2-bin.tar.gz
  • 下载安装phoenix-queryserver

        下载phoenix-queryserver-6.0.0-bin.tar.gz

wget https://dlcdn.apache.org/phoenix/phoenix-queryserver-6.0.0/phoenix-queryserver-6.0.0-bin.tar.gz

        解压

tar –zxvf phoenix-queryserver-6.0.0-bin.tar.gz

         将phoenix-queryserver-6.0.0/bin目录下的phoenix_queryserver_utils.py、queryserver.py、sqlline-thin.py拷贝至phoenix-hbase-2.2-5.1.2-bin/bin下。

cp phoenix-queryserver-6.0.0/bin/phoenix_queryserver_utils.py phoenix-queryserver-6.0.0/bin/queryserver.py phoenix-queryserver-6.0.0/bin/sqlline-thin.py phoenix-hbase-2.2-5.1.2-bin/bin

        将phoenix-queryserver-6.0.0目录下的lib目录、maven目录、phoenix-queryserver-6.0.0.jar、phoenix-queryserver-client-6.0.0.jar拷贝至phoenix-hbase-2.2-5.1.2-bin目录下。

cp –r phoenix-queryserver-6.0.0/lib phoenix-queryserver-6.0.0/maven phoenix-queryserver-6.0.0/phoenix-queryserver-6.0.0.jar phoenix-queryserver-6.0.0/ phoenix-queryserver-client-6.0.0.jar phoenix-hbase-2.2-5.1.2-bin/
  • 启动服务

        解压后的queryserver.py和sqlline-thin.py没有执行权限,需要chmod +x 赋予执行权限。

chmod +x phoenix-hbase-2.2-5.1.2-bin/bin/queryserver.py
chmod +x phoenix-hbase-2.2-5.1.2-bin/bin/sqlline-thin.py

        启动queryserver:

python phoenix-hbase-2.2-5.1.2-bin/bin/queryserver.py start

        启动phoenix:

python phoenix-hbase-2.2-5.1.2-bin/bin/sqlline-thin.py localhost:8765

Ambari安装

        在本地yum源中添加phoenix-queryserver-6.0.0-bin.tar.gz包,例如:

        需要修改stacks下HBASE中对应的phoenix_service.py,另外添加phoenix_queryserver.sh脚本.

cd services/HBASE/package/scripts
vi phoenix_queryserver.sh
#!/bin/bash
cd /usr/lib/
content=`cat /etc/yum.repos.d/bigtop.repo| grep baseurl | grep -v '#'`
baseurl=$content#*=
path="phoenix/noarch/phoenix-queryserver-6.0.0-bin.tar.gz"
url=$baseurl$path
echo $url
wget $url
sleep 3
pwd
chmod 777 phoenix-queryserver-6.0.0-bin.tar.gz
tar -zxvf phoenix-queryserver-6.0.0-bin.tar.gz
sleep 3
chmod -R 777 phoenix-queryserver-6.0.0
cd phoenix-queryserver-6.0.0
cp bin/phoenix_queryserver_utils.py bin/queryserver.py bin/sqlline-thin.py /usr/lib/phoenix/bin/
cp -r lib/ maven/ phoenix-queryserver-* /usr/lib/phoenix
chmod -R 777 /usr/lib/phoenix
sleep 3

        在phoenix_service.py修改(安装phoenix-queryserver部分):

#!/usr/bin/env python
"""
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

"""
import os
import errno
from resource_management.core.logger import Logger
from resource_management.core.resources.system import Execute
from resource_management.core.resources.system import File
from resource_management.libraries.functions import check_process_status, format

# Note: Phoenix Query Server is only applicable to phoenix version stacks and above.
def phoenix_service(action = 'start'): # 'start', 'stop', 'status'
    # Note: params should already be imported before calling phoenix_service()
    import status_params
    pid_file = status_params.phoenix_pid_file
    no_op_test = format("ls pid_file >/dev/null 2>&1 && ps -p `cat pid_file` >/dev/null 2>&1")

    if action == "status":
      check_process_status(pid_file)
    else:
      env = 'JAVA_HOME': format("java64_home"), 'HBASE_CONF_DIR': format("hbase_conf_dir")
      daemon_cmd = format("phx_daemon_script action")
      if action == 'start':
        # 安装phoenix-queryserver
        os.system('pwd')
        os.system('sh cache/stacks/BGTP/1.0/services/HBASE/package/scripts/phoenix_queryserver.sh')
        # 启动phoenix
        Execute(daemon_cmd,
                user=format("hbase_user"),
                environment=env)
  
      elif action == 'stop':
        Execute(daemon_cmd,
                user=format("hbase_user"),
                environment=env
        )
        try:
          File(pid_file, action = "delete")
        except OSError as exc:
          # OSError: [Errno 2] No such file or directory
          if exc.errno == errno.ENOENT:
            Logger.info("Did not remove '0' as it did not exist".format(pid_file))
          else:
            raise

        重启Ambari:

ambari-server restart

 

欢迎关注“程序杂货铺”公众号,里面有精彩内容,欢迎大家收看^_^

 

以上是关于Ambari安装phoenix-hbase5.X(适配phoenix-queryserver)的主要内容,如果未能解决你的问题,请参考以下文章

如何重新安装崩溃的ambari

安装Ambari

hadoop-12-安装ambari-agent

ambari介绍及安装

原创大数据基础之Ambari通过Ambari部署Airflow

Ambari 安装配置 MySql