本文说明如何在已有的cdh集群上添加flink服务。分为如下几步进行说明:
1.环境说明
2.flink-parcel的制作
3.cm添加flink-parcel
4.cm上添加flink服务
5.验证
环境说明
flink-parcel制作
前提:在制作flink-parcel的时候保证git、maven已安装并可以访问外网。
制作分为如下步骤:
1)下载制作包
执行命令:git clone https://github.com/pecanNBU/flink-parcel.git
2)修改配置文件
修改flink-parcel.properties配置文件,修改内容如下图:
详细内容见附件。
3)生成parcel文件
执行命令:./build.sh parcel 执行成功后会在FLINK-1.9.1-BIN-SCALA_2.11_build路径下生成如下三个文件:
FLINK-1.9.1-BIN-SCALA_2.11-el7.parcel
FLINK-1.9.1-BIN-SCALA_2.11-el7.parcel.sha
manifest.json
执行中可能出现的问题:
1:无法下载maven-jar-plugin等插件
因为网络的原因,检查网络或换成本地虚拟机进行生成
2:无法下载flink-1.9.1-bin-scala_2.11.tgz
flink-parcel.properties配置文件中的FLINK_UR配置项配置的url无法下载,可以通过flink官网上查找下载地址(https://flink.apache.org/downloads.html)
4)生成csd文件
on yarn 版本
执行命令:./build.sh csd_on_yarn 执行成功后会生成FLINK_ON_YARN-1.9.1.jar文件。
standalone 版本
命令:./build.sh csd_standalone
cm添加flink
1)拷贝文件
将FLINK_ON_YARN-1.9.1.jar文件拷贝到cloudera-server所在主机的/opt/cloudera/csd/路径下,不存在该路径就手动进行创建。
将FLINK-1.9.1-BIN-SCALA_2.11-el7.parcel、FLINK-1.9.1-BIN-SCALA_2.11-el7.parcel.sha、manifest.json三个文件拷贝到cloudera-server所在主机的/opt/cloudera/parcel-repo/路径下,不存在该路径就手动进行创建,如果该路径下存在manifest.json则将该文件重命名之后再进行拷贝。
2)cm管理界面添加flink-parcel
步骤如下:
分别执行“分配”、“激活”。在右侧’停用’按钮在未分配未激活前为”分配”按钮。
3)添加flink服务
分配、激活完flink-parcel之后添加flink服务,如下:
执行中可能出现的问题:
1:分配、激活flink-parcel之后在添加服务界面上找不到flink服务,日志提示:Range [CDH 4.0.0‥CDH 6.0.0) does not enclose compatibility range [CDH 5‥CDH 7.0.0)
因为本次搭建的cdh集群版本为5.15.1,而生成的flink-parcel文件要求的版本在[CDH 5‥CDH 7.0.0)范围内,超出了本地cdh集群运行的范围[CDH 4.0.0‥CDH 6.0.0)。
将flink-parcel.properties配置文件中的CDH 小版本和CDH 大版本配置在已存在cdh集群的范围内,重新生成parcel。
2:在重新拷贝parcel到cdh中cm界面中parcel激活一直卡住
用cm提供的api接口手动将卡住的parcel返回到激活之前的状态,操作步骤如下:
获取cdh集群名称:
curl -u ${username}:${password} 'http://${cloudera-managerIP}/api/v1/clusters'
执行回滚激活状态:
curl -u ${username}:${password} -X POST http://10.121.37.9:7180/api/v16/clusters/${clusterName}/parcels/products/${PARCEL名称}/versions/${PARCEL版本}/commands/deactivate
启动flink服务
添加完服务之后直接在cm管理界面中进行启动操作。启动成功后会在yarn上启动一个容器,如下图所示:
执行中可能出现的问题:
1:启动报错,查看/var/log/flink/flink-yarn.out日志提示classnofound错误
因为缺少jar,将缺少的jar包从/opt/cloudera/parcels/CDH/jars路径拷贝到/opt/cloudera/parcels/FLINK-1.9.1-BIN-SCALA_2.11/lib/flink/lib/路径下。可能会缺少多个jar,需要反复重启->查看日志进行确定,本次搭建缺少的jar如下:
commons-configuration-1.6.jar
commons-lang-2.6.jar
commons-logging-1.1.3.jar
guava-11.0.2.jar
hadoop-auth-2.6.0-cdh5.15.1.jar
hadoop-common-2.6.0-cdh5.15.1.jar
hadoop-hdfs-2.6.0-cdh5.15.1.jar
hadoop-yarn-api-2.6.0-cdh5.15.1.jar
hadoop-yarn-client-2.6.0-cdh5.15.1.jar
hadoop-yarn-common-2.6.0-cdh5.15.1.jar
htrace-core4-4.0.1-incubating.jar
log4j-1.2.17.jar
protobuf-java-2.5.0.jar
slf4j-log4j12-1.7.15.jar
验证
通过执行flink自带的workcout程序进行验证。执行如下命令:
/opt/cloudera/parcels/FLINK-1.9.1-BIN-SCALA_2.11/lib/flink/bin/flink run -yid application_1568019723575_0007 ./examples/batch/WordCount.jar -input hdfs://szpbs-bjmap-dev-app14:8020/tmp/LICENSE -output hdfs://szpbs-bjmap-dev-app14:8020/tmp/wordcount-result_1.txt
执行成功后会在hsfs的/tmp路径下生成wordcount-result_1.txt文件。
注意:
1.-yid通过yarn的webui进行查看
2.要确保hdfs上有LICENSE文件,不存在可以自行拷贝到hdfs上。
3.要确保执行该命令的用户在hdfs上的/tmp有写权限。
其他
/opt/cloudera/parcels/FLINK-1.9.1-BIN-SCALA_2.11/lib/flink/bin/flink-yarn.sh 脚本中添加其他启动参数,如下图:
附件
flink-parcel.properties
#FLINk 下载地址
FLINK_URL=http://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.9.1/flink-1.9.1-bin-scala_2.11.tgz
#flink版本号
FLINK_VERSION=1.9.1
#扩展版本号
EXTENS_VERSION=BIN-SCALA_2.11
#操作系统版本,以centos为例
OS_VERSION=7
#CDH 小版本
CDH_MIN_FULL=5.2
CDH_MAX_FULL=6.0
#CDH大版本
CDH_MIN=5
CDH_MAX=5
今天的分享就到这,有看不明白的地方一定是我写的不够清楚,所有欢迎提任何问题以及改善方法。