CDH6.3.2集成Flink1.11.2

背景: 最近数据湖技术风风火火,其中三大湖之一的Iceberg,已其不绑定引擎层的特性,引起了作者的注意,作者也想学习一下,奈何自己的CDH里Flink还是1.9版本,因此有了这篇集成的文章。好了,说了这么多的废话,我得去带薪喝杯水了。

下一篇,Flink与Iceberg集成

https://blog.csdn.net/qaz1qaz1qaz2/article/details/118188966

目录

集成步骤如下

1. 编译环境准备

2.Flink源代码编译

3.制作Parcel包

4.Flink服务添加到CDH

5.验证服务可用性


集成步骤如下

1. 编译环境准备

        CentOS 7.2

        npm 6.4.1 和 node 10.14.1 -> 这两个是Flink Web界面编译依赖

        jdk8,

        maven 3.6.3,

        scala 2.11.12 -> 结合CDH上scala的版本,目前scala 2.11.x已经不在维护了。

        以上基础环境的构建,这里就忽略了。

2.Flink源代码编译

2.1 编译flink-shaded

1.下载源码包

wget https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-shaded-12.0/flink-shaded-12.0-src.tgz

2.解压安装包

tar -zxvf flink-shaded-12.0-src.tgz

3.修改flink-shaded的pom.xml

cd flink-shaded-12.0
#修改pom.xml在<profiles>标签内,追加如下内容
<profile>
    <id>vendor-repos</id>
    <activation>
        <property>
            <name>vendor-repos</name>
        </property>
    </activation>
 
    <!-- Add vendor maven repositories -->
    <repositories>
        <!-- Cloudera -->
        <repository>
            <id>cloudera-releases</id>
            <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <!-- Hortonworks -->
        <repository>
            <id>HDPReleases</id>
            <name>HDP Releases</name>
            <url>https://repo.hortonworks.com/content/repositories/releases/</url>
            <snapshots><enabled>false</enabled></snapshots>
            <releases><enabled>true</enabled></releases>
        </repository>
        <repository>
            <id>HortonworksJettyHadoop</id>
            <name>HDP Jetty</name>
            <url>https://repo.hortonworks.com/content/repositories/jetty-hadoop</url>
            <snapshots><enabled>false</enabled></snapshots>
            <releases><enabled>true</enabled></releases>
        </repository>
        <!-- MapR -->
        <repository>
            <id>mapr-releases</id>
            <url>https://repository.mapr.com/maven/</url>
            <snapshots><enabled>false</enabled></snapshots>
            <releases><enabled>true</enabled></releases>
        </repository>
    </repositories>
</profile>

4.打包

#其中Pvendor-repos为pom中的proflie名称,后面指定hadoop和scala的版本,T10C代码10个线程
mvn clean install -DskipTests -Pvendor-repos -Dhadoop.version=3.0.0-cdh6.3.2 -Dscala-2.11 -Drat.skip=true -T10C

2.2 编译flink

1.下载flink 1.11.2,现在这个版本已经被放到archive下面了,感慨一下更新太快!

https://archive.apache.org/dist/flink/flink-1.11.2/

来看一下,这里面既有源码包,也有打好的bin包,这里就按照大家的需要选择,作者用的是源码包

下载源码包

wget https://archive.apache.org/dist/flink/flink-1.11.2/flink-1.11.2-src.tgz

2.解压包 

tar -zxvf flink-1.11.2-src.tgz

​​​​​3.修改flink-1.11.2的pom.xml

cd flink-1.11.2
#修改pom.xml在<profiles>标签内,追加如下内容
<profile>
    <id>vendor-repos</id>
    <activation>
        <property>
            <name>vendor-repos</name>
        </property>
    </activation>
 
    <!-- Add vendor maven repositories -->
    <repositories>
        <!-- Cloudera -->
        <repository>
            <id>cloudera-releases</id>
            <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <!-- Hortonworks -->
        <repository>
            <id>HDPReleases</id>
            <name>HDP Releases</name>
            <url>https://repo.hortonworks.com/content/repositories/releases/</url>
            <snapshots><enabled>false</enabled></snapshots>
            <releases><enabled>true</enabled></releases>
        </repository>
        <repository>
            <id>HortonworksJettyHadoop</id>
            <name>HDP Jetty</name>
            <url>https://repo.hortonworks.com/content/repositories/jetty-hadoop</url>
            <snapshots><enabled>false</enabled></snapshots>
            <releases><enabled>true</enabled></releases>
        </repository>
        <!-- MapR -->
        <repository>
            <id>mapr-releases</id>
            <url>https://repository.mapr.com/maven/</url>
            <snapshots><enabled>false</enabled></snapshots>
            <releases><enabled>true</enabled></releases>
        </repository>
    </repositories>
</profile>

4.编译源码

mvn clean install -DskipTests -Pvendor-repos -Dhadoop.version=3.0.0-cdh6.3.2 -Dscala-2.11 -Drat.skip=true -T10C

问题1:Failed to execute goal net.alchim31.maven:scala-maven-plugin

解决办法:

cd /flink-1.11.2/flink-table/flink-table-planner/

修改pom文件,添加如下内容

<dependency>
   <groupId>net.alchim31.maven</groupId>
   <artifactId>scala-maven-plugin</artifactId>
   <version>3.2.0</version>
</dependency>

<dependency>
   <groupId>org.apache.flink</groupId>
   <artifactId>force-shading</artifactId>
   <version>1.12.0</version>
</dependency>

重新执行编译命令即可

5.将编译好的内容打包

cd /flink-1.11.2/flink-dist/target/flink-1.11.2-bin
tar -zcf flink-1.11.2-bin-scala_2.11.tgz flink-1.11.2/

结果如下图,生成了flink-1.11.2-bin-scala_2.11.tgz

​​​​​​​​​​​​​​

3.制作Parcel包

Parcel包是CDH集成用到的标准包,这里首先要在gitlab上下载插件,插件已经封装好了生成Parcel包的功能,我们只要配置一下参数即可。借此向制作这个插件的作者致敬,感谢分享!

1.下载插件

插件1: https://github.com/pkeropen/flink-parcel

插件2: https://github.com/cloudera/cm_ext

在阅读插件1的build.sh中发现依赖插件2,所以我们提前下载好,并将cm_ext放到build.sh的同级目录

2.配置插件

cd flink-parcel-master
chmod +x build.sh

这里只需要修改插件一的flink-parcel.properties

vi flink-parcel.properties
#FLINK下载地址
#需要把编译生成的flink的tgz包,放到可以访问的web容器中
FLINK_URL=http://172.28.216.45/cloudera-repos/flink-1.11.2-bin-scala_2.11.tgz

#flink版本号
FLINK_VERSION=1.11.2

#扩展版本号
EXTENS_VERSION=BIN-SCALA_2.11

#操作系统版本,以centos为例
OS_VERSION=7

#CDH 小版本
CDH_MIN_FULL=5.16.1
#这里注意,一开始MAX_FULL写的是我CDH的6.3.2但是添加到CDH平台报错,后来把版本调大即可
CDH_MAX_FULL=6.3.4

#CDH大版本
CDH_MIN=5
CDH_MAX=6

3.运行插件

生成Parcel包

./build.sh parcel

在FLINK-1.11.2-BIN-SCALA_2.11_build会生成parcel包

将截图中生成的3个文件拷贝到,httpd服务中,通过url验证

生成on yarn 版本csd文件

./build.sh csd_on_yarn

生成FLINK_ON_YARN-1.11.2.jar文件,将该文件拷贝到/opt/cloudera/csd目录

cp FLINK_ON_YARN-1.11.2.jar /opt/cloudera/csd
#重启cloudera server服务
systemctl restart cloudera-scm-server

4.Flink服务添加到CDH

注意:

一. 在这个过程中遇到的问题比较多,大家一定要坚持到底。

二. 由于之前集成了fink 1.9.1版本,所以已经有flink用户和用户组,如果之前CDH上没有集成过Flink需要创建flink用户和用户组

1.登录Cloudera Manager

设置Parcel

点击Parcel

进入后,点击设置

添加一条flink1.11.2的访问地址,就是我们之前把parcel放到的http服务的地址

然后依次在页面点击,分配,激活

问题2:下载过程中,提示哈希值验证失败

解决:

首先比较一下哈希值

#查看parcel包哈希值
sha1sum FLINK-1.11.2-BIN-SCALA_2.11-el7.parcel

哈希值没有问题

在哈希值没有问题的情况下,很有可能是httpd的配置

vi /etc/httpd/conf/httpd.conf
#在IfModule mime_module标签内,原AddType application/x-gzip .gz .tgz后添加 .parcel
AddType application/x-gzip .gz .tgz .parcel

#重启httpd
systemctl restart httpd

解决

添加Flink-yarn服务

设置完角色后,会启动服务,启动不起来,问题又来了!

首先我们需要通过查看log发现问题,flink的log在/var/log/flink/

问题3:

java.lang.NoSuchMethodError: org.apache.commons.cli.Option.builder

解决:缺少commons-cli包,maven中央仓库下载1.4版本的包, commons-cli-1.4.jar,放到CDH上每个Flink节点的/opt/cloudera/parcels/FLINK/lib/flink/lib目录下,重新启动flink即可。

问题4:

ClassNotFoundException: org.apache.hadoop.yarn.exceptions.YarnException

解决:缺少flink-shaded-hadoop包,maven中央仓库下载对应版本的包,我这里的包是flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar,放到CDH上每个Flink节点的/opt/cloudera/parcels/FLINK/lib/flink/lib目录下,重新启动flink即可。

问题5:flink-web界面无法访问

解决: flink web默认的端口是8081,和CDH上spark worker的webUI的端口重复,需要在CDH上把flink web端口修改一下,我这里改为8981

页面找到flink-yarn,配置页面,修改rest port,修改后需要按照提示点击重启即可。

问题6:hdfs权限问题

Permission denied: user=flink, access=WRITE, inode="/user/flink":hdfs:supergroup:drwxr-xr-x

解决:

su hdfs

hdfs dfs -chown flink:hdfs /user/flink

5.验证Flink可用性

运行WordCount例子

1.准备wc的文本上传到hdfs

hdfs dfs -put /usr/local/wc.txt /user/flink/input
hdfs dfs -chown flink:hdfs   /user/flink/input

2.运行wordcount

/opt/cloudera/parcels/FLINK/lib/flink/bin/flink run -m 172.28.216.13:8981 \
/opt/cloudera/parcels/FLINK/lib/flink/examples/batch/WordCount.jar \
-input hdfs://172.28.216.45/user/flink/input/ \
-output hdfs://172.28.216.45/user/flink/output

查看输出

查看flink-web

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhao_rock_2016

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值