Zeppelin整合Flink采坑實錄


file

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版本

file

Kafka Connect Datagen

使用提供的docker鏡像來做kafka集群,提供數據,安裝docker不在這里說了,可能啟動正常,但是沒有datagenconnector

file

說明,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"

}

如下圖所示

file

可以在Topic UI里可以看到數據,就證明這里配置ok了

file

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

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

file

file

感謝 章大 在釘釘群里耐心的解答。

目前只踩到這里,繼續加油,奧利給!!!

本文由博客群發一文多發等運營工具平台 OpenWrite 發布


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM