欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CDH6.3.2编译并集成Flink

程序员文章站 2022-07-14 21:50:05
...

一、安装包准备
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