CDH6.3.2编译并集成Flink
一、安装包准备
CDH 6.3.2(Hadoop 3.0.0)、Flink 1.12.4、flink-shaded-12.0、Centos7.9、Maven 3.6.3、Scala-2.13.6和JDK1.8.0_291
flink包下载:https://mirrors.tuna.tsinghua.edu.cn/apache/flink/
二、环境配置
1.将安装包上传到相应目录并解压
tar -xzvf xx.tgz
2.配置环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_291
export PATH=$JAVA_HOME/bin:$PATH
export MAVEN_HOME=/usr/local/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
export SCALA_HOME=/usr/local/scala-2.13.6
export PATH=$SCALA_HOME/bin:$PATH
修改后 source /etc/profile
3、修改maven的setting.xml文件(conf目录下)
添加以下内容
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>google-maven-central</id>
<name>Google Maven Central</name>
<url>https://maven-central.storage.googleapis.com
</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- *仓库在中国的镜像 -->
<mirror>
<id>maven.net.cn</id>
<name>oneof the central mirrors in china</name>
<url>http://maven.net.cn/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
三、编译flink-shaded 版本
1、解压tar包
tar -zxvf flink-shaded-12.0-src.tgz
2、修改pom.xml
vim flink-shaded-12.0/pom.xml
配置如下:
<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>
3、编译
进入到 flink-shaded-12.0文件夹下 执行以下命令:
mvn -T2C clean install -DskipTests -Pvendor-repos -Dhadoop.version=3.0.0-cdh6.3.2 -Dscala-2.13 -Drat.skip=true
-T2C:使用2个进程进行编译
-Dhadoop.version:hadoop版本
-cdh6.3.2:cdh版本
-Dscala-2.13:Scala版本
四、编译Flink1.12.4源码
1、解压tar包
tar -zxvf flink-1.12.4-src.tgz
2、编译
cd flink-1.12.4
mvn clean install -DskipTests -Dfast -Drat.skip=true -Dhaoop.version=3.0.0-cdh6.3.2 -Pvendor-repos -Dinclude-hadoop -Dscala-2.13 -T2C
3、打包编译好的文件
路径在解压后的flink-1.12.4目录下的flink-dist/target/flink-1.12.4-bin
注意:我们是基于scala2.13编译的,压缩包的名称必须是:flink-1.12.4-bin-scala_2.13.tgz
tar -zcf flink-1.12.4-bin-scala_2.13.tgz flink-1.12.4/
五、制作flink-parcel文件
1、下载flink-parcel
git clone https://github.com/pkeropen/flink-parcel.git
如果报错:fatal: unable to access ‘https://github xxxxxxxxx的解决方法;将命令中的 https改为 git
即:将命令改为 git clone git://github.com/pkeropen/flink-parcel.git
如果报错:git error: RPC failed; result=35, HTTP code = 0 fatal: The remote end hung up unexpectedly
设置Git的http缓存大小(如果20M不行就 50M): git config --global http.postBuffer 20M
2、将上面打包好的flink-1.12.4-bin-scala_2.13.tgz放到上一步下载的flink-parcel根目录中
3、修改配置文件flink-parcel.properties
#FLINK 下载地址
#FLINK_URL=https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.10.1/flink-1.10.1-bin-scala_2.12.tgz
#将FLINK_URL网络地址改为自己打包的flink-1.12.4-bin-scala_2.13.tgz本地路径
FLINK_URL=/flink/flink-1.12.4/flink-dist/target/flink-1.12.4-bin/flink-parcel/flink-1.12.4-bin-scala_2.13.tgz
#flink版本号
FLINK_VERSION=1.12.4
#扩展版本号
EXTENS_VERSION=BIN-SCALA_2.13
#操作系统版本,以centos为例
OS_VERSION=7
#CDH 小版本 (确定自己CDH版本在这个范围内即可)
CDH_MIN_FULL=6.1
CDH_MAX_FULL=6.5
#CDH大版本
CDH_MIN=6
CDH_MAX=6
4、编译parcel
在flink-parcel目录下执行
bash ./build.sh parcel
完成会生成FLINK-1.12.4-BIN-SCALA_2.13_build文件
5、生成csd文件
on yarn 版本
bash ./build.sh csd_on_yarn
standalone版本
bash ./build.sh csd_standalone
完成会生成两个jar包
6、完成flink-parcel制作 查看路径
将FLINK_ON_YARN-1.12.4.jar、FLINK-1.12.4.jar以及FLINK-1.12.4-BIN-SCALA_2.13_build目录下的三个文件复制到 /var/www/html/flink-1.12.4
7、查看页面是否可以访问
IP/flink-1.12.4
注意:如果连接访问不了 需要查看httpd服务是否开启或者直接执行 systemctl restart httpd 再刷新页面就可以了;IP后的路径名跟/var/www/html下文件名一致
六、CDH 中安装flink服务
此处假设你已经安装好CDH集群
(1) 将上面生成的FLINK-1.12.4-BIN-SCALA_2.13_build下文件copy至/opt/cloudera/parcel-repo子目录下(目录根据自己实际情况)
(2) 将上述生成的FLINK_ON_YARN-1.12.4.jar、FLINK-1.12.4.jar文件copy至/opt/cloudera /csd子目录下(目录根据自己实际情况)
(3) 在CDH中添加flink的parcel包:
打开CDH管理界面->集群->检查parcel包->flink->分配->**
(4) 重启CDH服务
systemctl restart cloudera-scm-server
systemctl restart cloudera-scm-agent
点击CDH所管理的集群添加服务,在列表中找到flink,按提示添加启动并运行。
说明:
(1) 在如果集群开启了安全,需要配置security.kerberos.login.keytab和security.kerberos.login.principal两个参数才能正正常启动。如未启动kerberos,则在CDH中添加FLINK服务时请清空这两个参数的内容
(2) 如果你计划将 Apache Flink 与 Apache Hadoop 一起使用(在 YARN 上运行 Flink ,连接到 HDFS ,连接到 HBase ,或使用一些基于 Hadoop 文件系统的 connector ),
请选择包含匹配的 Hadoop 版本的下载包,且另外下載对应版本的 Hadoop 库,将官方指定 Pre-bundled Hadoop 2.6.5 ,并且把下载后的 Hadoop 库放置到 Flink 安装目录下的 lib 目录包并设置
HADOOP_CLASSPATH 环境变量。
例如:export HADOOP_CLASSPATH=/opt/cloudera/parcels/FLINK/lib/flink/lib
(3)如果启动flink报错:[21/Jan/2020 16:40:09 +0000] 27087 MainThread redactor
ERROR Redaction rules file doesn't exist, not redacting logs. file: redaction-rules.json,
directory: /run/cloudera-scm-agent/process/2657-flink_on_yarn-FLINK_YARN
cd /opt/cloudera/parcels/FLINK/lib/flink/lib
wget https://repo.maven.apache.org/maven2/org/apache/flink/flink-shaded-hadoop-2-uber/2.6.5-9.0/flink-shaded-hadoop-2-uber-2.6.5-9.0.jar
export HADOOP_CLASSPATH=/opt/cloudera/parcels/FLINK/lib/flink/lib