本文目录导航:
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表,普通都是天级别最多小时级别的义务。
随着实时性要求越来越高,传统的入库不太能满足需求。
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的通常,发现数据湖的有限或许,点击这里开启你的实时计算之旅。