环境需求
组件名称 |
版本 |
maven |
3.6.3 |
java |
1.8 |
flink源代码 |
1.12.4 |
flink-shaded源代码 |
1.12 |
hadoop |
3.0.0-cdh6.2.0 |
scala |
2.11.8 |
环境变量
JDK的安装,参考之前的内容即可,此处主要对Maven进行安装:
下载并解压maven的安装包,然后修改环境变量即可:
vim /etc/profile
export M3_HOME=.../apache-maven-3.6.3 # 配置自己的maven路径
export PATH=$M3_HOME/bin:$M3_HOME:$PATH
source /etc/profile
查看maven安装情况:
mvn --version
Flink源代码下载
从Flink官网,下载源码,选择固定版本。
这里解释一下为什么选择Flink-1.12.4版本:
1个是因为从1.10版本之后,添加了很多新的功能,且对FlinkSQL进行了很多优化,而1.12作为今年的一个大版本,其中对各个底层做了很多优化:特别是对Hadoop版本的绑定解除了,这就非常奈斯。而且还有很多的依赖进行了移除,这个基本都是要进行升级的,所以直接选择高版本Flink进行安装是最省事的。
其中,对flink-shaded选择12.0版本即可:
编译过程
1、将flink-shaded解压,并放在flink-1.12.4目录,然后进入flink-shaded-12,修改其中的pom.xml,主要添加CDH的仓库:
<!--添加CDH的仓库-->
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
</repository>
</repositories>
2、编译flink-shaded:
mvn clean install -DskipTests -Dhadoop.version=3.0.0-cdh6.2.0
3、为flink-1.12.4的pom.xml也添加cloudera的仓库;(类似第1步就不放图了);
但是注意,还需要在里面添加haddop和hive的版本信息:
<hadoop.version>3.0.0</hadoop.version>
<hive.version>2.1.1</hive.version>
<hivemetastore.hadoop.version>3.0.0</hivemetastore.hadoop.version>
4、编译flink-1.12.4:
mvn -T2C clean install -DskipTests -Dfast -Pinclude-hadoop -Pvendor-repos -Dhadoop.version=3.0.0-cdh6.2.0 -Dscala-2.11
这一步,可能要进行多次,下载的依赖包也会很多,所以持续时间也比较长。
5、然后将编译好的文件进行打包:
编译好的文件在flink-1.12.4/flink-dist/target/flink-1.12.4-bin/目录下:
tar -zcf flink-1.12.4-bin-scala_2.11.tgz flink-1.12.4/
至此,依赖Scala-2.11和Cloudera的jar包已经编译完成。
制作parcel文件
1、首先,需要确保安装了git(因为要从github下载制作工具);
2、在自己想放的位置,克隆parcel工具目录:
git clone https://github.com/pkeropen/flink-parcel.git
3、然后进入到flink-parcel目录,此时build.sh的权限是-rw-r–r–,所以需要修改其中build.sh的权限:
chmod 755 ./build.sh
4、修改了权限之后,如果是在自己mac则需要增加下面这一步,如果是在阿里云服务器shell下,可以省略:
修改build.sh,删除里面的指定用户和指定用户组,--owner和--group:
5、修改flink-parcel.properties:
#FLINK 下载地址 直接指定自己的本地位置
FLINK_URL=/Users/hiwes/data/flink/flink-parcel/flink-1.12.4-bin-scala_2.11.tgz
#flink版本号
FLINK_VERSION=1.12.4
#扩展版本号
EXTENS_VERSION=BIN-SCALA_2.11
#操作系统版本,以centos为例
OS_VERSION=7
#CDH 小版本
CDH_MIN_FULL=6.1
CDH_MAX_FULL=6.3
#CDH大版本
CDH_MIN=5
CDH_MAX=6
6、将【编译过程】中编译的flink jar包,放在上一步中指定的位置,自行指定。
7、编译parcel:
./build.sh parcel
这个时候,会报错找不到java_home,不要慌,此时需要在下载的工具下的cm_ext目录中,分别修改cm-schema和validator的pom.xml,添加以下内容:
<javadocExecutable>/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/bin/javadoc</javadocExecutable>
如图所示:
其中根据自己的JDK位置进行修改,注意指向javadoc的位置。
8、生成csd文件:
./build.sh csd_on_yarn # 主要使用Flink on yarn,所以这才是需要的操作
./build.sh csd_standalone # 这是生成standalone包的,所以可以省略
9、此时的生成结果如下:
10、将这两部分内容,上传到服务器(如果已经是在集群节点上,则直接进行scp传输即可)。
将FLINK_ON_YARN-1.12.4.jar放在CDH目录下:/opt/cloudera/csd
将另外三个文件,放在CDH目录下:/opt/cloudera/parcel-repo
11、此时,重启cm服务:
systemctl restart cloudera-scm-server
Flink下载分发
1、通过下图进入parcel位置:
2、对Flink进行分发和激活,最终达到下图要求:
部署Flink-yarn服务
1、添加服务:
2、选择节点:
3、进行初步配置:
注意其中需要去掉kerberos的设置:
4、继续执行,此时会报错,因为找不到Hadoop和HBase的依赖,此时从配置中添加以下内容:
5、此时重新启动,则完成服务添加。
其他的配置
1、此时在服务器上面,是找不到任何flink命令的,所以需在环境变量中进行配置,这个点可以说是五星级的重要,现在所有的技术贴中都没有提到这一点,原本在21年1月1号之前,Cloudera官网提供parcels包下载之前是可以的,但是现在需要自己编译之后,这一步没办法省略,所有节点都加。
测试
flink run -m yarn-cluster ./examples/batch/WordCount.jar
生成结果如下:
至此,所有安装和初步测试结束。