前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zeppelin整合Flink采坑实录

Zeppelin整合Flink采坑实录

作者头像
麒思妙想
发布2020-07-10 10:35:56
1.7K0
发布2020-07-10 10:35:56
举报
文章被收录于专栏:麒思妙想麒思妙想

I.前言

前两天转了章大的zeppelin系列教程(以下简称“教程”),我也好好的研究学习了一波。

我曾无数次鼓吹基于Jupyter的应用,也相信在未来数据分析领域,他会有自己的一席之地. 对话式的管家服务,真是谁用谁知道...

以下内容摘自“教程”:

下面是Zeppelin和Flink的故事。

Flink问:虽然我提供了多种语言支持,有SQL,Java,Scala还有Python,但是每种语言都有自己的入口,用户很难多种语言混着用。比如在sql-client中只能运行Sql,不能写UDF,在pyflink shell里,只能用python的udf,不能用scala和java的udf。有没有谁能帮我把这些语言全部打通。

Zeppelin答:我可以。

Flink问:我的一个很大的使用场景是实时大屏,但是我一个人办不到,往往需要借助第三方存储,还需要前端开发,有没有谁能让用户不用写前端代码就实现实时大屏

Zeppelin答:我可以。

Flink问:我的Sql已经很强大了,但是用户在sql-client里不能写comment,而且不支持运行多条sql语句,有谁能帮我把这些功能补齐下。

Zeppelin答:我可以。

Flink问:好多初学者说要跑一个flink job实在是太难了,好多东西需要配置,还要学习各种命令行,有没有谁能让用户更容易得提交和管理Flink Job。

Zeppelin答:我可以。

Flink问:Flink Job提交目前只能一个个提交,一个job跑完跑另外一个,有些用户想并行执行多个Flink Job,谁能帮我搞定这个需求?

Zeppelin答:我可以。

Flink问:我有丰富的connector,但是用户每次都要把connector打包到uber jar里,或者copy到flink的lib下,但是这样会把各种connector jar混在一起,容易发生冲突,很难管理,有谁能提供一个干净点的方案?

Zeppelin答:我可以。

II.填坑

Zepplin 0.9版本虽然已经做的足够出色了,但是还是有很多隐含的条件(坑),对新人还是不那么友好的,我在研习“教程”的时候,也就稍微总结了一下:

  • 版本:

目前zepplin 0.9 preview 整合flink,只能使用 Apache Flink 1.10.1 for Scala 2.11 ,不能使用scala2.12

  • 环境: 实验的话,需要在linux下尝试,windows是不支持,尽管他都有windows下的启动脚本.
  • FLINK_HOME

在interpret里设置FLINK_HOME,指向你的Flink,切记1.10.1 scala2.11版本

  • Kafka Connect Datagen 使用提供的docker镜像来做kafka集群,提供数据,安装docker不在这里说了,可能启动正常,但是没有datagenconnector

说明,docker-compose.yml里这两句没起作用

- ./plugins:/tmp/connect-plugins

- ./data:/tmp/data

执行下面语句就ok了。

setenforce 0

另外,默认配置里

KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://broker:9092'

CONNECT_BOOTSTRAP_SERVERS: '192.168.16.3:9092'

可能不生效,使用下面语句,找到broker的ip,替换broker

docker exec -it ID/NAMES ip addr

创建kafka connector时,使用官方语句可能不太好事,可以使用UI即本机IP:8000 来进行配置,原文提供的 connect.source.datagen.json 也有些不太好使,我修改了一下,如下:

{

"connector.class": "com.github.xushiyan.kafka.connect.datagen.performance.DatagenConnector",

"tasks.max": "1",

"random.fields": "status:foo|bar|baz, direction:up|down|left|right",

"event.timestamp.field": "event_ts",

"poll.size": "10",

"key.converter.schemas.enable": "false",

"poll.interval.ms": "5000",

"value.converter.schemas.enable": "false",

"topic.name": "generated.events",

"value.converter": "org.apache.kafka.connect.storage.StringConverter",

"message.template": "{\"status\":\"foo\",\"direction\":\"up\"}",

"key.converter": "org.apache.kafka.connect.storage.StringConverter"

}

如下图所示

可以在Topic UI里可以看到数据,就证明这里配置ok了

  • Streaming ETL

记住先执行:

%flink.conf# You need to run this paragraph first before running any flink code.flink.execution.packages org.apache.flink:flink-connector-kafka_2.11:1.10.1,org.apache.flink:flink-connector-kafka-base_2.11:1.10.1,org.apache.flink:flink-json:1.10.1

上面的坑都填好了,就能愉快的玩耍了

目前只踩到这里,继续加油,奥利给!!!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 麒思妙想 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档