<p>Kylin的有些版本官方已经下架了,Docker Hub上也没镜像了,所以需要自己搭建以下,为了以后更方便快捷地使用,就编写了一个更轻量级的Dockerfile。</p>
讯享网
本次搭建使用的源码包来自华为云镜像站,里面有Kylin各个版本的二进制包:
讯享网 https://repo.huaweicloud.com:8443/artifactory/apache-local/kylin/
以3.1.1版本为例,进入Kylin的官网可以找到安装指南Installation Guide | Apache Kylin,根据要求准备Kylin的依赖环境:
检查 Hive 的可用版本。可以访问 Apache Hive 官方存档页面,查看最新的可用版本:
https://archive.apache.org/dist/hive/
以此类推,找到HBase和Hadoop的下载链接:
讯享网 https://archive.apache.org/dist/hbase/ https://archive.apache.org/dist/hadoop/common/
需要注意的是一定要根据官方指南进行版本对齐。
因为需要反复调试,所以记录下一些基本的调试命令:
# 构建容器 docker build -t kylin:3.1.1 . # 运行 sudo docker run -d --name kylin -p 7070:7070 kylin:3.1.1 # 进入容器 docker exec -it kylin /bin/bash # 查看日志 docker logs kylin # 停止容器 sudo docker stop kylin # 删除容器 sudo docker rm kylin # 查看镜像 docker images # 删除镜像 docker rmi ID # 删除所有镜像 docker rmi $(docker images -q) --force # 清除缓存 docker system prune -a
解决:
讯享网 # 使用 openjdk:8-jdk-alpine 作为基础镜像 FROM openjdk:8-jdk-alpine # 设置工作目录 WORKDIR /root # 默认运行 bash CMD ["/bin/sh"]
构建并进入容器:
docker build -t openjdk-alpine . sudo docker run -it openjdk-alpine
查找JAVA的真实路径并修改好Dockerfile。
解决:修改/conf/kylin.properties:
讯享网 # 使用本地文件系统路径 kylin.engine.spark-conf.spark.eventLog.dir=file:///tmp/kylin/spark-history kylin.engine.spark-conf.spark.history.fs.logDirectory=file:///tmp/kylin/spark-history
重新打包:
tar -czvf apache-kylin-3.1.1-bin-hbase1x.tar.gz apache-kylin-3.1.1-bin-hbase1x
别忘了创建相应的目录:

讯享网
2024-11-08 10:35:03,089 INFO [main-SendThread(localhost:2181)] zookeeper.ClientCnxn:975 : Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error) 2024-11-08 10:35:03,091 WARN [main-SendThread(localhost:2181)] zookeeper.ClientCnxn:1102 : Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:716) at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)
解决:HBase没启动成功,要把hbase放在启动命令CMD里。
设置容器启动时执行的命令,先启动hbase,再起hadoop,最后起kylin,最后使用死循环挂起容器
解决:复制一份默认配置到同目录下。
讯享网
2024-11-08 10:41:12,357 INFO [close-hbase-conn] hbase.HBaseConnection:137 : Closing HBase connections... 2024-11-08 10:41:12,357 INFO [close-hbase-conn] client.ConnectionManager$HConnectionImplementation:1676 : Closing zookeeper sessionid=0x0 2024-11-08 10:41:12,457 INFO [close-hbase-conn] zookeeper.ZooKeeper:684 : Session: 0x0 closed 2024-11-08 10:41:12,457 INFO [main-EventThread] zookeeper.ClientCnxn:512 : EventThread shut down ERROR: Unknown error. Please check full log.
解决:替换hive-site.xml中的占位符为本地路径,否则Hive还是启动不了
讯享网
当然如果觉得麻烦,还可以用awk命令一键执行上述操作:
最后别忘了创建相应的临时目录:
讯享网
解决:版本不对,确认版本对齐。
如果还是不成功,可以直接使用我的Dockerfile:
最终成功执行的、完整的Docker Logs,仅供参考:
讯享网
刚才只是以3.1.1版本为例,其实其他版本也是同理,例如调试后可运行的2.3.1版本的Dockerfile:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/206647.html