当前位置: 首页 > news >正文

Flink SQL 在kerberos on yarn环境下提交

yarn环境中一般都会配置kerberos 用来做权限管控,flink 在 kerberos on yarn环境中提交作业时,需要做一些配置处理,用来帮助做认证。

参考文档,需要在flink-conf.yaml中配置

security.kerberos.krb5-conf.path: /etc/krb5.conf

security.kerberos.login.use-ticket-cache: true
security.kerberos.login.keytab: /data/flink.keytab
security.kerberos.login.principal: flink/api@EXAMPLE.COM

然后通过flink-client进行提交

/data/etl/ll_test/flink-1.13.5/bin/flink run -t yarn-per-job -Dyarn.application.name=kafka2hbase -Dparallelism.default=1 -Djobmanager.memory.process.size=2048mb -Dtaskmanager.memory.process.size=2048mb -Dtaskmanager.numberOfTaskSlots=1 -Drest.flamegraph.enabled=true -c cn.com.example.bigdata.index.app.IndexServiceApp /data/etl/ll_test/jars/bigdata-etl-index-3.2.0.jar 5 30 hdfs submit_test_job /data/etl/ll_test/sql.txt

即可将作业提交到yarn上。

如果没有在flink-conf.yaml中进行配置,yarn会拒绝作业的提交。

  • hbase sql sink on kerberos

参考文档, 官方提供的hbase sql connector 是支持Kerberos认证的,需要设定 'properties.hbase.security.authentication' = 'kerberos'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FiyypfSC-1664086698726)(https://secure2.wostatic.cn/static/sMMLzm9XtB5oZnVn5zCjCr/image.png)]

那么还需要配置keytab证书嘛?

经验证是不需要的,hbase ddl可以这样

CREATE TABLE hbase_sink 
(
  rowkey STRING,
  cf ROW<urlC STRING>,
  PRIMARY KEY (rowkey) NOT ENFORCED) 
WITH (
  'connector' = 'hbase-1.4',
  'table-name' = 'dim_hbase',
  'sink.buffer-flush.max-rows' = '5',
  'zookeeper.quorum' = '172.17.26.201:2181,172.17.26.202:2181,172.17.26.203:2181',
  'properties.hbase.security.authentication' = 'kerberos')

在集群中是可以稳定的跑起来。

keytab是证书是有时效性的,如果失效了怎么办? 其实不需要担心,因为在flink中有一个线程会定期进行认证,保证认证的有效性。

在集群中出现过一个错误,

2022-09-16 16:49:10,144 ERROR org.apache.zookeeper.client.ZooKeeperSaslClient              [] - An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database (7) - LOOKING_UP_SERVER)]) occurred when evaluating Zookeeper Quorum Member's  received SASL token. Zookeeper Client will go to AUTH_FAILED state.
2022-09-16 16:49:10,145 ERROR org.apache.zookeeper.ClientCnxn                              [] - SASL authentication with Zookeeper Quorum member failed: javax.security.sasl.SaslException: An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database (7) - LOOKING_UP_SERVER)]) occurred when evaluating Zookeeper Quorum Member's  received SASL token. Zookeeper Client will go to AUTH_FAILED state.

看起来是在连接zookeeper的时候认证没有成功,不是flink可以帮助做认证嘛,为什么又失败了那?

经查,可能是sasl开启导致的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e4a3aQ3f-1664086698727)(https://secure2.wostatic.cn/static/gYr6HmqZgyEHeZPSzEwi4q/lQLPJxazRogkgi7NAgfNA32wadYJyPQPXHADJsqTGwAdAA_893_519.png)]

重新打开flink-conf.yaml,添加配置

# security.kerberos.login.contexts: Client,KafkaClient

#==============================================================================
# ZK Security Configuration
#==============================================================================
zookeeper.sasl.disable: true
# Below configurations are applicable if ZK ensemble is configured for security

# Override below configuration to provide custom ZK service name if configured
# zookeeper.sasl.service-name: zookeeper

# The configuration below must match one of the values set in "security.kerberos.login.contexts"
# zookeeper.sasl.login-context-name: Client

关闭sasl认证。

重新提交作业,就可以恢复了。

相关文章:

  • 电动自行车亚马逊/出口欧盟CE认证EN15194测试标准如何办理
  • CAD绘制复杂机械零件图形
  • 命令模式【Java设计模式】
  • MyBatis动态SQL中if、where、trim、choose、when、otherwise、foreach标签及sql标签范例
  • LeetCode每日一题(990. Satisfiability of Equality Equations)
  • 关键字和内置函数
  • 2022-2028全球园艺设备行业调研及趋势分析报告
  • 【Android入门】7、多媒体:用 NotificationChannel 和 NotificationManager 实现系统通知、播放音频和视频
  • eNSP抓包看PPP协议
  • 继SpringCloudAlibaba后阿里又一神作:MySQL应用实战与性能调优
  • 数据库系统概论笔记
  • 读书笔记:《量化投资实务》
  • Dart external关键字
  • 低碳生活进行时!国产“芯”RK3568创造智慧出行新体验
  • 雷达与imu初始化:鲁棒且实时的雷达惯性初始化方法
  • Android单元测试 - 几个重要问题
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • CentOS 7 修改主机名
  • Fabric架构演变之路
  • IDEA 插件开发入门教程
  • learning koa2.x
  • LeetCode29.两数相除 JavaScript
  • Making An Indicator With Pure CSS
  • quasar-framework cnodejs社区
  • Redis 中的布隆过滤器
  • select2 取值 遍历 设置默认值
  • SpingCloudBus整合RabbitMQ
  • vue 配置sass、scss全局变量
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 区块链技术特点之去中心化特性
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 微信公众号开发小记——5.python微信红包
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 译米田引理
  • 用 Swift 编写面向协议的视图
  • ionic入门之数据绑定显示-1
  • postgresql行列转换函数
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #define用法
  • $$$$GB2312-80区位编码表$$$$
  • (Git) gitignore基础使用
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (笔试题)合法字符串
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (一)Neo4j下载安装以及初次使用
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转载)PyTorch代码规范最佳实践和样式指南
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • **python多态
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET处理HTTP请求
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .net通用权限框架B/S (三)--MODEL层(2)