flink on zeppelin

一.什么是 zeppelin

Zeppelin是一个基于Web的notebook,提供交互数据分析和可视化。后台支持接入多种数据处理引擎,如flink,spark,hive等。支持多种语言: Scala(Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、 Markdown、Shell等。
开发者可以通过实现更多的解释器来为Zeppelin添加数据引擎。官方支持的执行引擎用一幅图可以清晰描述执行引擎的作用就是执行笔记中的与引擎相对应的代码,不同的引擎也会有不同的配置。

官方文档:

http://zeppelin.apache.org/docs/0.9.0/

二.flink on zeppelin部署

部署要求

目前官网最新的zeppelin版本是0.9版本的,只支持flink1.10-scala_2.11版本

1.下载安装包

(1)下载最新的Zeppelin (http://zeppelin.apache.org/download.html 或者到钉钉群下载最新版本 (钉钉群号:32803524)

(2)解压之后运行命令:bin/zeppelin-daemon.sh start

2.配置zeppelin

有2个地方可以配置Zeppelin,conf 文件夹下面的 zeppelin-site.xml 和 zeppelin-env.sh

这里先例举2个比较常见的需要修改的地方

  • 修改zeppelin server 的url地址

  • 需要修改 zeppelin-site.xml 中的 zeppelin.server.addr 以及 zeppelin.server.port

  • zeppelin.server.addr 的默认值是127.0.0.1,所以你只能在Zeppelin那台机器上访问Zeppelin,如果你要通过另外一台机器访问Zeppelin,那么你就需要修改为0.0.0.0 (推荐修改,社区版因为安全性的考虑,所以把默认值设成了 127.0.0.1,但这样的确对初学者来说不太方便)

  • zeppelin.server.port 的默认值是8080,如果你有其他进程占用了这个端口,那么你可以修改这个配置选择其他端口。

  • 修改zeppelin的内存大小

  • 修改zeppelin的内存有2个方面:修改zeppelin server的内存,修改interpreter进程的内存

  • 通过修改 zeppelin-env.sh里的 ZEPPELIN_MEM 来修改zeppelin server 的内存

  • 通过修改 zeppelin-env.sh里的 ZEPPELIN_INTP_MEM 来修改 interpreter 进程的内存

以上修改都要重启Zeppelin才能起作用,重启 Zeppelin的命令: bin/zeppelin-daemon.sh restart

在这里插入图片描述
在这里插入图片描述

3.web界面开发flinksql

可以先查看一下基础的demon

在这里插入图片描述

支持流处理和批处理

在这里插入图片描述

自己创建note

在这里插入图片描述

在这里插入图片描述

每个note下面可以创建多个paragraph,用来写sql

在这里插入图片描述

三.flink on zeppelin运行模式

目前Flink on Zeppelin 支持3种模式:

  • Local 模式

  • Remote 模式

  • Yarn 模式

1.Local 模式

Local 模式是最简单的Flink 运行模式,你只要下载Flink 1.10或更新版本,然后解压缩即可。不要在Flink的lib文件下下载任何connector jar,也不要修改flink-conf.xml,我们从最简单的配置开始,以防出现奇怪问题,让问题排查变得复杂。然后指定 FLINK_HOME 以及 flink.execution.modelocal 就可以,如下图。

在这里插入图片描述

Local 模式会在本地启动一个MiniCluster(会以线程的方式跑在Flink Interpreter进程中)

有可能出现的问题是端口冲突问题,如下图

在这里插入图片描述

这种情况是由于MiniCluster的JobManager需要使用8081端口作为Rest API的端口,如果这个端口被其他进程占用,那么就会碰到这个错误。一种比较大的可能性是你正好在本地启动了Flink的 Standalone cluster。 因为Standalone模式下的JobManager碰巧也是用8081端口。所以如果是碰到这种错误,那么检查下你是否在本地起了一个Flink Standalone 集群,或者有没有其他程序使用了8081端口。

Interpreter Binding 模式

Local模式有个限制是你只能使用shared interpreter binding 模式,也就是所有note,所有user都是共享一个MiniCluster。因为MiniCluster使用8081端口,起多个MiniCluster就会导致上面说的端口冲突。

Flink Cluster 生命周期

Local 模式的 Flink Cluster就是上文说的运行在Flink Interpreter进程中的MiniCluster,他的生命周期是Zeppelin控制的。你启动Flink Interpreter的时候就创建这个MiniCluster,当你停止或者重启Flink Interpreter的时候就会销毁这个MiniCluster。

2.Remote 模式

Flink的Remote模式会连接一个已经创建好的Flink集群,可以是Flink Standalone 集群,或者是你手动启动的Yarn Session Cluster 或者你在K8S环境上启动的一个Flink Session Cluster 。除了配置FLINK_HOME 和 flink.execution.mode 为 remote 外,还需要配置 flink.execution.remote.host 和 flink.execution.remote.port 来指定JobManager的Rest API 地址(Zeppelin是通过这个Rest api来提交Flink Job的)。如下图所示,

在这里插入图片描述

Interpreter Binding 模式

在Interpreter setting 的页面配置是全局共享的,适用于shared interpreter binding 模式,如果你要连接多个Flink Session Cluster,那么可以用Per User Isolate 模式,或者 Per Note Isolated 模式

Flink Cluster 生命周期

Remote 模式的 Flink Cluster是脱离Zeppelin的管理的,是你在外部启动的Flink Cluster,停止Flink Interpreter并不会销毁Flink Cluster。

3.Yarn 模式

Flink的Yarn模式会在Yarn集群中动态创建一个Flink Cluster,然后你就可以往这个Flink Session Cluster提交Flink Job了。

配置

  • 除了配置 FLINK_HOME 和 flink.execution.mode 外还需要配置 HADOOP_CONF_DIR,并且要确保Zeppelin这台机器可以访问你的hadoop集群, 你可以运行hadoop fs 命令来验证是否能够连接hadoop集群。

在这里插入图片描述

  • 确保Zeppelin这台机器上安装了hadoop客户端(就是hadoop的那些jar包和配置文件),并且hadoop命令在环境变量 PATH上。因为Flink本身不带hadoop相关依赖(你可以把flink-shaded-hadoop 拷贝到flink lib下),所以flink的推荐方式是在提交Flink作业的时候运行hadoop classpath命令,然后把hadoop相关的jar放到CLASSPATH上。

Interpreter binding 模式

如果是Shared 模式,所有的job都会运行一个Flink Yarn Session Cluster里。如果是Per User Isolated,那么每个用户都会运行一个Flink Yarn Session Cluster,如果是Per Note Isolated,那么每个Note都对运行一个Flink Yarn Session Cluster。

Flink Cluster 生命周期

Yarn 模式的 Flink Cluster 就是上文说的运行Yarn集群里的Yarn Session Cluster,他的生命周期是Zeppelin控制的。你启动Flink Interpreter的时候就创建这个Yarn Session Cluster,当你停止或者重启Flink Interpreter的时候就会销毁这个Yarn Session Cluster。

配置 Yarn Session Cluster

配置项描述
flink.yarn.appNameyarn app name
flink.jm.memoryJobManager的内存大小,单位是M,默认是1024
flink.tm.memoryTaskManager的内存大熊啊,单位是M,默认是1024
flink.tm.slot每个TaskManager的slot数目
flink.yarn.queueYarn application queue
flink.tm.memoryTaskManager的内存大熊啊,单位是M,默认是1024
flink.tm.slot每个TaskManager的slot数目
flink.yarn.queueYarn application queue
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值