一、软件要求
- Hadoop: 2.7+, 3.1+ (since v2.5)
- Hive: 0.13 - 1.2.1+
- HBase: 1.1+, 2.0 (since v2.5)
- Spark (可选) 2.3.0+
- Kafka (可选) 1.0.0+ (since v2.5)
- JDK: 1.8+ (since v2.5)
- OS: Linux only, CentOS 6.5+ or Ubuntu 16.0.4+
- 已部署ambari+HDP
二、代码下载
VERSION=`hdp-select status hadoop-client | sed 's/hadoop-client - \([0-9]\.[0-9]\).*/\1/'`
sudo git clone https://github.com/cas-bigdatalab/ambari-kylin-service.git /var/lib/ambari-server/resources/stacks/HDP/$VERSION/services/KYLIN
三、自定义服务集成原理
对于安装过 ambari 的朋友可能比较熟悉;我们在部署 hdp 集群的时候;在界面上;会让我们选择 hdp stack 的版本;比如有 2.0、… 、2.6、3.0、3.1 等;每一个 stack 版本在 ambari 节点上都有对应的目录;里面存放着 hdp 各服务;像 hdfs、yarn、mapreduce、spark、hbase 这些;stack 版本高一些的服务相对多一些。stack 版本目录具体在 ambari-server 节点的 /var/lib/ambari-server/resources/stacks/HDP 下我们用 python 开发的自定义服务脚本就会放到这个目录下。
将自定义服务放到指定目录下;我们需要重启 ambari server 才能在 添加服务 界面加载出来我们的自定义服务;ambari 在安装自定义服务的过程中;也会将 python 开发的自定义服务脚本分发到 agent 节点上;由 agent 节点的 自定义服务脚本 来执行 安装、部署 步骤。
四、KYLIN服务代码结构分析
metainfo.xml 文件:描述了对整个项目的约束配置;是一个核心 文件
configuration 目录:里面放置一个或多个 xml 文件;用于将该服务的配置信息展示在前端页面;也可以在ambari 页面上对服务的一些配置做更改
package 目录:里面包含 scripts 文件夹,该目录下存放着 python 文件;用于对服务的安装、配置、启动、停止等操作。自定义服务 python 脚本依赖的模块是 resource_management 。该模块分布在不同的目录下,但内容是一致的
quicklinks:用于生成快速链接;实现 url 的跳转。可支持多个 url 展示。
五、部署KYLIN
将kylin-service服务代码复制到 /var/lib/ambari-server/resources/stacks/HDP/$VERSION/services/KYLIN下
重启ambari-server
ambari-server restart
重启之后在ambari页面添加服务,即可找到kylin,按步骤进行安装 。
五、报错记录:
1.Something wrong with Hive CLI or Beeline, please execute Hive CLI or Beeline
修改 find-hive-dependency.sh,把 hive_env=`hive ${hive_conf_properties} -e set 2>&1 | grep 'env:CLASSPATH'` 这一行删掉,加入下面几行后,kylin 能成功启动了。
if [ "${client_mode}" == "beeline" ]
then
beeline_shell=`$KYLIN_HOME/bin/get-properties.sh kylin.source.hive.beeline-shell`
beeline_params=`bash ${KYLIN_HOME}/bin/get-properties.sh kylin.source.hive.beeline-params`
beeline_params='-n root -p root -u jdbc:hive2://fkcent7worker1:10000'
hive_env=`${beeline_shell} ${hive_conf_properties} ${beeline_params} --outputformat=dsv -e "set;" >/tmp/hive_env.txt 2>&1 `
# hive_env=`${beeline_shell} ${hive_conf_properties} --outputformat=dsv -e "set;" >/tmp/hive_env.txt 2>&1 `
hive_env=`grep 'env:CLASSPATH' /tmp/hive_env.txt`
hive_env=`echo ${hive_env#*env:CLASSPATH}`
hive_env="env:CLASSPATH"${hive_env}
else
source ${dir}/check-hive-usability.sh
hive -e set >/tmp/hive_env.txt 2>&1
hive_env=`grep 'env:CLASSPATH' /tmp/hive_env.txt`
hive_env=`echo ${hive_env#*env:CLASSPATH}`
hive_env="env:CLASSPATH"${hive_env}
fi
2.ambari启动kylin时报A couple of hive jars can't be found: , please check jar files in current HCAT_HOME or export HCAT_HOME='YOUR_LOCAL_HCAT_HOME
vim /etc/profile export HIVE_HOME=/usr/hdp/current/hive-server2 export HCAT_HOME=/usr/hdp/current/hive-webhcat source /etc/profile