Flink1.12 yarn部署和兼容CDH环境

3,403 阅读3分钟

1. 下载安装Flink1.12

1.1 下载

flink.apache.org/downloads.h…

选择 scala2.11的下载既可

cd /opt/
wget https://www.apache.org/dyn/closer.lua/flink/flink-1.12.2/flink-1.12.2-bin-scala_2.11.tgz

1.2 解压

tar xf flink-1.12.2-bin-scala_2.11.tgz

1.3 配置环境 

vim /etc/profile
export HADOOP_CONF_DIR=PATH/lib/hadoop/etc/hadoop
export HBASE_CONF_DIR=PATH/lib/hbase/conf
export HADOOP_CLASSPATH=`hadoop classpath`

source /etc/profile

执行一下  hadoop classpath 显示lib jar 包,配置正确

1.4 测试例子(基于yarn)

cd flink-1.12.2
./bin/flink run -m yarn-cluster -p 5 -yjm 1024m -ytm 1024m  examples/streaming/WordCount.jar

1.5 flink standalone 模式

cd flink-1.12.2
./bin/start-cluster.sh  #启动

访问:  http://ip:8081 访问UI界面,但下面任务提交,可以界面查看

#运行任务
./bin/flink run  examples/streaming/WordCount.jar

2. 兼容CDH环境

上面跑了官方例子没有问题,只是一个单词统计,,并没有对hadoop es kafka等读写操作, 接下来对接hadoop会有问题,所以要做一下兼容

2.1官网说明

ci.apache.org/projects/fl…

flink-shaded-hadoop-2-uber是啥?

为解决特定HADOOP版本做的一个解决依赖的项目,这里的CDH就是属于特定版本

警告:从Flink 1.11开始,flink-shaded-hadoop-2-uberFlink项目不再正式支持使用发行版。建议用户通过提供Hadoop依赖关系 HADOOP_CLASSPATH

官网说了 Flink1.11之后了 flink-shaded-hadoop-2-uber这个项目就不做了,所以需要我们自已去打包, 打好包之后 放到 flink的lib目录下

2.2  配置flink-shaded

flink-shaded是啥? flink依赖项目

地址:  github.com/apache/flin…

这个项目的1.11和1.12版本已经没有 hadoop项目了,所以我们只能拉取 1.10的分支进行打包

下载地址:  codeload.github.com/apache/flin…

开始配置

unzip flink-shaded-release-10.0.zip
cd flink-shaded-release-10.0/flink-shaded-hadoop-2-parent
vim pom.xml
        <hadoop.version>3.0.0</hadoop.version>
        <zookeeper.version>3.4.5</zookeeper.version>
cd flink-shaded-hadoop-2-uber
vim pom.xml  #加这个是因为hadoop commons-cli是1.2版本。直接跑会报错
         <dependency>
                    <groupId>commons-cli</groupId>
                    <artifactId>commons-cli</artifactId>
                    <version>1.3.1</version>
         </dependency>
cd ../../    #回到项目工程下 加入aliyun 源
vim 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://maven.aliyun.com/repository/central</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
        </repositories>
    </profile>

2.4 编译打包

maven安装略过(下载官方包,解压,声明环境变量,配置文件不需要更改)

cd flink-shaded-release-10.0/
mvn clean install -DskipTests -Drat.skip=true -Pvendor-repos  -Dhadoop.version.cdh=3.0.0

打包完成后,将  flink-shaded-hadoop-2-parent/flink-shaded-hadoop-2-uber/target/flink-shaded-hadoop-2-uber-3.0.0-10.0.jar 包放到flink lib目录下

2.5 声明Flink命令全局可用

ln -sv /opt/flink-1.12.1/bin/flink  /usr/bin/flink

2.6 运行带hadoop和es读取写入的例子

flink run -m yarn-cluster  -p 5 -yjm 1024m -ytm 2048m -ynm MysqlSyncEsStream  -yqu root.default  -c com.xxxx.xxx.xxxx.task.MysqlSyncEsStream  /root/xxx-xxxx-xxx-xx-1.0-SNAPSHOT.jar 9

3. 部署模式(Flink1.11新增一种)

3.1 Flink三种部署模式 

  • Session模式    预分配资源, 向集群申请flink集群,并长驻在集群,固定数量的JobManager和TaskManager, 提交任务既可工作,免去了申请创建资源和开销,但是资源总体有限,任务越多,负载越大,且资源没有隔离. Session模式一般用来部署那些对延迟非常敏感但运行时长较短的作业
  • Per-Job模式    独立flink集群,每次申请,每次创建,就是上面我们用的flink run --yarn-cluster 方式. 资源隔离,拥有专属的JobManager和TaskManager, 启动任务资源重新创建,启动慢。作业运行完成,资源销毁,Per-Job模式一般用来部署那些长时间运行的作业。
  • Application模式  Flink1.11新增的部署模式 

参考链接:  

www.jianshu.com/p/90d9f1f24…

blog.csdn.net/weixin\_328…