1. 下载安装Flink1.12
1.1 下载
选择 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官网说明
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依赖项目
这个项目的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新增的部署模式
参考链接: