Flink SQL 1.11 on Zeppelin 平台化实践

简介: 鉴于有很多企业都无法配备专门的团队来解决 Flink SQL 平台化的问题,那么到底有没有一个开源的、开箱即用的、功能相对完善的组件呢?答案就是本文的主角——Apache Zeppelin。

作者:LittleMagic

大数据领域 SQL 化开发的风潮方兴未艾(所谓"Everybody knows SQL"),Flink 自然也不能“免俗”。Flink SQL 是 Flink 系统内部最高级别的 API,也是流批一体思想的集大成者。用户可以通过简单明了的 SQL 语句像查表一样执行流任务或批任务,屏蔽了底层 DataStream/DataSet API 的复杂细节,降低了使用门槛。

但是,Flink SQL 的默认开发方式是通过 Java/Scala API 编写,与纯 SQL 化、平台化的目标相去甚远。目前官方提供的 Flink SQL Client 仅能在配备 Flink 客户端的本地使用,局限性很大。而 Ververica 开源的 Flink SQL Gateway 组件是基于 REST API 的,仍然需要二次开发才能供给上层使用,并不是很方便。

鉴于有很多企业都无法配备专门的团队来解决 Flink SQL 平台化的问题,那么到底有没有一个开源的、开箱即用的、功能相对完善的组件呢?答案就是本文的主角——Apache Zeppelin。

Flink SQL on Zeppelin!

1.jpg

Zeppelin 是基于 Web 的交互式数据分析笔记本,支持 SQL、Scala、Python 等语言。Zeppelin 通过插件化的 Interpreter(解释器)来解析用户提交的代码,并将其转化到对应的后端(计算框架、数据库等)执行,灵活性很高。其架构简图如下所示。

2.jpg

Flink Interpreter 就是 Zeppelin 原生支持的众多 Interpreters 之一。只要配置好 Flink Interpreter 以及相关的执行环境,我们就可以将 Zeppelin 用作 Flink SQL 作业的开发平台了(当然,Scala 和 Python 也是没问题的)。接下来本文就逐步介绍 Flink on Zeppelin 的集成方法。

配置 Zeppelin

目前 Zeppelin 的最新版本是 0.9.0-preview2,可以在官网下载包含所有 Interpreters 的 zeppelin-0.9.0-preview2-bin-all.tgz,并解压到服务器的合适位置。

接下来进入 conf 目录。将环境配置文件 zeppelin-env.sh.template 更名为 zeppelin-env.sh,并修改:

# JDK目录
export JAVA_HOME=/opt/jdk1.8.0_172
# 方便之后配置Interpreter on YARN模式。注意必须安装Hadoop,且hadoop必须配置在系统环境变量PATH中
export USE_HADOOP=true
# Hadoop配置文件目录
export HADOOP_CONF_DIR=/etc/hadoop/hadoop-conf

将服务配置文件 zeppelin-site.xml.template 更名为 zeppelin-site.xml,并修改:

<!-- 服务地址。默认为127.0.0.1,改为0.0.0.0使得可以在外部访问 -->
<property><name>zeppelin.server.addr</name><value>0.0.0.0</value><description>Server binding address</description>
</property><!-- 服务端口。默认为8080,如果已占用,可以修改之 -->
<property><name>zeppelin.server.port</name><value>18080</value><description>Server port.</description>
</property>

最基础的配置就完成了。运行 bin/zeppelin-daemon.sh start 命令,返回 Zeppelin start [ OK ]的提示之后,访问<服务器地址>:18080,出现下面的页面,就表示 Zeppelin 服务启动成功。

3.jpg

当然,为了一步到位适应生产环境,也可以适当修改 zeppelin-site.xml 中的以下参数:

<!-- 将Notebook repo更改为HDFS存储 -->
<property><name>zeppelin.notebook.storage</name><value>org.apache.zeppelin.notebook.repo.FileSystemNotebookRepo</value><description>Hadoop compatible file system notebook persistence layer implementation, such as local file system, hdfs, azure wasb, s3 and etc.</description>
</property><!-- Notebook在HDFS上的存储路径 -->
<property><name>zeppelin.notebook.dir</name><value>/zeppelin/notebook</value><description>path or URI for notebook persist</description>
</property><!-- 启用Zeppelin的恢复功能。当Zeppelin服务挂掉并重启之后,能连接到原来运行的Interpreter -->
<property><name>zeppelin.recovery.storage.class</name><value>org.apache.zeppelin.interpreter.recovery.FileSystemRecoveryStorage</value><description>ReoveryStorage implementation based on hadoop FileSystem</description>
</property><!-- Zeppelin恢复元数据在HDFS上的存储路径 -->
<property><name>zeppelin.recovery.dir</name><value>/zeppelin/recovery</value><description>Location where recovery metadata is stored</description>
</property><!-- 禁止使用匿名用户 -->
<property><name>zeppelin.anonymous.allowed</name><value>true</value><description>Anonymous user allowed by default</description>
</property>

Zeppelin 集成了 Shiro 实现权限管理。禁止使用匿名用户之后,可以在 conf 目录下的 shiro.ini 中配置用户名、密码、角色等,不再赘述。注意每次修改配置都需要运行 bin/zeppelin-daemon.sh restart 重启 Zeppelin 服务。

配置 Flink Interpreter on YARN

在使用 Flink Interpreter 之前,我们有必要对它进行配置,使 Flink 作业和 Interpreter 本身在 YARN 环境中运行。

点击首页用户名区域菜单中的 Interpreter 项(上一节图中已经示出),搜索 Flink,就可以看到参数列表。

4.jpg

Interpreter Binding

首先,将 Interpreter Binding 模式修改为 Isolated per Note,如下图所示。

5.jpg

在这种模式下,每个 Note 在执行时会分别启动 Interpreter 进程,类似于 Flink on YARN 的 Per-job 模式,最符合生产环境的需要。

Flink on YARN 参数

以下是需要修改的部分基础参数。注意这些参数也可以在 Note 中指定,每个作业自己的配置会覆盖掉这里的默认配置。

  • FLINK_HOME:Flink 1.11所在的目录;
  • HADOOP_CONF_DIR:Hadoop 配置文件所在的目录;
  • flink.execution.mode:Flink 作业的执行模式,指定为 YARN 以启用 Flink on YARN;
  • flink.jm.memory:JobManager 的内存量(MB);
  • flink.tm.memory:TaskManager 的内存量(MB);
  • flink.tm.slot:TaskManager 的 Slot 数;
  • flink.yarn.appName:YARN Application 的默认名称;
  • flink.yarn.queue:提交作业的默认 YARN 队列。

Hive Integration 参数

如果我们想访问 Hive 数据,以及用 HiveCatalog 管理 Flink SQL 的元数据,还需要配置与 Hive 的集成。

  • HIVE_CONF_DIR:Hive 配置文件(hive-site.xml)所在的目录;
  • zeppelin.flink.enableHive:设为 true 以启用 Hive Integration;
  • zeppelin.flink.hive.version:Hive 版本号。
  • 复制与 Hive Integration 相关的依赖到 $FLINK_HOME/lib 目录下,包括:
  • flink-connector-hive_2.11-1.11.0.jar
  • flink-hadoop-compatibility_2.11-1.11.0.jar
  • hive-exec-..jar
  • 如果 Hive 版本是1.x,还需要额外加入 hive-metastore-1.*.jar、libfb303-0.9.2.jar 和 libthrift-0.9.2.jar
  • 保证 Hive 元数据服务(Metastore)启动。注意不能是 Embedded 模式,即必须以外部数据库(MySQL、Postgres等)作为元数据存储。

Interpreter on YARN 参数

在默认情况下,Interpreter 进程是在部署 Zeppelin 服务的节点上启动的。随着提交的任务越来越多,就会出现单点问题。因此我们需要让 Interpreter 也在 YARN 上运行,如下图所示。

6.jpg

  • zeppelin.interpreter.yarn.resource.cores:Interpreter Container 占用的vCore 数量;
  • zeppelin.interpreter.yarn.resource.memory:Interpreter Container 占用的内存量(MB);
  • zeppelin.interpreter.yarn.queue:Interpreter 所处的 YARN 队列名称。

配置完成之后,Flink on Zeppelin 集成完毕,可以测试一下了。

测试 Flink SQL on Zeppelin

创建一个 Note,Interpreter 指定为 Flink。然后写入第一个 Paragraph:

7.jpg

以 %flink.conf 标记的 Paragraph 用于指定这个 Note 中的作业配置,支持 Flink 的所有配置参数(参见 Flink 官网)。另外,flink.execution.packages 参数支持以 Maven GAV 坐标的方式引入外部依赖项。

接下来创建第二个 Paragraph,创建 Kafka 流表:

8.jpg

%flink.ssql 表示利用 StreamTableEnvironment 执行流处理 SQL,相对地,%flink.bsql 表示利用 BatchTableEnvironment 执行批处理 SQL。注意表参数中的 properties.bootstrap.servers 利用了 Zeppelin Credentials 来填写,方便不同作业之间复用。

执行上述 SQL 之后会输出信息:

9.jpg

同时在 Hive 中可以看到该表的元数据。

最后写第三个 Paragraph,从流表中查询,并实时展现出来:

10.jpg

点击右上角的 FLINK JOB 标记,可以打开作业的 Web UI。上述作业的 JobGraph 如下。

11.jpg

除 SELECT 查询外,通过 Zeppelin 也可以执行 INSERT 查询,实现更加丰富的功能。关于 Flink SQL on Zeppelin 的更多应用,笔者在今后的文章中会继续讲解。

 

原文链接
本文为阿里云原创内容,未经允许不得转载。

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

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

相关文章

控件设置相对位置_惊人的Divi转换控件!

Divi的变换控件释放了许多新的设计可能你可以使用一系列新设计选项来执行惊人的设计&#xff0c;而到目前为止&#xff0c;只有在诸如Photoshop之类的图形设计程序中才可以这样操作。Divi引入了一项全新功能&#xff0c;该功能允许在Divi Builder中进行惊人的徒手设计&#xff…

第三代英特尔至强可扩展处理器,英特尔数据中心的“芯法宝”

作者 | 宋 慧 出品 | CSDN云计算 头图 | 付费下载于东方IC 距离英特尔发布第三代至强可扩展处理器Ice Lake的全系列产品&#xff0c;已经过去一个多月了。全新一代的至强处理器除了核数增加、性能提升与架构升级以外&#xff0c;还首次将SGX英特尔软件防护扩展技术&#xff08…

谈谈我对零售云在云原生总结与思考

简介&#xff1a; 云原生是零售云的最重要的技术底座&#xff0c;云原生是什么&#xff0c;会走向哪里&#xff0c;在零售2B交付的场景上该如何应用&#xff0c;怎么能够结合帮助建设零售云系列产品体系&#xff0c;值得我们的思考和探索&#xff0c;也将有效指导我们接下来几年…

oracle查看编码

select * from nls_database_parameters where parameter NLS_CHARACTERSET;

类选择器遍历赋值_利用反射实现配置表数据到类对象数据的转换

在游戏开发中&#xff0c;配置表是不可少的。通常我们将一个类&#xff0c;做成一个配置表&#xff0c;将配置表每列的索引都和类的字段名严格对应起来。先实例化一个类的对象&#xff0c;然后通过反射来遍历类中的字段&#xff0c;通过field.SetValue()给类的对象赋值。但是配…

人工智能如何提升大数据存储与管理效率?

简介&#xff1a; 通过使用AI数据存储&#xff0c;供应商和企业可以将存储管理提升到一个新的水平。而且&#xff0c;存储管理员可以找到他们目前正在努力管理的指标的解决方案。 随着大数据的大量来源以及企业可用数据量的增加&#xff0c;存储容量规划已成为存储管理员的问题…

wildfly10 (JBoss)如何部署SSL证书

文章目录1. 证书下载2. 证书配置2. 效果验证项目用的wildfly-10.1.0.Final。需要用到SSL证书&#xff0c;把部署过程记录下来&#xff0c;以供参考。1. 证书下载 本文的证书申请都来自阿里云。 1.首先把你的域名做好解析。 2.从阿里云上下载申请的SSL证书&#xff0c;类型选择…

奇点云集聚数据中台优势,加速企业数智化升级

作者 | 寇雪芹 出品 | CSDN云计算 头图 | 下载于视觉中国 近日&#xff0c;以“应云而生 原力觉醒”为主题的 StartDT Day 数据技术大会在杭州举办。会上&#xff0c;奇点云发布了最新的数据技术战略“跨平台、云原生、自主可控”、云原生数据中台 DataSimba R3.0、消费者数字…

2020-10-29

简介&#xff1a; 世上没有免费的午餐&#xff0c;微服务技术让 IT 系统变得更敏捷、更健壮、更高性能的同时&#xff0c;也带来了架构复杂度的提升。对于开发者而言&#xff0c;要想更好的驾驭微服务架构&#xff0c;需要解决持续集成、服务发现、应用通信、配置管理、流量防护…

状态码202_至少 10 个 HTTP 状态码

HTTP状态码&#xff08;英语&#xff1a;HTTP Status Code&#xff09;是用以表示网页服务器超文本传输协议响应状态的3位数字代码。HTTP状态码 HTTP状态码总的分为五类&#xff1a;1开头&#xff1a;信息状态码2开头&#xff1a;成功状态码3开头&#xff1a;重定向状态码4开头…

CSDN 独家对话阿里云贾扬清、华先胜等大咖,剧透阿里云原生技术密码

新一轮科技革命和产业变革正重塑全球发展格局&#xff0c;以云计算为代表的新一代信息技术相互渗透&#xff0c;成为数字经济智能和创新发展新引擎。过去 12 年&#xff0c;人们对云计算的讨论从原来的“为什么上云”&#xff0c;到“为什么不上云”&#xff0c;再到如今探索“…

持续定义Saas模式云数据仓库+实时搜索

简介&#xff1a; 本文由阿里云计算平台事业部 MaxCompute 产品经理孟硕为大家带来《持续定义Saas模式云数据仓库实时搜索》的相关分享。以下是视频内容精华整理&#xff0c;主要包括以下三个部分&#xff1a;1.Why&#xff1a;概述与价值&#xff1b;2.What&#xff1a;应用场…

弹窗进度条_QQ 大更新!语音进度条来了,还有这 5 个新变化

4 月 13 日&#xff0c;QQ 迎来了 8.0.0 for iOS 的更新。在其 App Store 的更新描述中可以看到&#xff0c;本次更新不仅升级了 QQ 的界面、优化了多人语音和转发消息的体验&#xff0c;语音消息还支持暂停和进度拖动了。知晓君第一时间对新版本 QQ 进行了一番体验&#xff0c…

接入阿里巴巴商业操作系统,麦当劳中国双11发力数字化

简介&#xff1a; 此次麦当劳中国与阿里巴巴的深度合作&#xff0c;对于双方和整个餐饮行业都具有重要意义。 早上8点出门前&#xff0c;你可以打开支付宝搜索麦当劳&#xff0c;点击“优惠预点”订餐&#xff0c;在你去办公室途中&#xff0c;热腾腾的麦当劳早餐就为你准备好…

Jepsen:分布式系统最早的混沌框架

来源 | 混沌工程实践作者 | 罗冈庭头图 | 下载于ICphotoJepsen测试框架的工作模式和混沌工程的思想是一脉相承的。Jepsen测试框架可以在分布式系统上注入众多混沌事件&#xff0c;例如引入网络问题、杀死节点和生成随机负载等等&#xff0c;然后通过执行预先定义的测试操作&…

Linux 命令操作手册

文章目录一、Boot项目前后台二、进程三、防火墙四、查看系统版本五、权限赋予六、远程同步文件七、目录八、文件九、解/压缩十 、大文件分割方案十一、查看文件中关键词出现的次数十二、添加/删除/修改/查看用户和用户组十三、寻找文件十四、清空文件内容十五、磁盘占用删除包含…

天猫国际通过Hologres进行排行榜的实时交互式分析

简介&#xff1a; 本文将会为您分享天猫国际如何通过Hologres实现计算、存储、服务统一的实时交互式分析。 作者&#xff1a;景闻 阿里巴巴数据技术及产品部数据技术专家 一.业务背景 天猫国际营销活动分析实时排行榜是在大促中帮助业务快速的分析商家或者品牌的交易和流量的…

官宣!《新程序员·开发者黄金十年》正式发布

“在互联网还不发达的时代&#xff0c;就是《程序员》伴我成长的。”“怀念啊&#xff0c;曾经《程序员》的日子。”“我是看着《程序员》长大的&#xff0c;大二时买了创刊号。”“这可是我们这一代人大学时候满满的回忆&#xff0c;也是当时寝室中传阅最多的书。”“每年的《…

OpenKruise:解放 DaemonSet 运维之路

简介&#xff1a; 我们希望 OpenKruise 让每一位 Kubernetes 开发者和阿里云上的用户都能便捷地使用上阿里巴巴内部云原生应用所统一使用的部署发布能力&#xff01; 作者 | 王思宇&#xff08;酒祝&#xff09; 前言 OpenKruise 是阿里云开源的大规模应用自动化管理引擎&…

云原生数据湖解决方案打破数据孤岛,大数据驱动互娱行业发展

简介&#xff1a; 数据湖是以集中、统一方式存储各种类型数据&#xff0c;数据湖可以与多种计算引擎直接对接&#xff0c;我们使用OSS作为数据湖底座&#xff0c;数据统一存储在OSS中&#xff0c;有效消除了数据孤岛现象&#xff0c;多种计算与处理分析引擎能够直接对存储在数据…