| 对于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而导致的。 |