Native Kubernetes集成(Beta)

对于希望在容器化环境上开始使用Flink的用户,在Kubernetes之上部署和管理独立集群需要一些有关容器、算子和特定于环境的工具(如“ kubectl”)的预备知识。

在 Flink 1.10 中,我们推出了主动 Kubernetes 集成 (FLINK-9953)的第一阶段,该阶段支持会话集群(以及计划的单job集群)。在这种情况下,“主动”表示Flink的ResourceManager( K8sResMngr)与Kubernetes进行本地通信以按需分配新的Pod,类似于Flink的Yarn和Mesos集成。用户还可以利用命名空间为聚合资源消耗有限的多租户环境启动Flink集群。事先配置具有足够权限的RBAC角色和服务帐户。

Apache Flink 1.10.0 正式发布,与 Blink 整合正式完成
如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:iteblog_hadoop

如作业提交的统一逻辑中所述,Flink 1.10中的所有命令行选项都映射到统一配置。因此,用户可以简单地参考Kubernetes配置选项,然后使用以下命令在CLI中将作业提交到Kubernetes上的现有Flink会话:

./bin/flink run -d -e kubernetes-session -Dkubernetes.cluster-id=<ClusterId> examples/streaming/WindowJoin.jar

如果您想试用此预览功能,我们建议您逐步浏览Native Kubernetes设置,并尝试使用并与社区分享反馈。

Table API/SQL:生产就绪的Hive集成

Hive集成在Flink 1.9中宣布为预览功能。此第一个实现允许用户使用SQL DDL将特定于Flink的元数据保留在Hive Metastore中,调用在Hive中定义的UDF,并使用Flink读取和写入Hive表。Flink 1.10通过进一步的开发使这项工作更加完善,这些开发使Flink可以进行生产就绪的Hive集成。

批处理SQL的原生分区支持

到目前为止,仅支持对未分区的Hive表进行写入。在Flink 1.10中,Flink SQL语法已通过 INSERT OVERWRITE和 PARTITION进行了扩展(FLIP-63),使用户可以在Hive中写入静态和动态分区。

静态分区写入

INSERT { INTO | OVERWRITE } TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;

动态分区编写

INSERT { INTO | OVERWRITE } TABLE tablename1 select_statement1 FROM from_statement;

完全支持的分区表使用户可以利用读取时的分区修剪功能,通过减少需要扫描的数据量来显着提高这些操作的性能。

其他优化

除分区修剪外,Flink 1.10还为Hive集成引入了更多的读取优化,例如:

  • 投影下推(Projection pushdown): Flink通过省略表扫描中不必要的字段,利用投影下推来最大程度地减少Flink和Hive表之间的数据传输。这对于具有大量列的表尤其有利。
  • LIMIT下推(LIMIT pushdown):对于带有LIMIT子句的查询,Flink将尽可能限制输出记录的数量,以最大程度地减少通过网络传输的数据量。
  • 读取时进行ORC矢量化(ORC Vectorization on Read):可以提高ORC文件的读取性能,Flink现在默认使用本机ORC矢量化阅读器,用于高于2.0.0的Hive版本和具有非复杂数据类型的列。
  • 可插拔模块作为Flink系统对象(Beta)

    Flink 1.10为Flink table core中的可插拔模块引入了一种通用机制,首先着眼于系统功能(FLIP-68[6])。使用模块,用户可以扩展Flink的系统对象,例如使用行为类似于Flink系统功能的Hive内置函数。此版本附带预先实现的“ HiveModule”,支持多个Hive版本,但用户也可以编写自己的可插拔模块。

    Table API / SQL的其他改进

    SQL DDL中的水印和计算列

    Flink 1.10支持特定于流的语法扩展,以在Flink SQL DDL中定义时间属性和水印生成(FLIP-66[7])。这允许基于时间的操作(例如加窗)以及表上的水印策略的定义使用DDL语句创建的。

    CREATE TABLE table_name (
    
      WATERMARK FOR columnName AS <watermark_strategy_expression>
    
    ) WITH (
      ...
    )
    

    此版本还引入了对虚拟计算列的支持(FLIP-70[8])可以基于同一表中的其他列或确定性表达式(即字面值,UDF和内置函数)派生。在Flink中,计算列可用于定义创建表时的时间属性。

    SQL DDL的其他扩展

    现在,temporary/persistent和system/catalog函数之间有明显的区别(FLIP-57[9])。这不仅消除了函数引用中的歧义,而且允许确定性的函数解析顺序(即,在命名冲突的情况下,系统函数将在目录函数之前,而临时函数在这两个维度上都将优先于持久函数)。

    遵循FLIP-57的基础,我们扩展了SQL DDL语法,以支持创建目录功能,临时功能和临时系统功能(FLIP-79[10]):

    CREATE [TEMPORARY|TEMPORARY SYSTEM] FUNCTION 
    
      [IF NOT EXISTS] [catalog_name.][db_name.]function_name 
    
    AS identifier [LANGUAGE JAVA|SCALA]
    

    有关Flink SQL中DDL支持的当前状态的完整概述,请查看更新的文档。

    注意: 为了将来在跨元对象(表,视图,函数)中正确处理和保证一致的行为,Table API中的某些对象声明方法具有不建议使用更接近标准SQL DDL的方法(FLIP-64[11])。

    完整的TPC-DS覆盖范围

    TPC-DS是一种广泛使用的行业标准决策支持基准,用于评估和衡量基于SQL的数据处理引擎的性能。在Flink 1.10中,端到端均支持所有TPC-DS查询(FLINK-11491),反映了其SQL引擎的就绪状态解决现代数据仓库式工作负载的需求。

    PyFlink:支持本机用户定义函数(UDF)

    在以前的版本中引入了PyFlink的预览版,朝着Flink中全面支持Python的目标迈进了一步。对于此版本,重点是使用户能够在Table API/SQL(FLIP-58[12])中注册和使用Python用户定义函数(UDF,已计划UDTF/UDAF)。

    Apache Flink 1.10.0 正式发布,与 Blink 整合正式完成
    如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:iteblog_hadoop

    如果您对基础实现感兴趣(利用Apache Beam的Portability Framework),请参阅FLIP-58的“架构”部分,也请参阅FLIP- 78[13]。这些数据结构为Pandas支持和PyFlink最终到达DataStream API奠定了必要的基础。

    从Flink 1.10开始,用户还可以使用以下命令通过 pip轻松安装PyFlink:

    pip install apache-flink
    

    有关PyFlink计划进行的其他改进的预览,请查看FLINK-14500并参与讨论以获取所需的用户功能。

    重要更改

  • [FLINK-10725] Flink现在可以编译并在Java 11上运行。
  • [FLINK-15495] Blink计划程序现在是SQL Client中的默认设置,因此用户可以从所有最新功能中受益,并且改进。还计划在下一个版本中使用Table API中旧计划程序的切换,因此我们建议用户开始熟悉Blink计划程序。
  • [FLINK-15115] Kafka 0.8和0.9的连接器已标记为不推荐使用,将不再得到积极支持。如果您仍在使用这些版本或有任何其他相关问题,请联系@dev邮件列表。
  • [FLINK-14516]删除了非基于信用的网络流控制代码,以及配置选项 taskmanager.network。credit.model。展望未来,Flink将始终使用基于信用的流量控制。
  • [FLINK-12122] FLIP-6[14],并引入了与从TaskManagers分配插槽方式有关的代码回归。为了使用更接近FLIP之前行为的调度策略,Flink试图将工作负载分散到所有当前可用的TaskManager中,用户可以在 flink-conf.yaml中设置 Cluster.evenly-spread-out-slots:true。
  • [FLINK-11956] s3-hadoop和 s3-presto文件系统不再使用类重定向,应通过插件加载,但现在可以与所有凭据提供程序无缝集成。强烈建议将其他文件系统仅用作插件,因为我们将继续删除重定向。
  • Flink 1.9带有重构的Web UI,保留了旧版的UI,以备不时之需。到目前为止,尚未报告任何问题,因此社区投票在Flink 1.10中删除旧版Web UI。
  • 英文原文:Apache Flink 1.10.0 Release Announcement

    本博客文章除特别声明,全部都是原创!
    原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
    本文链接: 【Apache Flink 1.10.0 正式发布,与 Blink 整合正式完成】(https://www.iteblog.com/archives/9789.html)
    喜欢 (3)
    分享 (0)
    发表我的评论
    取消评论

    表情
    本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!