无hadoop环境 部署Kylin4 迁移元数据
正式环境为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,导致方法不兼容。
解决:
- 拷贝集群的hive/lib/* 到 本节点 /opt/kylin-env/hive_cdh_jars/
- 在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 迁移元数据相关推荐
- 大数据hadoop环境部署
大数据hadoop在linux环境下的部署安装,包括单节点模式.伪分布模式以及完全分布式模式
- 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 ...
- eclipse中hadoop2.3.0环境部署及在eclipse中直接提交mapreduce任务
转自:http://my.oschina.net/mkh/blog/340112 1 eclipse中hadoop环境部署概览 eclipse中部署hadoop包括两大部分:hdfs环境部署和mapr ...
- Hadoop集群完全分布式模式环境部署
Hadoop集群完全分布式模式环境部署 2013-09-13 17:24:14 分类: HADOOP Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop ...
- 无网络环境,如何部署Docker镜像
一.简介 无网络环境,部署 Docker 镜像,这通常适用于一些部署环境是脱离网络的公司,或者公司内部有着严格的网络安全要求.且还是 Docker 部署的程序,这个时候怎么办,别急今天就来讲讲,无网络 ...
- 【云原生】Hadoop HA on k8s 环境部署
文章目录 一.概述 二.开始部署 1)添加 journalNode 编排 1.控制器Statefulset 2.service 2)修改配置 1.修改values.yaml 2.修改hadoop/te ...
- windows部署hadoop环境
windows部署hadoop环境 a.安装jdk b.hadoop 解压c.环境变量设置 右键计算机属性,从高级系统设置一栏中找到环境变量,如下图所示,在新的面板中进行以下操作,. 在用户变量中,添 ...
- Hadoop环境搭建--Docker完全分布式部署Hadoop环境(菜鸟采坑吐血整理)
系统:Centos 7,内核版本3.10 本文介绍如何从0利用Docker搭建Hadoop环境,制作的镜像文件已经分享,也可以直接使用制作好的镜像文件. 一.宿主机准备工作 0.宿主机(Centos7 ...
- 三、连接MOBA建文件夹配置jdk环境变量,hadoop环境变量。hadoop的本地部署使用
一.建文件夹 ①:我们需要在/opt下面创建两个文件夹 software:放软件的压缩包 (创建software文件夹的命令:mkdir /opt/software) module:放软件解压后的文件 ...
最新文章
- 20220401 A满秩,B满秩,AB一定满秩
- DataGridView 添加ComboBox
- android打开网址重启后也是这个网站,千万不要乱试!iPhone只要打开这个「网址」立即崩溃重启!...
- Meteor环境安装配置
- get_children 方法里面参数 iv_as_copy 有什么用?
- shell编程基础(七): 处理文件命令sed与awk
- 有效值/峰-峰值/幅值/瞬时值
- 下载Latex的IEEE模板
- 梦想就是一种让你感到坚持就是幸福的东西
- 智库说 | 杨宁:从城市管理走向城市治理 大数据将发挥更大作用
- 英国加入亚投行是顺从中国还是想玩无间道?
- 金色传说:SAP-FICO-参考加权因素维护执行成本中心分配 KSV5/KSV3报错GA603:系统错误:集01018000D06表CCSS读出错
- 国庆旅游3天,Python 把我的疲倦治愈了
- Linux:for语句的基本用法举例
- 二手行业能找回“消失的五年”吗?
- 【python】choice函数
- 模拟IO口简单呼吸灯程序
- 【雪野实训记录】Oracle宾馆管理系统-L2综合项目案例
- 2008中国商业得意榜与失意榜
- 如何从git上只下载一个子文件夹