对于CDH集成Flink在网上找了一下博文,有的给出了官方的链接,好像点进去都失效了。然后通过尝试制作parcel包的方式来集成到CDH的方式成功了,过程也比较简单,特此记录一下。 首先感谢flink-parcel作者,接下来讲诉制作过程。 1.首先下载相关项目到服务器,然后修改flink-parcel.properties
git clone https://github.com/pkeropen/flink-parcel.git
cd flink-parcel
flink-parcel.properties内容如下:
#FLINK 下载地址
FLINK_URL=https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.11.4/flink-1.11.4-bin-scala_2.12.tgz
#flink版本号
FLINK_VERSION=1.11.4
#扩展版本号
EXTENS_VERSION=BIN-SCALA_2.12
#操作系统版本,以centos为例
OS_VERSION=6
#CDH 小版本
CDH_MIN_FULL=5.2
CDH_MAX_FULL=6.3.1
#CDH大版本
CDH_MIN=5
CDH_MAX=6
如果FLINK_URL报404问题的话,重新修改地址就行了,国内镜像地址有得是。 2,然后生成Parcel文件,当然这个过程可能会遇到问题,如果python版本过低的话最后生成可能会报错。
./build.sh parcel
python版本过低引起的问题:解决方法升级到2.7,之前用的是2.6
Traceback (most recent call last):
File "cm_ext/make_manifest/make_manifest.py", line 115, in <module>
manifest = make_manifest(path)
File "cm_ext/make_manifest/make_manifest.py", line 79, in make_manifest
with tarfile.open(fullpath, 'r') as tar:
AttributeError: 'TarFile' object has no attribute '__exit__'
3.打包完parcel之后应该会在FLINK-1.11.4-BIN-SCALA_2.12_build目录下生成三个文件,然后开始生成csd文件
// 生成 FLINK_ON_YARN-1.11.4.jar包
on yarn 版本
./build.sh csd_on_yarn
standalone版本
./build.sh csd_standalone
接下来就是要集成到CDH的步骤了,首先将刚刚打好的csd包放入到指定目录:
cp FLINK_ON_YARN-1.11.4.jar /opt/cloudera/csd/
然后找个服务器安装个nginx服务,生成parcel步骤中生成的三个文件,放在nginx根目录中。链接大致如下:http://127.0.0.1/flink-1.11.4/,flink-1.11.4目录是自己在根目录新建的,然后把三个文件放进去,尝试访问一下manifest.json文件: 然后就是登录CDH manager后台,各个版本后台略有差异,我的是cdh 5.8.5 将静态文件的链接放进去http://10.1.21.251/flink-1.11.4/,这个过程可能需要重启一下CDH manager,然后依次选择下载>分配>激活。最后添加服务: 点击继续,后面配置步骤中,如果集群开启了安全,需要配置security.kerberos.login.keytab和security.kerberos.login.principal两个参数才能正正常启动。如未启动kerberos,则在CDH中添加FLINK服务时请清空这两个参数的内容。 最后是启动报错总结:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/exceptions/YarnException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.yarn.exceptions.YarnException
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 7 more
如果启动时报如下错误,则是缺少hadoop的相关jar包(flink-shaded-hadoop-2-uber-2.7.5-7.0.jar),将jar下载下来,放到/opt/cloudera/parcels/FLINK-1.10.0-BIN-SCALA_2.11/lib/flink/lib/目录下即可。
还有一个错误:
Caused by: java.lang.ArithmeticException: / by zero
logIfComponentMemNotIntegerMultipleOfYarnMinAllocation
这个措施是因为把yarn.scheduler.minimum-allocation-mb参数设置为0而导致的。
|