发布信息

flink实战教程 (flink实时数仓架构)

     2024-08-13 13:49:20     612

本文目录导航:

flink实战教程-集群的部署

这种形式咱们普通是在用IDE调试程序的时刻用到,当咱们在本地用IDE开发程序的时刻,口头main方法,flink会在本地进行一个蕴含jobmanager和taskmanager的进程的minicluster,程序运转成功之后,这个cluster进程分开。

这种形式就是间接在物理机上进行flink集群。

咱们可以经过 {Flink_HOME}/conf/. 此外,咱们可以用 ${Flink_HOME}/bin/ start 再进行一个taskmanager。

这时咱们经过jps命令检查一下进行的进程 咱们看到这时刻进行了两个taskmanager 这种部署形式对flink集群的资源治理是flink自己保养的,在消费环境下用的不多,所以咱们也不做过多形容. 进行集群的命令如下: 这个命令有很多的参数,可以在前面加 -h 看下,我这里着重引见一下 -d参数。

加上-d之后,指的是隔离形式,也就是进行之后和客户端就断了咨询,假设要中止集群,须要经过yarn application -kill {applicationId} 来中止集群. 提交成功之后,咱们会在yarn的治理页面看到一个相似的义务 这个进行命令也有很多的参数,我就不逐一解说了,我用大文言讲讲我以为最外围的几个参数。

第二,经过命令行来中止: 这个时刻须要指定yarn applicationId和flink job id 第三,经环节序来中止假设咱们做了一个实时平台这样的系统,就不能手工经过命令行来中止了,可以调用相应的api来中止义务. 这种形式是在flink 1.11 版本中提供的,flink的yarn per job形式进行的时刻会把本地的flink的jar和用户的jar都上行到hdfs,这个环节十分的消耗网络的带宽,假设同时有多团体提交义务的话,那么对网络的影响就更大,此外,每次提交义务的时刻flink的jar包是一样的,也不用每次都拷来拷去的,所以flink提供了一种新的application形式,可以把flink的jar和用户的jar都预先放到hdfs上,这样就能省去yarn per job形式提交义务的jar包拷贝上班,节俭了带宽,放慢了提交义务的速度. 详细的命令如下: -yD :用来指定寄存flink jar的目录 最后一个参数是用户的jar在hdfs上的门路. 说一下题外话,其实咱们事先在做实时平台的时刻,这个提交慢的疑问我也发现了,事先我的想法是先进行一个flink集群,而后再把程序的JobGraph提交到这个yarn集群,不事先来嘛,因为* %%$$# ^& 的要素,也没弄. 关于把服务容器化,也越来越成为一种趋向,所以k8s部署也越来越受大家的注重。

关于k8s部署flink这块说瞎话我钻研的不是很深,也就不多说了。

咱们还可以将程序部署到mesos或许经常使用docker,这个我没有去实践调研过,然而从flink的邮件列表大家沟通的疑问或许是网上查到的资料看,这种形式部署应该不多,所以这里就不详细形容了。

Flink实战之Kafka To Hive

传统的入库义务普通借助于MapReduce或许Spark来写hive表,普通都是天级别最多小时级别的义务。
fl<em></em>ink实战教程
随着实时性要求越来越高,传统的入库不太能满足需求。

Flink齐全基于流式处置,同时也允许了写Hive表。

本文引见一下假设经过FlinkSQL成功kafka数据入库hive,并能够实时可查。

因为写hive表必定基于hive catalog,所以须要 注册hive catalog 。

同时可以在一个job内切换catalog,假设咱们不想把kafka的source table注册到hive metastore外面,那么就可以经常使用memory catalog。

完整SQL如下 以上sql须要借助 sql submit 来提交。

关于已有的hive表,雷同也是可以写入的。

然而得经过 alter table table_name set tblproperties(property_name=new_value);语法将flink须要用到的属性设置出来。

SmartNews 基于 Flink 的 Iceberg 实时数据湖通常

SmartNews在Flink引领的数据湖反派中探务实时降级的冰山之路

SmartNews的数据湖架构师戚清雨在Flink Forward Asia 2022大会上分享了他们构建的高效数据湖通常,这一翻新性战略分为五个主要环节:数据湖构建、Iceberg v1的应战与处置打算、实时降级优化、Iceberg v2的反派性打破,以及未来展望。

数据湖基石

SmartNews的数据湖不只存储广告事情和维表消息,还经过Kafka实时写入,同时以MySQL或Hive的方式存储实时和按小时划分的数据,作为ETL和实时报表的门户。

技术应战与应答

在实时处置中,他们面临去重、准确期间戳降级和近实时查问的应战。

SmartNews驳回Spark处置广告事情,存储在S3并分区,经过Airflow治理义务流程,确保义务的高效口头。

从Iceberg v1到v2的飞跃

后来,经常使用Iceberg v1只管处置了局部疑问,但资源应用不均和锁竞争疑问日益浮现。

SmartNews随后转向Flink+Iceberg v2,成功了真正的实时降级,大幅降落资源消耗,引入Merge On Read机制,仅处置1%的数据降级。

实时降级与维表同步

MySQL的CDC流式处置打算被用来实时降级维表,统筹查问速度和准确性。

广告事情和维表数据流式化后,经过Flink间接写入Iceberg,同时应用MySQL CDC将变动同步到Flink,提供广播式的State供下游查问。

优化与效率优化

Spark允许的是小时级时效性,而Flink则到达了分钟级,清楚提高了ETL的处置效率。

经过Upsert形式和Flink State,他们有效处置了小文件疑问,缩小写入数据量,优化了查问功能。

冰山Sink的秘密

Iceberg Flink Sink的写入战略中,Writer依据Partition选择文件大小,而Partition数据湖则按小时物理分区,每个Partition对应一个文件。

Writer和Committer协同上班,确保Checkpoint时的降级被正确提交。

经过灵活Shuffle Operator,SmartNews奇妙地防止了小文件过多的疑问,经过KeySelectors的选用战略,如Equality Field KeySelector和PartitionKeySelector,确保数据散布的平衡。

未来展望与实战介绍

经过活期的Checkpoint,SmartNews优化了文件数量的散布,尤其是经常使用Dynamic Shuffle KeySelector后,文件生成形式更稳固,小文件缩小清楚。

在阿里云实时计算Flink版的0元试用优惠中,了解更多关于高效实时处置的实战技巧。

深化探求SmartNews的通常,发现数据湖的有限或许,点击这里开启你的实时计算之旅。

相关内容 查看全部