kerberos环境下parcel方式部署flink1.15.3 基于CDH6.3.2 Flink on Yarn

news2024/11/15 4:09:27

1.1 Flink on Yarn的优势

相对于 Standalone 模式,在Yarn 模式下有以下几点好处:

1.资源按需使用,提高集群的资源利用率;

2.任务有优先级,根据优先级运行作业;

3.基于 Yarn 调度系统,能够自动化地处理各个角色的 Failover:

JobManager 进程和 TaskManager 进程都由 Yarn NodeManager 监控;

如果 JobManager 进程异常退出,则 Yarn ResourceManager 会重新调度 JobManager 到其他机器;

如果 TaskManager 进程异常退出,JobManager 会收到消息并重新向 Yarn ResourceManager 申请资源,重新启动 TaskManager。

第2章 Flink on Yarn模式运行的方式

2.1 Application

Application模式:简答的说就是直接run job,每次提交的任务Yarn都会分配一个JobManager,执行完之后整个资源会释放,包括JobManager和TaskManager。

Application模式适合比较大的任务、执行时间比较长的任务。

2.2 Session

Session模式:在Session模式中, Dispatcher 和 ResourceManager 是可以复用的;当执行完Job之后JobManager并不会释放,Session 模式也称为多线程模式,其特点是资源会一直存在不会释放。使用时先启动yarn-session,然后再提交job,每次提交job,也都会分配一个JobManager。

Session模式适合比较小的任务、执行时间比较短的任务。该模式不用频繁的申请资源和释放资源。

所以一般生产情况下我们都会选取 on Yarn 部署Application方式运行

废话不多说开始部署

2、准备环境

jdk1.8

maven3.6.3

parcel制作工具

3、制作parcel

下载制作工具

git clone https://github.com/pkeropen/flink-parcel.git
网络有问题也可以直接下载代码包传过去再解压

修改配置文件

cd ./flink-parcel
vim flink-parcel.properties
进行相应修改,内容如下:
#FLINK 下载地址
FLINK_URL=https://archive.apache.org/dist/flink/flink-1.15.3/flink-1.15.3-bin-scala_2.12.tgz

#flink版本号
FLINK_VERSION=1.15.3

#扩展版本号
EXTENS_VERSION=BIN-SCALA_2.12

#操作系统版本,以centos为例
OS_VERSION=7

#CDH 小版本
CDH_MIN_FULL=6.3.2
CDH_MAX_FULL=6.3.2

#CDH大版本
CDH_MIN=6
CDH_MAX=6

flink-1.15.3-bin-scala_2.12.tgz这个文件也可以先下载好,因为通过脚本下载的话网速比较慢,建议通过迅雷下载,下载好后直接放到flink-parcel目录下

# 赋予执行权限
chmod +x ./build.sh
然后进行build
./build.sh  parcel
执行过程中需要去git下载文件,如果你的网络有问题也可以直接下载到flink-parcel下
https://github.com/cloudera/cm_ext 下载下来应该是叫cm_ext_master,记得改名为cm_ext
下载并打包完成后会在当前目录生成FLINK-1.15.3-BIN-SCALA_2.12_build文件
构建flink-yarn csd包
./build.sh csd_on_yarn
执行完成后会生成FLINK_ON_YARN-1.15.3.jar,csd文件是组件的导航文件
 
将FLINK-1.15.3-BIN-SCALA_2.12_build打包
tar -cvf ./FLINK-1.15.3-BIN-SCALA_2.12.tar ./FLINK-1.15.3-BIN-SCALA_2.12_build/
 
将FLINK-1.15.3-BIN-SCALA_2.12.tar FLINK_ON_YARN-1.15.3.jar下载,这两个包就是目标包

集成工作我们需要做的就是以下两点:

在部署了cloudera server的节点

(1)将FLINK-1.13.2-BIN-SCALA_2.11_build里的文件放到/opt/cloudera/parcel-repo

就是这两个文件,那个manifest.json 好像不放也行 。稍等一会系统会自动生成 torrent文件,生成好就可以在web上刷到了

(2) cp FLINK_ON_YARN-1.15.3.jar /opt/cloudera/csd/

在CDH里面配置flink

提示:注意:这里一定要用自己编译的包,不要用从链接下载的包!!!

按照提示点击分配、激活就可以了

点击添加服务

如果没有看到flink的组件,可以通过重启一下cdh,我之前就试过,flink分配、激活成功后,没有看见flink组件的图标,可以通过重启CDH服务,

在CDH的主节点上执行以下命令

systemctl stop cloudera-scm-server //停止

systemctl start cloudera-scm-server //启动

为flink选择机器

注意端口号是否被占用

如图两个框上面填写你使用的keytab文件路径。下面则是principal名字,那个勾不要打

应该会遇到一些报错

错误1

/opt/cloudera/parcels/FLINK/lib/flink/bin/flink-yarn.sh: line 17: rotateLogFilesWithPrefix: command not found

解决

vim /opt/cloudera/parcels/FLINK/lib/flink/bin/config.sh:391  加入
rotateLogFilesWithPrefix() {
    dir=$1
    prefix=$2
    while read -r log ; do
        rotateLogFile "$log"
    # find distinct set of log file names, ignoring the rotation number (trailing dot and digit)
    done < <(find "$dir" ! -type d -path "${prefix}*" | sed s/\.[0-9][0-9]*$// | sort | uniq)
}
# 旋转日志文件
rotateLogFile() {
    log=$1;
    num=$MAX_LOG_FILE_NUMBER
    if [ -f "$log" -a "$num" -gt 0 ]; then
        while [ $num -gt 1 ]; do
            prev=`expr $num - 1`
            [ -f "$log.$prev" ] && mv "$log.$prev" "$log.$num"
            num=$prev
        done
        mv "$log" "$log.$num";
    fi
}

错误2

没有具体的错误输出,但是通过日志,可以看到提示HBASE环境变量未设置

no HBASE_CONF_DIR was set

解决:

再开一个页面。主页里找到flink

Flink-yarn -> 配置 -> 高级 -> Flink-yarn 服务环境高级配置代码段(安全阀)Flink-yarn(服务范围)加入以下内容即可:

HADOOP_USER_NAME=flink
HADOOP_CONF_DIR=/etc/hadoop/conf
HADOOP_HOME=/opt/cloudera/parcels/CDH
HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH/jars/*
HBASE_CONF_DIR=/etc/hbase/conf

错误3、Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/exceptions/YarnException

需要在yarn-session.sh 文件中添加 或者在环境变量中添加

加在yarn-session.sh 文件第一行就行

export HADOOP_CLASSPATH=`hadoop classpath`

错误4、Error found before invoking supervisord: 'getpwnam(): name not found: flink'

解决办法:

在 Flink-yarn 服务所在的节点添加 flink 用户和角色:

[root@node01 ~]# groupadd flink
[root@node01 ~]# useradd flink -g flink

部署完成后测试一下

运行一个WordCount测试

./flink  run -t yarn-per-job /opt/cloudera/parcels/FLINK/lib/flink/examples/batch/WordCount.jar

可能会有报错 :Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 3 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

在 CDH 的 yarn 服务中添加 Gateway 服务即可

可能有一些权限问题,具体问题具体解决即可

没报错 出来一堆

就是安装成功了

可以在yarn的界面和cdh的界面查到flink的任务

编辑

如果测试flink session模式,或者运行sql-client

必须首先启动一个session任务

yarn-session.sh -s 2 -jm 1024 -tm 2048 -nm test1 -d 
-tm 表示每个TaskManager的内存大小
-s 表示每个TaskManager的slots数量
-d 表示以后台程序方式运行 

启动了一个名叫test1的flink 常驻集群

一些参数如下
​
  -n,--container <arg> 表示分配容器的数量(也就是 TaskManager 的数量)。
 -D <arg> 动态属性。
 -d,--detached 在后台独立运行。
 -jm,--jobManagerMemory <arg>:设置 JobManager 的内存,单位是 MB。
 -nm,--name:在 YARN 上为一个自定义的应用设置一个名字。
 -q,--query:显示 YARN 中可用的资源(内存、cpu 核数)。
 -qu,--queue <arg>:指定 YARN 队列。
 -s,--slots <arg>:每个 TaskManager 使用的 Slot 数量。
 -tm,--taskManagerMemory <arg>:每个 TaskManager 的内存,单位是 MB。
 -z,--zookeeperNamespace <arg>:针对 HA 模式在 ZooKeeper 上创建 NameSpace。
 -id,--applicationId <yarnAppId>:指定 YARN 集群上的任务 ID,附着到一个后台独立运行的 yarn session 中

然后提交job

 flink run ./example/batch/WordCount.jar

sql-client则

sql-client.sh
建表
跑select等语句即可

web ui会生成在某个固定节点上 根据你的配置登陆查看即可,如果忘记了也可以根据提交任务之后的输出查看

或者在yarn里面查看应用程序,点击进去

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通信原理笔记—模拟信号的数字编码

目录 低通与带通信号的抽样定理&#xff1a; 模拟信号数字编码的基本概念&#xff1a; 模拟信号的抽样&#xff1a; 低通信号的理想抽样&#xff1a; 低通采样定理&#xff1a; 采样方式&#xff1a; 冲激采样示例&#xff1a; 低通信号的自然抽样&#xff1a; 带通抽样…

正版授权|Charles 4 网络封包分析调试工具软件

Charles 4 是一款 HTTP 代理 /HTTP 监视器/反向代理&#xff0c;使开发人员能够查看其机器和 Internet 之间的所有 HTTP 和 SSL / HTTPS流量。这包括请求、响应和 HTTP 标头&#xff08;包含 Cookie 和缓存信息&#xff09;。 授权分类&#xff1a;单许可证 站点许…

Python程序设计-第2章Python程序语句

第2章Python程序语句一.预习笔记 1.1 if语句 if 条件 : 执行语句 注意&#xff1a;条件后面要有 : 号&#xff0c;其次条件不需要括号包裹&#xff0c;然后执行语句需要有缩进 1.2 if else语句 if 条件 : 执行语句1 else : 执行语句2 注意&#xff1a;条件成立执行语…

Vue3中使用Tinymce富文本编辑器(版本最新)

使用目录前言一、安装方法一&#xff08;npm、yarn下载&#xff09;二、安装方法二&#xff08;下载官网压缩包方法&#xff09;——推荐总结前言 最近使用了WangEditor编辑器和Tinymce编辑器&#xff0c;使用方法如下&#xff08;采用的编辑器版本是官网最新的&#xff09; 汉…

@Configuration 和 @Component 区别

本文参考1&#xff1a;https://blog.csdn.net/isea533/article/details/78072133 本文参考2&#xff1a;https://blog.csdn.net/weixin_52850476/article/details/124410800 一句话概括就是 Configuration 中所有带 Bean 注解的方法都会被动态代理&#xff0c;因此调用该方法…

数据库密码定期轮换(AWS版)

问题 需要定期轮换AWS上面的RDS数据库的密码&#xff0c;而且&#xff0c;需要让业务程序无感知。 思路 AWS有个一个aws-secretsmanager-jdbc库&#xff0c;只要在SpringBoot的基础上面集成即可&#xff0c;就可以使用secrets manager来定期轮换数据库的密码了。 解决步骤 …

Excel VBA 讲座05 - InputBox和MsgBox使用

本篇介绍的内容&#xff1a; 1&#xff0c;当用户使用宏或procedure时&#xff0c;使用InputBox来接收或收集用户输入的信息。 2&#xff0c;根据需求使用IF语句构建逻辑。 3&#xff0c;使用Message Box将信息展示给用户&#xff0c;比如用户输出错误&#xff0c;就提示用户…

np.loadtxt()读取数据

前言 机器学习中使用np.loadtxt()可以高效的导入数据&#xff0c;np.loadtxt()适合.txt文件和.csv文件。但是它默认读取float类型的值。 1.np.loadtxt()读取txt文件 1-1 基础参数 numpy.loadtxt(fname, dtype, comments#, delimiterNone, convertersNone, skiprows0, usecol…

uniapp获取支付宝user_id - 支付宝提现 - 登录授权 - APP支付宝登陆 - H5支付宝授权

效果图 uniapp须知(无奈之处) uniapp绑定支付宝user_id提现 - 方法对比: ==== 不同接口 ==== 【APP支付宝登录】 https://opendocs.alipay.com/open/218/105325 【网站支付宝登录】

PMP证书有什么用?

有没有用看你的考证目的&#xff0c;总的来说就是敲门砖的作用&#xff0c;项目招聘、应聘项目经理都需要pmp 证书。⭕但是事在人为&#xff0c;祈祷考完 PMP 就能升职加薪走上人生巅峰的想法&#xff0c;一纸证书是做不到的。PS&#xff1a;身边有考了 PMP 之后跳槽薪资涨幅 3…

阳康后身体还是不舒服怎么办?

很多年轻朋友阳康后恢复的还可以&#xff0c;逐渐回到以前的身体状态&#xff0c;但是家里老人体质偏弱&#xff0c;恢复情况就没那么乐观了。有些还一直伴随着没有嗅觉、疲惫、咳嗽等后遗症。要让老人快速恢复健康&#xff0c;生病后一定要注意这几点&#xff1a;每天保证7-8小…

测试开发中的虫剂悖论

测试开发中的虫剂悖论 1 初识虫剂悖论 提到 虫剂悖论(pesticide paradox)&#xff0c;我相信很多人都没听说的&#xff0c;除非是生物学专业的同学或者老师。 虫剂悖论描述的是重复使用某种农药杀灭害虫&#xff0c;时间越久&#xff0c;杀虫的效果就越差。 之所以这样&#xf…

压阻式(压)力传感器-个人笔记

这是个人笔记 最终要求&#xff0c;单个的压阻式压力传感器、阵列之后的压力传感器、三维力传感器 关键词&#xff1a;力传感器&#xff0c;压力传感器&#xff0c;多轴力传感器&#xff0c;应变式传感器&#xff0c;应变式力传感器&#xff0c;电阻应变式传感器&#xff0c;f…

除 svn、Testlink 外,还有哪些不错的测试用例管理工具?

类似TestLink的 9 大测试用例管理平台&#xff1a;1、PingCode&#xff1b;2、TestRail&#xff1b;3、Xray&#xff1b;4、Jira&#xff1b;5、PractiTest&#xff1b;6、PractiTest&#xff1b;7. Zephyr Enterprise&#xff1b;8、MeterSphere&#xff1b;9、Bugzilla。一、…

【Flink】浅谈Flink架构和调度

【Flink】浅谈Flink架构和调度 Flink架构 Flink 是一个分布式系统&#xff0c;需要有效分配和管理计算资源才能执行流应用程序。它集成了所有常见的集群资源管理器&#xff0c;例如【Hadoop YARN】、【Apache Mesos】和【Kubernetes】&#xff0c;但也可以设置作为独立集群甚…

Ethercat系列(2)PDO动态映射设置过程

过程数据对象PDOPDO一般用于实时数据更新&#xff1b;其分为接收PDO&#xff08;RxPDO&#xff09;和发送PDO&#xff08;TxPDO&#xff09;&#xff0c;前者的数据流方向是主站到从站&#xff0c;TxPDO是从站到主站。PDO功能支持同步周期的刷新方式&#xff0c;也支持非周期性…

解决nacos2.1版本连接mysql8.x版本异常的问题

在测试环境部署nacos集群的时候使用的是mysql5.7版本&#xff0c;部署没有什么异常。但是在生产环境中我们使用的是mysql8.x版本&#xff0c;在启动nacos的时候各种报错。在网上看了很多解决办法花了挺长时间去排错也没有处理好问题网上最常见的两种方式修改pom文件&#xff1a…

代码随想录算法训练营第五十一天|309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费

动态规划 一、309.最佳买卖股票时机含冷冻期 题目&#xff1a; 给定一个整数数组&#xff0c;其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#x…

前端经典面试500题【上】

一阶段面试题集锦 1、 rem em vw vw 百分比区别 相同点&#xff1a; rem&#xff0c;em&#xff0c;vw&#xff0c;vh&#xff0c;vw属于前端开发除了px单位之外的另外几种单位取值&#xff1b;但是具体含义存在区别 不同点&#xff1a; px&#xff1a;是像素单位&#xff0c…

Databend 开源周报 第 78 期

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。 即刻体验云服务&#xff1a;https://app.databend.com 。 What’s New 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 Features & Improvements SQL 消除多余的 group by 标量 …