正式环境为CDH + KYLIN 2.3 , 本文在测试环境(无CDH hadoop)部署kylin4,访问正式环境的hadoop数仓进行cube构建,参考了官网的部署经验,但是官网是针对AWS ,且有些文件未配置情况下会报错,在此重新总结。

1.  组件版本信息

  • JDK 1.8
  • Hive 2.3.9
  • Kylin 4.0 for spark3
  • Spark 3.1.1
  • Hadoop 3.2.0(不需要启动)

2.  安装

2.1 配置环境变量

配置环境变量并使其生效,具体安装目录按实际改动。

 vim /etc/profileexport JAVA_HOME=/usr/local/javaexport JRE_HOME=${JAVA_HOME}/jreexport HADOOP_HOME=/opt/kylin-env/hadoopexport HIVE_HOME=/opt/kylin-env/hiveexport SPARK_HOME=/opt/kylin-env/sparkexport KYLIN_HOME=/opt/kylin-4.0.0export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${KYLIN_HOME}/bin:${HIVE_HOME}/bin:${HIVE_HOME}/conf:${HADOOP_HOME}/bin:$PATH# 保存以上文件内容后执行以下命令source /etc/profile

2.2 安装 JDK 1.8

如果已安装请忽略此项。

下载 jdk1.8 到准备好服务器,解压到 /usr/local/java 目录:

mkdir /usr/local/java tar -xvf java-1.8.0-openjdk.tar -C /usr/local/java

2.3 安装 MySql

Kylin支持MySQL作为Metastore存储,在 MySQL 中新建一个专为存储 Kylin 元数据的数据库,例如 kylin;

在配置文件 kylin.properties 中配置 kylin.metadata.url={metadata_name}@jdbc,该参数中各配置项的含义如下,其中 url、username 和 password 为必须配置项,其他项如果不配置将使用默认值。

提示:{metadata_name} 需要替换成用户需要的元数据表名(如:kylin_metadata),如果这张表已存在,会使用现有的表;如果不存在,则会自动创建该表。

  • url:JDBC 连接的 URL
  • username:JDBC 的用户名
  • password:JDBC 的密码,如果对密码进行了加密,填写加密后的密码
  • driverClassName: JDBC 的 driver 类名,默认值为 com.mysql.jdbc.Driver
  • maxActive:最大数据库连接数,默认值为 5
  • maxIdle:最大等待中的连接数量,默认值为 5
  • maxWait:最大等待连接毫秒数,默认值为 1000
  • removeAbandoned:是否自动回收超时连接,默认值为 true
  • removeAbandonedTimeout:超时时间秒数,默认为 300
  • passwordEncrypted:是否对 JDBC 密码进行加密,默认为 FALSE

提示:如果需要对 JDBC 密码进行加密,请 $KYLIN_HOME/tomcat/webapps/kylin/WEB-INF/lib/下运行如下命令:

java -classpath kylin-server-base-<version>.jar\
:kylin-core-common-<version>.jar\
:spring-beans-4.3.10.RELEASE.jar:spring-core-4.3.10.RELEASE.jar\
:commons-codec-1.7.jar \
org.apache.kylin.rest.security.PasswordPlaceholderConfigurer \
AES <your_password>

如在 Kylin v2.5 中,执行如下命令:

java -classpath kylin-server-base-2.5.0.jar\
:kylin-core-common-2.5.0.jar\
:spring-beans-4.3.10.RELEASE.jar\
:spring-core-4.3.10.RELEASE.jar\
:commons-codec-1.7.jar \
org.apache.kylin.rest.security.PasswordPlaceholderConfigurer \
AES test123

执行结果如下:

AES encrypted password is:
bUmSqT/opyqz89Geu0yQ3g==

将生成的密码填入 kylin.metadata.url 中的 password 中,设置 passwordEncrypted 为 TRUE。

由于元数据不依赖于 HBase,所以需要在配置文件 $KYLIN_HOME/conf/kylin.properties 中添加 ZooKeeper 的连接项 kylin.env.zookeeper-connect-string = host:port。

kylin.properties 的样例配置如下:

kylin.metadata.url=mysql_test@jdbc,url=jdbc:mysql://localhost:3306/kylin,username=kylin_test,password=bUmSqT/opyqz89Geu0yQ3g==,maxActive=10,maxIdle=10,passwordEncrypted=true
kylin.env.zookeeper-connect-string=localhost:2181

下载mysql-connector.jar

cd /opt/kylin-env
wget -b https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.49/mysql-connector-java-5.1.49.jar
mv mysql-connector-java-5.1.49.jar mysql-connector-java.jar

2.4 配置 Hadoop

下载 Hadoop 并解压

cd /opt/kylin-env
wget -b https://archive.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz
tar -xzvf hadoop-3.2.0.tar.gz
mv hadoop-3.2.0 hadoop

下载CDH环境YARN配置,上传并覆盖core-site.xml 、hdfs-site.xml 、mapred-site.xml 、yarn-site.xml。

2.4 部署 Hive

下载 Hive 并解压

wget -b https://downloads.apache.org/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz
tar -xzvf apache-hive-2.3.9-bin.tar.gz
mv apache-hive-2.3.9-bin hive

下载CDH Hive 配置文件,解压将目录下的*-site.xml覆盖到${HIVE_HOME}/conf下。

使用命令 hive 测试启动。

启动过程遇到的问题:

问题一:

Cannot find hadoop installation: $HADOOP_HOME or $HADOOP_PREFIX must be set or hadoop must be in the

编辑conf/hive-env.sh添加环境变量:

export JAVA_HOME=/usr/local/java
export JRE_HOME=${JAVA_HOME}/jre
export HADOOP_HOME=/opt/kylin-env/hadoop
export HIVE_CONF_DIR=/opt/kylin-env/hive/conf
export HIVE_AUX_JARS_PATH=/opt/kylin-env/hive/lib

问题二:

java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V

这是由于 hive2 中 guava 包版本与 hadoop3 的 guava 版本不一致导致的,请使用 $HADOOP_HOME/share/hadoop/common/lib/ 目录下的 guava jar 替换 $HIVE_HOME/lib 目录中的 guava jar。

为防止后续过程中出现 jar 包冲突,需要从 hive 的类加载路径中移除一些 spark 以及 scala 相关的 jar 包

rm $HIVE_HOME/lib/jackson-module-scala_2.11-2.6.5.jar

注:此处只列出了我们在测试过程中遇到的产生冲突的 jar 包,如果用户在遇到类似 jar 包冲突的问题,可以根据类加载路径判断哪些 jar 包产生了冲突并移除相关 jar 包。建议当相同 jar 包产生版本冲突时,保留 spark 类加载路径下的 jar 包版本。

2.5 部署 Spark Standalone

下载 Spark 3.1.1 并解压

wget -b http://archive.apache.org/dist/spark/spark-3.1.1/spark-3.1.1-bin-hadoop3.2.tgz
tar -xzvf spark-3.1.1-bin-hadoop3.2.tgz
mv spark-3.1.1-bin-hadoop3.2 spark

Copy hive 配置文件及 mysql-jdbc

cp mysql-connector-java.jar $SPARK_HOME/jars
cp $HIVE_HOME/conf/core-site.xml $SPARK_HOME/conf
cp $HIVE_HOME/conf/hdfs-site.xml $SPARK_HOME/conf
cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf

编辑conf/spark-env.sh,添加:

export JAVA_HOME=/usr/local/java
export JRE_HOME=${JAVA_HOME}/jre
export HADOOP_HOME=/opt/kylin-env/hadoop
export HIVE_CONF_DIR=/opt/kylin-env/hive/conf
export HIVE_AUX_JARS_PATH=/opt/kylin-env/hive/lib

启动 Spark master 和 worker

$SPARK_HOME/sbin/start-master.sh
$SPARK_HOME/sbin/start-worker.sh spark://test5.dabig.com:7077

问题:使用spark-shell测试查询表数据报错:Invalid method name: ‘get_table_req‘

spark-sql> select * from zps_d001 limit 1;
Error in query: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to fetch table zps_xxx. Invalid method name: \'get_table_req\'
org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to fetch table zps_xxx. Invalid method name: \'get_table_req\'at org.apache.spark.sql.hive.HiveExternalCatalog.withClient(HiveExternalCatalog.scala:112)

原因:spark内置的hive版本为2.3.7,而集群中的版本为2.1.1,导致方法不兼容。

解决

  1. 拷贝集群的hive/lib/* 到 本节点 /opt/kylin-env/hive_cdh_jars/
  2. 在conf/spark-default.conf中设置
spark.sql.hive.metastore.version=2.1.1
spark.sql.hive.metastore.jars=/opt/kylin-env/hive_cdh_jars/*

2.6 部署 Zookeeper 伪集群

下载 zookeeper 安装包并解压

wget -b http://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
tar -xzvf zookeeper-3.4.13.tar.gz
mv zookeeper-3.4.13 zookeeper

修改 zookeeper 配置文件,启动三节点 zookeeper 伪集群

cp zookeeper/conf/zoo_sample.cfg zookeeper/conf/zoo1.cfgcp zookeeper/conf/zoo_sample.cfg zookeeper/conf/zoo2.cfgcp zookeeper/conf/zoo_sample.cfg zookeeper/conf/zoo3.cfg

依次修改上述三个配置文件,添加如下内容:

server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
dataDir=/tmp/zookeeper/zk1/data
dataLogDir=/tmp/zookeeper/zk1/log
clientPort=2181server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
dataDir=/tmp/zookeeper/zk2/data
dataLogDir=/tmp/zookeeper/zk2/log
clientPort=2182server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
dataDir=/tmp/zookeeper/zk3/data
dataLogDir=/tmp/zookeeper/zk3/log
clientPort=2183

创建所需文件夹和文件

mkdir -p /tmp/zookeeper/zk1/data
mkdir -p /tmp/zookeeper/zk1/log
mkdir -p /tmp/zookeeper/zk2/data
mkdir -p /tmp/zookeeper/zk2/log
mkdir -p /tmp/zookeeper/zk3/data
mkdir -p /tmp/zookeeper/zk3/logvim /tmp/zookeeper/zk1/data/myid
1vim /tmp/zookeeper/zk2/data/myid
2vim /tmp/zookeeper/zk3/data/myid
3

启动 zookeeper 集群

 ./zookeeper/bin/zkServer.sh start ./zookeeper/conf/zoo1.cfg./zookeeper/bin/zkServer.sh start ./zookeeper/conf/zoo2.cfg./zookeeper/bin/zkServer.sh start ./zookeeper/conf/zoo3.cfg

2.7 部署 Kylin

下载 kylin 4.0 二进制包并解压

wget -b https://mirror-hk.koddos.net/apache/kylin/apache-kylin-4.0.0/apache-kylin-4.0.0-bin.tar.gz
tar -xzvf apache-kylin-4.0.0-bin.tar.gz
mv apache-kylin-4.0.0-bin kylin-4.0.0
mkdir $KYLIN_HOME/ext
cp kylin-env/mysql-connector-java.jar $KYLIN_HOME/ext# hdfs创建kylin所需目录
hdfs dfs -mkdir /user/test/kylin
hdfs dfs -mkdir /user/test/kylin/spark-history

修改配置文件 vi $KYLIN_HOME/conf/kylin.properties

kylin.metadata.url=kylin_metadata@jdbc,url=jdbc:mysql://test1.dabig.com:3306/kylin,username=root,password=123456,maxActive=10,maxIdle=10
kylin.env.zookeeper-connect-string=localhost
kylin.engine.spark-conf.spark.master=spark://test5.dabig.com:7077
kylin.engine.spark-conf.spark.submit.deployMode=client
kylin.env.hdfs-working-dir=hdfs://ns1/user/test/kylin
kylin.engine.spark-conf.spark.eventLog.dir=hdfs://ns1/user/test/kylin/spark-history
kylin.engine.spark-conf.spark.history.fs.logDirectory=hdfs://ns1/user/test/kylin/spark-history
kylin.query.spark-conf.spark.master=spark://test5.dabig.com:7077

可以根据实际情况调整 构建和查询需要的资源:

kylin.engine.spark-conf.spark.driver.cores=1
kylin.engine.spark-conf.spark.driver.memory=2G
kylin.engine.spark-conf.spark.driver.memoryOverhead=1G
kylin.engine.spark-conf.spark.executor.cores=1
kylin.engine.spark-conf.spark.executor.instances=1
kylin.engine.spark-conf.spark.executor.memory=2G
kylin.engine.spark-conf.spark.executor.memoryOverhead=1Gkylin.query.spark-conf.spark.driver.cores=1
kylin.query.spark-conf.spark.driver.memory=2G
kylin.query.spark-conf.spark.driver.memoryOverhead=1G
kylin.query.spark-conf.spark.executor.cores=1
kylin.query.spark-conf.spark.executor.instances=1
kylin.query.spark-conf.spark.executor.memory=2G
kylin.query.spark-conf.spark.executor.memoryOverhead=1G

kylin可能缺少以下jar包,下载并拷贝到lib下:

# 下载 commons-collections-3.2.2.jar
wget -b https://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar
cp kylin-env/commons-collections-3.2.2.jar $KYLIN_HOME/tomcat/webapps/kylin/WEB-INF/lib/
# 下载 commons-configuration-1.3.jar
wget -b https://repo1.maven.org/maven2/commons-configuration/commons-configuration/1.3/commons-configuration-1.3.jar
cp kylin-env/commons-configuration-1.3.jar $KYLIN_HOME/tomcat/webapps/kylin/WEB-INF/lib/

启动:

bin/kylin.sh start

启动报错:

org.apache.kylin.shaded.com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: Fail to check or create znode for chRoot /kylin/kylin_metadata
Caused by: java.lang.RuntimeException: Fail to check or create znode for chRoot /kylin/kylin_metadata due to
Caused by: org.apache.curator.CuratorConnectionLossException: KeeperErrorCode = ConnectionLoss

解决办法

进入zookeeper创建目录

zkCli.sh -server 127.0.0.1:2181

查看是否存在kylin目录

[zk: localhost:2181(CONNECTED) 1] ls /

如果没有kylin ,创建节点

# create [-s] [-e] path data acl 可以注意一下各个版本的变化
[zk: localhost:2181(CONNECTED) 1] create /kylin
[zk: localhost:2181(CONNECTED) 1] quit

3.  恢复元数据

备份旧环境元数据:

./bin/metastore.sh backup

从旧服务拷贝备份元数据到新环境中,从旧版本升级到4.0.0

./bin/kylin.sh org.apache.kylin.tool.CubeMigrationCLI -srcConfig /opt/kylin-4.0.0/meta_backups/meta_2021_11_08_11_13_17 -dstConfig ADMIN:KYLIN@test5.dabig.com:7070 -allCubes

无hadoop环境 部署Kylin4 迁移元数据相关推荐

  1. 大数据hadoop环境部署

    大数据hadoop在linux环境下的部署安装,包括单节点模式.伪分布模式以及完全分布式模式

  2. flink安装以及运行自带wordcount示例(单机版,无hadoop环境)

    1.下载安装包到/opt目录 2.解压安装包 tar zxf flink-1.6.1-bin-hadoop26-scala_2.11.tgz 3.启动flink cd /opt/flink-1.6.1 ...

  3. eclipse中hadoop2.3.0环境部署及在eclipse中直接提交mapreduce任务

    转自:http://my.oschina.net/mkh/blog/340112 1 eclipse中hadoop环境部署概览 eclipse中部署hadoop包括两大部分:hdfs环境部署和mapr ...

  4. Hadoop集群完全分布式模式环境部署

    Hadoop集群完全分布式模式环境部署 2013-09-13 17:24:14 分类: HADOOP Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop ...

  5. 无网络环境,如何部署Docker镜像

    一.简介 无网络环境,部署 Docker 镜像,这通常适用于一些部署环境是脱离网络的公司,或者公司内部有着严格的网络安全要求.且还是 Docker 部署的程序,这个时候怎么办,别急今天就来讲讲,无网络 ...

  6. 【云原生】Hadoop HA on k8s 环境部署

    文章目录 一.概述 二.开始部署 1)添加 journalNode 编排 1.控制器Statefulset 2.service 2)修改配置 1.修改values.yaml 2.修改hadoop/te ...

  7. windows部署hadoop环境

    windows部署hadoop环境 a.安装jdk b.hadoop 解压c.环境变量设置 右键计算机属性,从高级系统设置一栏中找到环境变量,如下图所示,在新的面板中进行以下操作,. 在用户变量中,添 ...

  8. Hadoop环境搭建--Docker完全分布式部署Hadoop环境(菜鸟采坑吐血整理)

    系统:Centos 7,内核版本3.10 本文介绍如何从0利用Docker搭建Hadoop环境,制作的镜像文件已经分享,也可以直接使用制作好的镜像文件. 一.宿主机准备工作 0.宿主机(Centos7 ...

  9. 三、连接MOBA建文件夹配置jdk环境变量,hadoop环境变量。hadoop的本地部署使用

    一.建文件夹 ①:我们需要在/opt下面创建两个文件夹 software:放软件的压缩包 (创建software文件夹的命令:mkdir /opt/software) module:放软件解压后的文件 ...

最新文章

  1. 20220401 A满秩,B满秩,AB一定满秩
  2. DataGridView 添加ComboBox
  3. android打开网址重启后也是这个网站,千万不要乱试!iPhone只要打开这个「网址」立即崩溃重启!...
  4. Meteor环境安装配置
  5. get_children 方法里面参数 iv_as_copy 有什么用?
  6. shell编程基础(七): 处理文件命令sed与awk
  7. 有效值/峰-峰值/幅值/瞬时值
  8. 下载Latex的IEEE模板
  9. 梦想就是一种让你感到坚持就是幸福的东西
  10. 智库说 | 杨宁:从城市管理走向城市治理 大数据将发挥更大作用
  11. 英国加入亚投行是顺从中国还是想玩无间道?
  12. 金色传说:SAP-FICO-参考加权因素维护执行成本中心分配 KSV5/KSV3报错GA603:系统错误:集01018000D06表CCSS读出错
  13. 国庆旅游3天,Python 把我的疲倦治愈了
  14. Linux:for语句的基本用法举例
  15. 二手行业能找回“消失的五年”吗?
  16. 【python】choice函数
  17. 模拟IO口简单呼吸灯程序
  18. 【雪野实训记录】Oracle宾馆管理系统-L2综合项目案例
  19. 2008中国商业得意榜与失意榜
  20. 如何从git上只下载一个子文件夹

热门文章

  1. SSL连接中握手协议及握手过程
  2. iNFTnews|风口之上,耐克推出的web3平台.SWOOSH能否引领市场?
  3. irun和vcs工具,检测TB环境零延时无限循环以及zero-delay组合逻辑
  4. 浅析Oracle等待事件
  5. 几个有趣的短片视频原始脚本
  6. 针对CVE-2015-2545漏洞研究分析
  7. 黑龙江全教计算机科技有限公司,【体测】坐位体前屈评分标准
  8. 2015年游戏行业总结:IP是把双刃剑
  9. hive sql 行转列列转行
  10. 业务团队如何制定有效的薪酬激励制度