美文网首页
Apache Kylin二次开发

Apache Kylin二次开发

作者: 麦子星星 | 来源:发表于2019-07-30 18:22 被阅读0次

由于工作需要,对kylin进行二次扩展,使其能支持使用Oracle作为数据源进行数据立方的构建

二次开发主要分为两部分进行

一、kylin开发环境搭建(躺坑很久)

环境搭建参考官方文档http://kylin.apache.org/cn/development/,官方文档介绍缺少了一部分,导致在后续的研究中被卡了很久(约等于两周)

官方推荐使用“HDP® 2.4 on Hortonworks Sandbox“作为调试集群,但是官网上却没有这个版本的镜像,于是使用了v2.5。两个版本的区别:v2.4版本各个大数据组件如Hbase,Hive都构建在Vmware中,所以调试的时候可以直接与虚拟机通讯; 但是V2.5所有大数据组件是构建成Docker镜像,虚拟机中Run了这个镜像,镜像Container又有自己的IP。在调试的时候,本地调试程序要先后虚拟机通讯,虚拟机在映射到docker的相应端口上(这就是问他所在)。

官方vmware镜像

针对官网,我这里说一下安装步骤:

1、下载安装vmware工具

1、下载V2.5镜像文件(文件比较大15g,下载后不要删掉,当虚拟机出现故障时,可以直接删除虚拟机直接使用此文件重新安装,省去调试虚拟机问题的n多时间),双击如下图文件,会自动打开vm工具,然后选择目录安装虚拟机(注:选择一个稍微大点的盘,后续回去docker中部署kylin打包环境,需要些额外空间,如果这里盘空间选择的比较少,会导致虚拟机无法正常运行)

Sandbox文件

2、安装好后的相关操作

不用执行ambari-agent start,ambari-server start这两个命令,虚拟机启动后会自动运行这两个命令。官方说:重置ambari的admin用户密码为admin:    ambari-admin-password-reset ,这里需要进入docker中运行,在虚拟机中是无法找到此命令的, 首先执行 docker exec -it sandbox bin/bash 指令,然后在执行ambari-admin-password-reset, 根据提示设置密码,建议设置成amdin/admin (kylin代码中发现有admin的踪迹,权限较高)。启动ambari后,需要手动开启Hbase

开启hbase

3、集群部署完成后,默认的域名为sandbox,sandbox.hortonworks.com,  这里为了方便直接去修改hosts中的信息,把虚拟机的IP映射到这个域名上   10.158.5.21   sandbox.hortonworks.com

配置域名IP映射

4、配置maven(如官网)

ps:在windows上安装的时候可以借助Git bash   创建的路径默认在.git目录中

5、下载安装spark环境

ps:在windows上安装的时候可以借助Git bash   创建的路径默认在.git目录中

6、配置本地hadoop环境

Hadoop-common-bin环境文件

clone  Hadoop-common-bin到本地目录,并配置环境变量  HADOOP_HOME=/XX/XX指向此目录,在系统path中加入此变量,

7、下载源码,源码下周后可以不用修改Kylin.properties文件中的信息直接运行,理论上是可以连接上集群的

下载源码 配置沙箱信息

kylin.properties配置说明:

配置文件所在目录

kylin.job.use-remote-cli=true  #表示以cli的模式连接远程sandbox集群

kylin.job.remote-cli-hostname=sandbox  #连接sandbox的本地域名映射,  hosts中配置的如   192.168.1.1 sandbox

kylin.job.remote-cli-username=root  #登录虚拟机的账号

kylin.job.remote-cli-password=xxxx  #登录虚拟机的密码

测试

8、配置Kylin启动项

配置web启动信息 启动项目

9、如果单个单元进行测试,不想每次从头开始,方便集中debug某个moudle的错误,可以注释掉pom.xml中的check-style插件(java代码规范插件)

pom.xml配置

配置采坑记

在调试DebugTomcat.java启动项时,总是会报如下错误

这个错误,很顽固,各种姿势都试完都无法解决,一开始以为是集群Hbase没有正常启动,或者集群开启了权限,或者调试账号没有集群访问权限,又或者本地windows上与linux上集群通讯问题,又或者docker中运行的镜像有问题,都有尝试过,又或者本地环境配置问题,又或者kylin.propeties配置项问题,或者域名映射问题等等。前前后后花了近两周时间。以上这些尝试都无果,最终无法下手,只能调试Kylin源码获取答案。最终找到了症结所在

问题背景:  kylin调试在我windows上, 在同一台windows上装了vmware,vmware中装了docker,docker运行了sandbox镜像。

通过源码调试,发现kylin无法和hbase metadataserver的端口进行通信(端口16000),至此豁然开朗。

错误原因: kylin调试的时候配置的域名是映射到vmware上, 而真正运行程序的是docker,这就需要vmare和docker之间能够互通(主要是端口上)。

通过下图知道确实在docker上,官方没有映射相关端口(这就是坑)

现有docker端口映射情况 集群相关端口

通过上图可以发现,在docker中并没有开发相关端口,导致在和docker通讯的时候一直无法成功

解决办法:

#hbase和zk通讯端口

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 2181 -j DNAT --to-destination 172.17.0.2:2181

#hbase master端口

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 16000 -j DNAT --to-destination 172.17.0.2:16000 

#//hbase rpc端口

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 16020 -j DNAT --to-destination 172.17.0.2:16020 

# hive metastore

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 9083 -j DNAT --to-destination 172.17.0.2:9083  

# kylin 获取job output信息端口

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8050 -j DNAT --to-destination 172.17.0.2:8050

#dfs.datanode.address,不配置的话会有:createBlockOutputStream when copying data into HDFS错误

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 50010  -j DNAT --to-destination 172.17.0.2:50010 

#yarn.timeline-service.address 端口

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10200 -j DNAT --to-destination 172.17.0.2:10200

驱动包配置:

需将mysql/oracle包放入到java运行环境中,即java的jre/lib/ext(D:\Program Files\Java\jdk1.8.0_201\jre\lib\ext)中,否则会出现java找不到类等方面错误

ps:如果自己用HTable去测试和集群的连通性,需要配置 conf.set("zookeeper.znode.parent", "/hbase-unsecure");  集群默认配置的是hbase-unsecure而不是hbase

ps2:如果还是启动不了,查看7070端口是否被占用,如果使换一个端口,或者kill掉7070占用程序,再次运行即可

完成上述端口配置,kylin终于可以成功的运行起来了。

二、源码改造,就是去研究kylin  经过Apache Calcite 生成的SQL语句如何在下发到Oracle的时候能够满足Oracle的语法(这里暂时省略)

三、打包注意事项

linux上需要安装以下组件:

Nodejs  :  建议版本v10.16.0

NPM: 建议版本6.9.0     npm install npm@6.9.0 -g

Bower: 建议版本1.8.8

grunt:  建议版本v1.3.2    npm install -g grunt-cli

配置环境变量 各组件版本

最后刷新环境变量:source ~/.bash_profile

打包成功

相关文章

网友评论

      本文标题:Apache Kylin二次开发

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