正式环境为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. 关于时间差查询的一个小技巧
  2. 动态规划和摩尔投票法
  3. 深度探索C++ 对象模型(4)-Default Copy Constructor(2)
  4. 【JOURNAL】好久了啊
  5. tshark 和 tcpdump 的区别
  6. 收集java精确截取字符串
  7. C向Python正确传递数组的代码
  8. CFree注册码及破解过程【转】
  9. 一元三次方程重根判别式_一元三次方程快速解法
  10. html 特殊符号怎么打出来,特殊符号怎么打出来_特殊符号图案大全-太平洋电脑网...
  11. Android-GIF图片显示
  12. 公司新加了一台友宝自动售货机引发的思考-适配者模式
  13. 简单实现Linux下线程池
  14. 基础知识 | es6的知识点
  15. 除了ARM架构,还有其他的架构吗?有没有可能开发出比ARM架构还好的? RISC-V是未来的趋势吗?
  16. what Data Fabric
  17. Android 解析JSON数据填充到Listview中
  18. 关于C++中重定义:不同类型的基类型问题
  19. 极智Paper | YOLOv7 更高 更快 更强
  20. Java 集合深入理解(13):Stack 栈

热门文章

  1. stream benchmark 介绍
  2. 中M22春C、Java入门练习-7.14
  3. 超高清壁纸|文件收集
  4. windows 通过ftp更新系统
  5. 编写设定游戏按键的小程序
  6. 设置win10屏幕旋转的快捷键冲突的问题
  7. 程序员你为什么这么累?导读
  8. vs2019配置Qt5开发环境
  9. 在VMare中kali安装nessus详解
  10. 关于在Windows10上删除.dll文件的方法