先部署一个flink基础环境,可以参考
kerberos环境下parcel方式部署flink1.15.3 基于CDH6.3.2 Flink on Yarn_Mumunu-的博客-CSDN博客
二进制包则是
kerberos环境下Flink on Yarn集群部署 基于flink1.15.3 hadoop 3.0CDH6.3.2_Mumunu-的博客-CSDN博客
flink-sql 和CDH部署中麻烦的地方在于几个版本报错
Unrecognized Hadoop major version number: 3.0.0-cdh6.3.2
通过排查ShimLoader.java源码,开源社区hive 2.x的版本这种情况下是不支持hadoop 3.x版本。但是CDH中hive 2.1.1-cdh6.3.2版本和社区版本是不一样的,可以支持hadoop 3.x版本
hbase-default.xml file seems to be for an older version of HBase (2.2.3), this version is 2.1.0-cdh6.3.2
CDH的hbase和开源版本的版本号不一样
所以需要我们自己单独编译一个适配cdh的版本
使用flink源码重新编译生成flink-sql-connector-hive-2.2.0_2.11,编译之前需要修改flink-connectors/flink-sql-connector-hive-2.2.0中的pom文件,将hive-exec的版本改成2.1.1-cdh6.3.2
使用flink源码重新编译生成flink-sgl-connector-hbase-2.2-1.15.4.jar,编译之前需要修改 flink-connectors/flink-sql-connector-hbase-2.2/src/main/resources/hbase-default.xml中的hbase.defaults .for.version为你的cdh版本
下载源码包 ,官网下就行
准备相关环境
maven 我的版本是3.6.3
mvn添加一下conjars的新地址
<mirrors>里插入
<mirror>
<id>conjars-https</id>
<url>https://conjars.wensel.net/repo/</url>
<mirrorOf>conjars</mirrorOf>
</mirror>
<mirror>
<id>conjars</id>
<name>conjars</name>
<url>https://conjars.wensel.net/repo/</url>
<mirrorOf>conjarse/mirrorOf>
</mirror>
java 我的版本和cdh使用的一致
修改一些相关配置
配置cdh仓库
vim flink-1.15.3/pom.xml
在<repositories>插入
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
修改依赖的hadoop和hive版本
vim flink-1.15.3/pom.xml
<hadoop.version>3.0.0-cdh6.3.2</hadoop.version>
vim flink-1.15.3/flink-connectors/flink-sql-connector-hive-2.2.0/pom.xml
<version>2.11-cdh6.3.2</version>
开始编译
mvn clean install -DskipTests -Dfast -Dhadoop.version=3.0.0-cdh6.3.2
其中会有几个报错
org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde Maven下载失败
直接下载缺失的包,地址如下
https://public.nexus.pentaho.org/#browse/search=keyword=pentaho-aggdesigner-algorithm
将jar和pom放到maven对应路径下即可。
pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar
pentaho-aggdesigner-algorithm-5.1.5-jhyde.pom
附本人下载版本的网盘链接
链接:https://pan.baidu.com/s/1CPSi8_bn9PRy8vUG7EsSAA?pwd=lbdj
提取码:lbdj
2. flink-runtime-web: Failed to run task: 'npm ci --cache-max=0 --no-save ${npm.proxy}' failed. org.apache.commons.exec.ExecuteException
网上的办法都测试过 ,无法解决这个问题。有大佬能解决望赐教。考虑到我编译这个只是为了一个jar包 ,所以直接跳过web dashboard的编译
mvn clean install -DskipTests -Dfast -Dhadoop.version=3.0.0-cdh6.3.2 -Dskip.npm
如果是新环境可能要编译数个小时。慢慢等吧
将新编译好的jar包放到flink的lib目录中,替换原有jar包
位置在target目录下
将CDH环境中的libfb303-0.9.3.jar放到flink的lib目录中
在将mysql-connector-java-5.1.48.jar放到flink的lib目录中
把jar包在集群中同步一下 ,确保所有flink节点都有
hbase还需要添加环境信息
打开bin/下的flink,sql-client,yarn-session.sh 添加
export HADOOP_CLASSPATH=`hadoop classpath`
export HADOOP_CLASSPATH="$HADOOP_CLASSPATH:$HBASE_HOME/lib/*"
添加几个hbase的jar包。从cdh的hbase家目录复制过来
hbase-client-2.1.0-cdh6.3.2.jar
hbase-common-2.1.0-cdh6.3.2.jar
hbase-hadoop2-compat-2.1.0-cdh6.3.2.jar
hbase-hadoop-compat-2.1.0-cdh6.3.2.jar
hbase-protocol-2.1.0-cdh6.3.2.jar
hbase-protocol-shaded-2.1.0-cdh6.3.2.jar
hbase-server-2.1.0-cdh6.3.2.jar
htrace-core4-4.2.0-incubating.jar
metrics-core-3.0.1.jar
metrics-core-3.2.6jar
netty-all-4.1.50.Final.jar
重启flink-session
测试一下
kinit一下你的principal
-- 进入sql客户端
sql-client.sh
-- 创建hive catalog
CREATE CATALOG hive_catalog WITH (
'type' = 'hive',
'default-database' = 'bigdata',
'hive-conf-dir' = '/etc/hive/conf'
);
-- set the HiveCatalog as the current catalog of the session
USE CATALOG hive_catalog;
show tables;
没报错就是成功了 有报错看下日志 问题都不大
1. sql-client.sh
2. 执行
create table hbase_table_1 (
rowkey string,
cf1 ROW<username string>,
PRIMARY KEY (rowkey) NOT ENFORCED
) WITH (
'connector' = 'hbase-2.2',
'table-name' = 'test:flink_test',
'zookeeper.quorum' = 'cdhd03:2181'
);
3.查询:
select * from hbase_table_1;
没报错就是成功了 有报错看下日志 问题都不大