栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

无hadoop环境 部署Kylin4 迁移元数据

无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/profile
 
 export JAVA_HOME=/usr/local/java
 export JRE_HOME=${JAVA_HOME}/jre
 export HADOOP_HOME=/opt/kylin-env/hadoop
 export HIVE_HOME=/opt/kylin-env/hive
 export SPARK_HOME=/opt/kylin-env/spark
 export KYLIN_HOME=/opt/kylin-4.0.0
 export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
 export 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-.jar
:kylin-core-common-.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 

如在 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.cfg
 cp zookeeper/conf/zoo_sample.cfg zookeeper/conf/zoo2.cfg
 cp 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=2181
 
server.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=2182
 
server.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/log
 
vim /tmp/zookeeper/zk1/data/myid
1
 
vim /tmp/zookeeper/zk2/data/myid
2
 
vim /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=1G

kylin.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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/583804.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号