纠纷奇闻社交美文家庭
投稿投诉
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

云原生Flinkonk8s讲解与实战操作

4月12日 六壬会投稿
  一、概述
  Flink核心是一个流式的数据流执行引擎,并且能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用。其针对数据流的分布式计算提供了数据分布,数据通信及容错机制等功能。
  Flink官网:https:flink。apache。org
  不同版本的文档:https:nightlies。apache。orgflink
  k8sonflink官方文档:https:nightlies。apache。orgflinkflinkdocsrelease1。14docsdeploymentresourceprovidersnativekubernetes
  也可以参考我之前的文章:大数据Hadoop之实时计算流计算引擎Flink(Flink环境部署)
  GitHub地址:https:github。comapacheflinktreerelease1。14。6二、Flink运行模式
  官方文档:https:nightlies。apache。orgflinkflinkdocsrelease1。15zhdocsdeploymentoverview
  FLinkonyarn有三种运行模式:yarnsession模式(SeesionMode)yarncluster模式(PerJobMode)Application模式(ApplicationMode)
  【温馨提示】PerJob模式(已弃用),Perjob模式仅由YARN支持,并已在Flink1。15中弃用。它将被丢弃在FLINK26000中。三、Flinkonk8s实战操作
  1)flink下载
  下载地址:https:flink。apache。orgdownloads。htmlwgethttps:dlcdn。apache。orgflinkflink1。14。6flink1。14。6binscala2。12。tgz2)构建基础镜像dockerpullapacheflink:1。14。6scala2。12dockertagapacheflink:1。14。6scala2。12myharbor。combigdataflink:1。14。6scala2。12dockerpushmyharbor。combigdataflink:1。14。6scala2。123)session模式
  FlinkSession集群作为长时间运行的KubernetesDeployment执行。你可以在一个Session集群上运行多个Flink作业。每个作业都需要在集群部署完成后提交到集群。
  Kubernetes中的FlinkSession集群部署至少包含三个组件:运行JobManager的部署TaskManagers池的部署暴露JobManager的REST和UI端口的服务1、NativeKubernetes模式
  参数配置:
  https:nightlies。apache。orgflinkflinkdocsrelease1。14docsdeploymentconfigkubernetesnamespace【1】构建镜像DockerfileFROMmyharbor。combigdataflink:1。14。6scala2。12RUNrmfetclocaltimelnsvusrsharezoneinfoAsiaShanghaietclocaltimeechoAsiaShanghaietctimezoneRUNexportLANGzhCN。UTF8
  开始构建镜像dockerbuildtmyharbor。combigdataflinksession:1。14。6scala2。12。nocache上传镜像dockerpushmyharbor。combigdataflinksession:1。14。6scala2。12【2】创建命名空间和serviceaccount创建namespacekubectlcreatensflink创建serviceaccountkubectlcreateserviceaccountflinkserviceaccountnflink用户授权kubectlcreateclusterrolebindingflinkrolebindingflinkclusterroleeditserviceaccountflink:flinkserviceaccount【3】创建flink集群。binkubernetessession。shDkubernetes。clusteridmyfirstflinkclusterDkubernetes。container。imagemyharbor。combigdataflinksession:1。14。6scala2。12Dkubernetes。namespaceflinkDkubernetes。jobmanager。serviceaccountflinkserviceaccountDkubernetes。restservice。exposed。typeNodePort
  【4】提交任务。binflinkruntargetkubernetessessionDkubernetes。clusteridmyfirstflinkclusterDkubernetes。namespaceflinkDkubernetes。jobmanager。serviceaccountflinkserviceaccount。examplesstreamingTopSpeedWindowing。jar参数配置。examplesstreamingWordCount。jarDkubernetes。taskmanager。cpu2000mDexternalresource。limits。kubernetes。cpu4000mDexternalresource。limits。kubernetes。memory10GiDexternalresource。requests。kubernetes。cpu2000mDexternalresource。requests。kubernetes。memory8GiDkubernetes。taskmanager。cpu2000m
  【温馨提示】注意jdk版本,目前jdk8是正常的。
  【5】查看kubectlgetpodsnflinkkubectllogsfmyfirstflinkclustertaskmanager11
  【6】删除flink集群kubectldeletedeploymentmyfirstflinkclusternflinkkubectldeletensflinkforce2、Standalone模式【1】构建镜像
  默认用户是flink用户,这里我换成admin,根据企业需要更换用户,脚本可以通过上面运行的pod拿到。
  启动脚本dockerentrypoint。sh!usrbinenvbashLicensedtotheApacheSoftwareFoundation(ASF)underoneormorecontributorlicenseagreements。SeetheNOTICEfiledistributedwiththisworkforadditionalinformationregardingcopyrightownership。TheASFlicensesthisfiletoyouundertheApacheLicense,Version2。0(theLicense);youmaynotusethisfileexceptincompliancewiththeLicense。YoumayobtainacopyoftheLicenseathttp:www。apache。orglicensesLICENSE2。0Unlessrequiredbyapplicablelaworagreedtoinwriting,softwaredistributedundertheLicenseisdistributedonanASISBASIS,WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied。SeetheLicenseforthespecificlanguagegoverningpermissionsandlimitationsundertheLicense。COMMANDSTANDALONEstandalonejobCOMMANDHISTORYSERVERhistoryserverIfunspecified,thehostnameofthecontaineristakenastheJobManageraddressJOBMANAGERRPCADDRESS{JOBMANAGERRPCADDRESS:(hostnamef)}CONFFILE{FLINKHOME}confflinkconf。yamldropprivscmd(){if〔(idu)!0〕;thenDontneedtodropprivsifEUID!0returnelif〔xsbinsuexec〕;thenAlpineechosuexecadminelseOthersechogosuadminfi}copypluginsifrequired(){if〔zENABLEBUILTINPLUGINS〕;thenreturn0fiechoEnablingrequiredbuiltinpluginsfortargetpluginin(echoENABLEBUILTINPLUGINS);doechoLinking{targetplugin}toplugindirectorypluginname{targetplugin。jar}mkdirp{FLINKHOME}plugins{pluginname}if〔!e{FLINKHOME}opt{targetplugin}〕;thenechoPlugin{targetplugin}doesnotexist。Exiting。exit1elselnfs{FLINKHOME}opt{targetplugin}{FLINKHOME}plugins{pluginname}echoSuccessfullyenabled{targetplugin}fidone}setconfigoption(){localoption1localvalue2escapeperiodsforusageinregularexpressionslocalescapedoption(echo{option}sedes。。g)eitheroverrideanexistingentry,orappendanewoneifgrepE{escapedoption}:。{CONFFILE}thensedies{escapedoption}:。option:valueg{CONFFILE}elseecho{option}:{value}{CONFFILE}fi}prepareconfiguration(){setconfigoptionjobmanager。rpc。address{JOBMANAGERRPCADDRESS}setconfigoptionblob。server。port6124setconfigoptionquery。server。port6125if〔n{TASKMANAGERNUMBEROFTASKSLOTS}〕;thensetconfigoptiontaskmanager。numberOfTaskSlots{TASKMANAGERNUMBEROFTASKSLOTS}fiif〔n{FLINKPROPERTIES}〕;thenecho{FLINKPROPERTIES}{CONFFILE}fienvsubst{CONFFILE}{CONFFILE}。tmpmv{CONFFILE}。tmp{CONFFILE}}maybeenablejemalloc(){if〔{DISABLEJEMALLOC:false}false〕;thenJEMALLOCPATHusrlib(unamem)linuxgnulibjemalloc。soJEMALLOCFALLBACKusrlibx8664linuxgnulibjemalloc。soif〔fJEMALLOCPATH〕;thenexportLDPRELOADLDPRELOAD:JEMALLOCPATHelif〔fJEMALLOCFALLBACK〕;thenexportLDPRELOADLDPRELOAD:JEMALLOCFALLBACKelseif〔JEMALLOCPATHJEMALLOCFALLBACK〕;thenMSGPATHJEMALLOCPATHelseMSGPATHJEMALLOCPATHandJEMALLOCFALLBACKfiechoWARNING:attemptedtoloadjemallocfromMSGPATHbutthelibrarycouldntbefound。glibcwillbeusedinstead。fifi}maybeenablejemalloccopypluginsifrequiredprepareconfigurationargs()if〔1help〕;thenprintfUsage:(basename0)(jobmanager{COMMANDSTANDALONE}taskmanager{COMMANDHISTORYSERVER})printfOr(basename0)helpprintfBydefault,Flinkimageadoptsjemallocasdefaultmemoryallocator。ThisbehaviorcanbedisabledbysettingtheDISABLEJEMALLOCenvironmentvariabletotrue。exit0elif〔1jobmanager〕;thenargs({args〔〕:1})echoStartingJobManagerexec(dropprivscmd)FLINKHOMEbinjobmanager。shstartforeground{args〔〕}elif〔1{COMMANDSTANDALONE}〕;thenargs({args〔〕:1})echoStartingJobManagerexec(dropprivscmd)FLINKHOMEbinstandalonejob。shstartforeground{args〔〕}elif〔1{COMMANDHISTORYSERVER}〕;thenargs({args〔〕:1})echoStartingHistoryServerexec(dropprivscmd)FLINKHOMEbinhistoryserver。shstartforeground{args〔〕}elif〔1taskmanager〕;thenargs({args〔〕:1})echoStartingTaskManagerexec(dropprivscmd)FLINKHOMEbintaskmanager。shstartforeground{args〔〕}fiargs({args〔〕})Runningcommandinpassthroughmodeexec(dropprivscmd){args〔〕}
  编排DockerfileFROMmyharbor。combigdatacentos:7。9。2009USERroot安装常用工具RUNyuminstallyvimtarwgetcurlrsyncbzip2iptablestcpdumplesstelnetnettoolslsof设置时区,默认是UTC时区RUNrmfetclocaltimelnsvusrsharezoneinfoAsiaShanghaietclocaltimeechoAsiaShanghaietctimezoneRUNmkdirpoptapacheADDjdk8u212linuxx64。tar。gzoptapacheADDflink1。14。6binscala2。12。tgzoptapacheENVFLINKHOMEoptapacheflink1。14。6ENVJAVAHOMEoptapachejdk1。8。0212ENVPATHJAVAHOMEbin:PATH创建用户应用jar目录RUNmkdirFLINKHOMEusrlibRUNmkdirhomeCOPYdockerentrypoint。shoptapacheRUNchmodxoptapachedockerentrypoint。shRUNgroupaddsystemgid9999adminuseraddsystemhomedirFLINKHOMEuid9999gidadminadminRUNchownRadmin:adminoptapache设置的工作目录WORKDIRFLINKHOME对外暴露端口EXPOSE61238081执行脚本,构建镜像时不执行,运行实例才会执行ENTRYPOINT〔optapachedockerentrypoint。sh〕CMD〔help〕
  开始构建镜像dockerbuildtmyharbor。combigdataflinkcentosadmin:1。14。6scala2。12。nocache上传镜像dockerpushmyharbor。combigdataflinkcentosadmin:1。14。6scala2。12删除镜像dockerrmimyharbor。combigdataflinkcentosadmin:1。14。6scala2。12crictlrmimyharbor。combigdataflinkcentosadmin:1。14。6scala2。12【2】创建命名空间和serviceaccount创建namespacekubectlcreatensflink创建serviceaccountkubectlcreateserviceaccountflinkserviceaccountnflink用户授权kubectlcreateclusterrolebindingflinkrolebindingflinkclusterroleeditserviceaccountflink:flinkserviceaccount【3】编排yaml文件flinkconfigurationconfigmap。yamlapiVersion:v1kind:ConfigMapmetadata:name:flinkconfiglabels:app:flinkdata:flinkconf。yaml:jobmanager。rpc。address:flinkjobmanagertaskmanager。numberOfTaskSlots:2blob。server。port:6124jobmanager。rpc。port:6123taskmanager。rpc。port:6122queryablestate。proxy。ports:6125jobmanager。memory。process。size:3200mtaskmanager。memory。process。size:2728mtaskmanager。memory。flink。size:2280mparallelism。default:2log4jconsole。properties:ThisaffectsloggingforbothusercodeandFlinkrootLogger。levelINFOrootLogger。appenderRef。console。refConsoleAppenderrootLogger。appenderRef。rolling。refRollingFileAppenderUncommentthisifyouwanttoonlychangeFlinkslogginglogger。flink。nameorg。apache。flinklogger。flink。levelINFOThefollowinglineskeeptheloglevelofcommonlibrariesconnectorsonloglevelINFO。Therootloggerdoesnotoverridethis。Youhavetomanuallychangetheloglevelshere。logger。akka。nameakkalogger。akka。levelINFOlogger。kafka。nameorg。apache。kafkalogger。kafka。levelINFOlogger。hadoop。nameorg。apache。hadooplogger。hadoop。levelINFOlogger。zookeeper。nameorg。apache。zookeeperlogger。zookeeper。levelINFOLogallinfostotheconsoleappender。console。nameConsoleAppenderappender。console。typeCONSOLEappender。console。layout。typePatternLayoutappender。console。layout。patternd{yyyyMMddHH:mm:ss,SSS}5p60cxmnLogallinfosinthegivenrollingfileappender。rolling。nameRollingFileAppenderappender。rolling。typeRollingFileappender。rolling。appendfalseappender。rolling。fileName{sys:log。file}appender。rolling。filePattern{sys:log。file}。iappender。rolling。layout。typePatternLayoutappender。rolling。layout。patternd{yyyyMMddHH:mm:ss,SSS}5p60cxmnappender。rolling。policies。typePoliciesappender。rolling。policies。size。typeSizeBasedTriggeringPolicyappender。rolling。policies。size。size100MBappender。rolling。strategy。typeDefaultRolloverStrategyappender。rolling。strategy。max10Suppresstheirrelevant(wrong)warningsfromtheNettychannelhandlerlogger。netty。nameorg。jboss。netty。channel。DefaultChannelPipelinelogger。netty。levelOFFjobmanagerservice。yaml可选服务,仅非HA模式需要。apiVersion:v1kind:Servicemetadata:name:flinkjobmanagerspec:type:ClusterIPports:name:rpcport:6123name:blobserverport:6124name:webuiport:8081selector:app:flinkcomponent:jobmanagerjobmanagerrestservice。yaml可选服务,将jobmanagerrest端口公开为公共Kubernetes节点的端口。apiVersion:v1kind:Servicemetadata:name:flinkjobmanagerrestspec:type:NodePortports:name:restport:8081targetPort:8081nodePort:30081selector:app:flinkcomponent:jobmanagertaskmanagerquerystateservice。yaml可选服务,公开TaskManager端口以访问可查询状态作为公共Kubernetes节点的端口。apiVersion:v1kind:Servicemetadata:name:flinktaskmanagerquerystatespec:type:NodePortports:name:querystateport:6125targetPort:6125nodePort:30025selector:app:flinkcomponent:taskmanager
  以上几个配置文件是公共的jobmanagersessiondeploymentnonha。yamlapiVersion:appsv1kind:Deploymentmetadata:name:flinkjobmanagerspec:replicas:1selector:matchLabels:app:flinkcomponent:jobmanagertemplate:metadata:labels:app:flinkcomponent:jobmanagerspec:containers:name:jobmanagerimage:myharbor。combigdataflinkcentosadmin:1。14。6scala2。12args:〔jobmanager〕ports:containerPort:6123name:rpccontainerPort:6124name:blobservercontainerPort:8081name:webuilivenessProbe:tcpSocket:port:6123initialDelaySeconds:30periodSeconds:60volumeMounts:name:flinkconfigvolumemountPath:optapacheflink1。14。6confsecurityContext:runAsUser:9999referstouserflinkfromofficialflinkimage,changeifnecessaryvolumes:name:flinkconfigvolumeconfigMap:name:flinkconfigitems:key:flinkconf。yamlpath:flinkconf。yamlkey:log4jconsole。propertiespath:log4jconsole。propertiestaskmanagersessiondeployment。yamlapiVersion:appsv1kind:Deploymentmetadata:name:flinktaskmanagerspec:replicas:2selector:matchLabels:app:flinkcomponent:taskmanagertemplate:metadata:labels:app:flinkcomponent:taskmanagerspec:containers:name:taskmanagerimage:myharbor。combigdataflinkcentosadmin:1。14。6scala2。12args:〔taskmanager〕ports:containerPort:6122name:rpccontainerPort:6125name:querystatelivenessProbe:tcpSocket:port:6122initialDelaySeconds:30periodSeconds:60volumeMounts:name:flinkconfigvolumemountPath:optapacheflink1。14。6confsecurityContext:runAsUser:9999referstouserflinkfromofficialflinkimage,changeifnecessaryvolumes:name:flinkconfigvolumeconfigMap:name:flinkconfigitems:key:flinkconf。yamlpath:flinkconf。yamlkey:log4jconsole。propertiespath:log4jconsole。properties【4】创建flink集群kubectlcreatensflinkConfigurationandservicedefinitionkubectlcreatefflinkconfigurationconfigmap。yamlnflinkservicekubectlcreatefjobmanagerservice。yamlnflinkkubectlcreatefjobmanagerrestservice。yamlnflinkkubectlcreateftaskmanagerquerystateservice。yamlnflinkCreatethedeploymentsfortheclusterkubectlcreatefjobmanagersessiondeploymentnonha。yamlnflinkkubectlcreateftaskmanagersessiondeployment。yamlnflink
  镜像逆向解析dockerfilealiaswhalerdockerruntrmvvarrundocker。sock:varrundocker。sock:ropeglegwhalerwhalerflink:1。14。6scala2。12
  查看kubectlgetpods,svcnflinkowide
  web:http:192。168。182。110:30081overview
  【5】提交任务。binflinkrunmlocal168182110:30081。examplesstreamingWordCount。jar
  kubectllogsflinktaskmanager54649bf96czjtkhnflink
  【6】删除flink集群kubectldeletefjobmanagerservice。yamlnflinkkubectldeletefflinkconfigurationconfigmap。yamlnflinkkubectldeleteftaskmanagersessiondeployment。yamlnflinkkubectldeletefjobmanagersessiondeployment。yamlnflinkkubectldeletensflinkforce【7】访问flinkweb
  端口就是jobmanagerrestservice。yaml文件中的NodePort
  http:192。168。182。110:30081overview
  4)application模式(推荐)
  Kubernetes中一个基本的FlinkApplication集群部署包含三个组件:运行JobManager的应用程序TaskManagers池的部署暴露JobManager的REST和UI端口的服务1、NativeKubernetes模式(常用)【1】构建镜像DockerfileFROMmyharbor。combigdataflink:1。14。6scala2。12RUNrmfetclocaltimelnsvusrsharezoneinfoAsiaShanghaietclocaltimeechoAsiaShanghaietctimezoneRUNexportLANGzhCN。UTF8RUNmkdirpFLINKHOMEusrlibCOPYTopSpeedWindowing。jarFLINKHOMEusrlib
  开始构建镜像dockerbuildtmyharbor。combigdataflinkapplication:1。14。6scala2。12。nocache上传镜像dockerpushmyharbor。combigdataflinkapplication:1。14。6scala2。12删除镜像dockerrmimyharbor。combigdataflinkapplication:1。14。6scala2。12crictlrmimyharbor。combigdataflinkapplication:1。14。6scala2。12【2】创建命名空间和serviceacount创建namespacekubectlcreatensflink创建serviceaccountkubectlcreateserviceaccountflinkserviceaccountnflink用户授权kubectlcreateclusterrolebindingflinkrolebindingflinkclusterroleeditserviceaccountflink:flinkserviceaccount【3】创建flink集群并提交任务。binflinkrunapplicationtargetkubernetesapplicationDkubernetes。clusteridmyfirstapplicationclusterDkubernetes。container。imagemyharbor。combigdataflinkapplication:1。14。6scala2。12Dkubernetes。jobmanager。replicas1Dkubernetes。namespaceflinkDkubernetes。jobmanager。serviceaccountflinkserviceaccountDexternalresource。limits。kubernetes。cpu2000mDexternalresource。limits。kubernetes。memory2GiDexternalresource。requests。kubernetes。cpu1000mDexternalresource。requests。kubernetes。memory1GiDkubernetes。restservice。exposed。typeNodePortlocal:optflinkusrlibTopSpeedWindowing。jar
  【注意】local是应用模式中唯一支持的方案。local代表本地环境,这里即pod或者容器环境,并非宿主机。
  查看kubectlgetpodspods,svcnflink
  kubectllogsfmyfirstapplicationclustertaskmanager11nflink
  【4】删除flink集群kubectldeletedeploymentmyfirstapplicationclusternflinkkubectldeletensflinkforce2、Standalone模式【1】构建镜像Dockerfile
  启动脚本dockerentrypoint。sh!usrbinenvbashLicensedtotheApacheSoftwareFoundation(ASF)underoneormorecontributorlicenseagreements。SeetheNOTICEfiledistributedwiththisworkforadditionalinformationregardingcopyrightownership。TheASFlicensesthisfiletoyouundertheApacheLicense,Version2。0(theLicense);youmaynotusethisfileexceptincompliancewiththeLicense。YoumayobtainacopyoftheLicenseathttp:www。apache。orglicensesLICENSE2。0Unlessrequiredbyapplicablelaworagreedtoinwriting,softwaredistributedundertheLicenseisdistributedonanASISBASIS,WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied。SeetheLicenseforthespecificlanguagegoverningpermissionsandlimitationsundertheLicense。COMMANDSTANDALONEstandalonejobCOMMANDHISTORYSERVERhistoryserverIfunspecified,thehostnameofthecontaineristakenastheJobManageraddressJOBMANAGERRPCADDRESS{JOBMANAGERRPCADDRESS:(hostnamef)}CONFFILE{FLINKHOME}confflinkconf。yamldropprivscmd(){if〔(idu)!0〕;thenDontneedtodropprivsifEUID!0returnelif〔xsbinsuexec〕;thenAlpineechosuexecadminelseOthersechogosuadminfi}copypluginsifrequired(){if〔zENABLEBUILTINPLUGINS〕;thenreturn0fiechoEnablingrequiredbuiltinpluginsfortargetpluginin(echoENABLEBUILTINPLUGINS);doechoLinking{targetplugin}toplugindirectorypluginname{targetplugin。jar}mkdirp{FLINKHOME}plugins{pluginname}if〔!e{FLINKHOME}opt{targetplugin}〕;thenechoPlugin{targetplugin}doesnotexist。Exiting。exit1elselnfs{FLINKHOME}opt{targetplugin}{FLINKHOME}plugins{pluginname}echoSuccessfullyenabled{targetplugin}fidone}setconfigoption(){localoption1localvalue2escapeperiodsforusageinregularexpressionslocalescapedoption(echo{option}sedes。。g)eitheroverrideanexistingentry,orappendanewoneifgrepE{escapedoption}:。{CONFFILE}thensedies{escapedoption}:。option:valueg{CONFFILE}elseecho{option}:{value}{CONFFILE}fi}prepareconfiguration(){setconfigoptionjobmanager。rpc。address{JOBMANAGERRPCADDRESS}setconfigoptionblob。server。port6124setconfigoptionquery。server。port6125if〔n{TASKMANAGERNUMBEROFTASKSLOTS}〕;thensetconfigoptiontaskmanager。numberOfTaskSlots{TASKMANAGERNUMBEROFTASKSLOTS}fiif〔n{FLINKPROPERTIES}〕;thenecho{FLINKPROPERTIES}{CONFFILE}fienvsubst{CONFFILE}{CONFFILE}。tmpmv{CONFFILE}。tmp{CONFFILE}}maybeenablejemalloc(){if〔{DISABLEJEMALLOC:false}false〕;thenJEMALLOCPATHusrlib(unamem)linuxgnulibjemalloc。soJEMALLOCFALLBACKusrlibx8664linuxgnulibjemalloc。soif〔fJEMALLOCPATH〕;thenexportLDPRELOADLDPRELOAD:JEMALLOCPATHelif〔fJEMALLOCFALLBACK〕;thenexportLDPRELOADLDPRELOAD:JEMALLOCFALLBACKelseif〔JEMALLOCPATHJEMALLOCFALLBACK〕;thenMSGPATHJEMALLOCPATHelseMSGPATHJEMALLOCPATHandJEMALLOCFALLBACKfiechoWARNING:attemptedtoloadjemallocfromMSGPATHbutthelibrarycouldntbefound。glibcwillbeusedinstead。fifi}maybeenablejemalloccopypluginsifrequiredprepareconfigurationargs()if〔1help〕;thenprintfUsage:(basename0)(jobmanager{COMMANDSTANDALONE}taskmanager{COMMANDHISTORYSERVER})printfOr(basename0)helpprintfBydefault,Flinkimageadoptsjemallocasdefaultmemoryallocator。ThisbehaviorcanbedisabledbysettingtheDISABLEJEMALLOCenvironmentvariabletotrue。exit0elif〔1jobmanager〕;thenargs({args〔〕:1})echoStartingJobManagerexec(dropprivscmd)FLINKHOMEbinjobmanager。shstartforeground{args〔〕}elif〔1{COMMANDSTANDALONE}〕;thenargs({args〔〕:1})echoStartingJobManagerexec(dropprivscmd)FLINKHOMEbinstandalonejob。shstartforeground{args〔〕}elif〔1{COMMANDHISTORYSERVER}〕;thenargs({args〔〕:1})echoStartingHistoryServerexec(dropprivscmd)FLINKHOMEbinhistoryserver。shstartforeground{args〔〕}elif〔1taskmanager〕;thenargs({args〔〕:1})echoStartingTaskManagerexec(dropprivscmd)FLINKHOMEbintaskmanager。shstartforeground{args〔〕}fiargs({args〔〕})Runningcommandinpassthroughmodeexec(dropprivscmd){args〔〕}
  编排DockerfileFROMmyharbor。combigdatacentos:7。9。2009USERroot安装常用工具RUNyuminstallyvimtarwgetcurlrsyncbzip2iptablestcpdumplesstelnetnettoolslsof设置时区,默认是UTC时区RUNrmfetclocaltimelnsvusrsharezoneinfoAsiaShanghaietclocaltimeechoAsiaShanghaietctimezoneRUNmkdirpoptapacheADDjdk8u212linuxx64。tar。gzoptapacheADDflink1。14。6binscala2。12。tgzoptapacheENVFLINKHOMEoptapacheflink1。14。6ENVJAVAHOMEoptapachejdk1。8。0212ENVPATHJAVAHOMEbin:PATH创建用户应用jar目录RUNmkdirFLINKHOMEusrlibRUNmkdirhomeCOPYdockerentrypoint。shoptapacheRUNgroupaddsystemgid9999adminuseraddsystemhomedirFLINKHOMEuid9999gidadminadminRUNchownRadmin:adminoptapacheRUNchmodx{FLINKHOME}dockerentrypoint。sh设置的工作目录WORKDIRFLINKHOME对外暴露端口EXPOSE61238081执行脚本,构建镜像时不执行,运行实例才会执行ENTRYPOINT〔optapachedockerentrypoint。sh〕CMD〔help〕dockerbuildtmyharbor。combigdataflinkcentosadmin:1。14。6scala2。12。nocache上传镜像dockerpushmyharbor。combigdataflinkcentosadmin:1。14。6scala2。12删除镜像dockerrmimyharbor。combigdataflinkcentosadmin:1。14。6scala2。12【2】创建命名空间和serviceacount创建namespacekubectlcreatensflink创建serviceaccountkubectlcreateserviceaccountflinkserviceaccountnflink用户授权kubectlcreateclusterrolebindingflinkrolebindingflinkclusterroleeditserviceaccountflink:flinkserviceaccount【3】编排yaml文件
  flinkconfigurationconfigmap。yamlapiVersion:v1kind:ConfigMapmetadata:name:flinkconfiglabels:app:flinkdata:flinkconf。yaml:jobmanager。rpc。address:flinkjobmanagertaskmanager。numberOfTaskSlots:2blob。server。port:6124jobmanager。rpc。port:6123taskmanager。rpc。port:6122queryablestate。proxy。ports:6125jobmanager。memory。process。size:3200mtaskmanager。memory。process。size:2728mtaskmanager。memory。flink。size:2280mparallelism。default:2log4jconsole。properties:ThisaffectsloggingforbothusercodeandFlinkrootLogger。levelINFOrootLogger。appenderRef。console。refConsoleAppenderrootLogger。appenderRef。rolling。refRollingFileAppenderUncommentthisifyouwanttoonlychangeFlinkslogginglogger。flink。nameorg。apache。flinklogger。flink。levelINFOThefollowinglineskeeptheloglevelofcommonlibrariesconnectorsonloglevelINFO。Therootloggerdoesnotoverridethis。Youhavetomanuallychangetheloglevelshere。logger。akka。nameakkalogger。akka。levelINFOlogger。kafka。nameorg。apache。kafkalogger。kafka。levelINFOlogger。hadoop。nameorg。apache。hadooplogger。hadoop。levelINFOlogger。zookeeper。nameorg。apache。zookeeperlogger。zookeeper。levelINFOLogallinfostotheconsoleappender。console。nameConsoleAppenderappender。console。typeCONSOLEappender。console。layout。typePatternLayoutappender。console。layout。patternd{yyyyMMddHH:mm:ss,SSS}5p60cxmnLogallinfosinthegivenrollingfileappender。rolling。nameRollingFileAppenderappender。rolling。typeRollingFileappender。rolling。appendfalseappender。rolling。fileName{sys:log。file}appender。rolling。filePattern{sys:log。file}。iappender。rolling。layout。typePatternLayoutappender。rolling。layout。patternd{yyyyMMddHH:mm:ss,SSS}5p60cxmnappender。rolling。policies。typePoliciesappender。rolling。policies。size。typeSizeBasedTriggeringPolicyappender。rolling。policies。size。size100MBappender。rolling。strategy。typeDefaultRolloverStrategyappender。rolling。strategy。max10Suppresstheirrelevant(wrong)warningsfromtheNettychannelhandlerlogger。netty。nameorg。jboss。netty。channel。DefaultChannelPipelinelogger。netty。levelOFF
  jobmanagerservice。yaml可选服务,仅非HA模式需要。apiVersion:v1kind:Servicemetadata:name:flinkjobmanagerspec:type:ClusterIPports:name:rpcport:6123name:blobserverport:6124name:webuiport:8081selector:app:flinkcomponent:jobmanager
  jobmanagerrestservice。yaml可选服务,将jobmanagerrest端口公开为公共Kubernetes节点的端口。apiVersion:v1kind:Servicemetadata:name:flinkjobmanagerrestspec:type:NodePortports:name:restport:8081targetPort:8081nodePort:30081selector:app:flinkcomponent:jobmanager
  taskmanagerquerystateservice。yaml可选服务,公开TaskManager端口以访问可查询状态作为公共Kubernetes节点的端口。apiVersion:v1kind:Servicemetadata:name:flinktaskmanagerquerystatespec:type:NodePortports:name:querystateport:6125targetPort:6125nodePort:30025selector:app:flinkcomponent:taskmanager
  jobmanagerapplicationnonha。yaml,非高可用apiVersion:batchv1kind:Jobmetadata:name:flinkjobmanagerspec:template:metadata:labels:app:flinkcomponent:jobmanagerspec:restartPolicy:OnFailurecontainers:name:jobmanagerimage:myharbor。combigdataflinkcentosadmin:1。14。6scala2。12env:args:〔standalonejob,jobclassname,org。apache。flink。examples。java。wordcount。WordCount,output,tmpresult〕ports:containerPort:6123name:rpccontainerPort:6124name:blobservercontainerPort:8081name:webuilivenessProbe:tcpSocket:port:6123initialDelaySeconds:30periodSeconds:60volumeMounts:name:flinkconfigvolumemountPath:optapacheflink1。14。6confname:jobartifactsvolumemountPath:optapacheflink1。14。6usrlibsecurityContext:runAsUser:9999referstouserflinkfromofficialflinkimage,changeifnecessaryvolumes:name:flinkconfigvolumeconfigMap:name:flinkconfigitems:key:flinkconf。yamlpath:flinkconf。yamlkey:log4jconsole。propertiespath:log4jconsole。propertiesname:jobartifactsvolumehostPath:path:mntnfsdataflinkapplicationjobartifacts
  【温馨提示】注意这里的挂载mntbigdataflinkusrlib,最好这里使用共享目录。
  taskmanagerjobdeployment。yamlapiVersion:appsv1kind:Deploymentmetadata:name:flinktaskmanagerspec:replicas:2selector:matchLabels:app:flinkcomponent:taskmanagertemplate:metadata:labels:app:flinkcomponent:taskmanagerspec:containers:name:taskmanagerimage:myharbor。combigdataflinkcentosadmin:1。14。6scala2。12env:args:〔taskmanager〕ports:containerPort:6122name:rpccontainerPort:6125name:querystatelivenessProbe:tcpSocket:port:6122initialDelaySeconds:30periodSeconds:60volumeMounts:name:flinkconfigvolumemountPath:optapacheflink1。14。6confname:jobartifactsvolumemountPath:optapacheflink1。14。6usrlibsecurityContext:runAsUser:9999referstouserflinkfromofficialflinkimage,changeifnecessaryvolumes:name:flinkconfigvolumeconfigMap:name:flinkconfigitems:key:flinkconf。yamlpath:flinkconf。yamlkey:log4jconsole。propertiespath:log4jconsole。propertiesname:jobartifactsvolumehostPath:path:mntnfsdataflinkapplicationjobartifacts【4】创建flink集群并提交任务kubectlcreatensflinkConfigurationandservicedefinitionkubectlcreatefflinkconfigurationconfigmap。yamlnflinkservicekubectlcreatefjobmanagerservice。yamlnflinkkubectlcreatefjobmanagerrestservice。yamlnflinkkubectlcreateftaskmanagerquerystateservice。yamlnflinkCreatethedeploymentsfortheclusterkubectlcreatefjobmanagerapplicationnonha。yamlnflinkkubectlcreateftaskmanagerjobdeployment。yamlnflink
  查看kubectlgetpods,svcnflink
  【5】删除flink集群kubectldeletefflinkconfigurationconfigmap。yamlnflinkkubectldeletefjobmanagerservice。yamlnflinkkubectldeletefjobmanagerrestservice。yamlnflinkkubectldeleteftaskmanagerquerystateservice。yamlnflinkkubectldeletefjobmanagerapplicationnonha。yamlnflinkkubectldeleteftaskmanagerjobdeployment。yamlnflinkkubectldeletensflinkforce【6】查看kubectlgetpods,svcnflinkkubectlexecitflinktaskmanager54cb7fc57cg484qnflinkbash
  Flinkonk8s讲解与实战操作,这里只是拿官方示例进行演示,后续也有相关企业案例,有任何疑问的小伙伴欢迎给我留言,后续会持续分享【云原生大数据】相关的教程,请小伙伴耐心等待
投诉 评论 转载

2022年3月10日,每日金价报价(黄金价格大幅下降)黄金价格暴跌,黄金多少一克?实时金价,黄金金条黄金首饰价格查询纸黄金期货黄金现货黄金价格分析周大福老庙老凤祥黄金克价多少俄乌冲突出现转机,国际黄金暴跌100美元!上海黄金……花了30万,6位首席担纲中信证券拆解特斯拉研报被质疑涉抄袭拆解汽车写研报似乎成了券商们的新风向。其中,中信证券(600030。SH)因花30万买来一辆特斯拉(TSLA。US)汽车,拆解分析后得出94页研报,被评为最卷券商。不过,……人工智能摄像头想象空间巨大,构建智能化社会必不可少如果有一种应用场景,可以集合图像识别,人工智能,新能源,储能,5g结合等,应用场景非常普遍,是不是应该大力发展?随手拍了几种照片,大家是不是非常熟悉?场景1,消防,……里奇巴斯见面不要求换管理层,否认詹姆斯离队ESPN记者Woj报道,勒布朗詹姆斯在全明星接受采访表示,不排除重回骑士的可能。多位消息人士透露,詹姆斯、安东尼戴维斯的经纪人里奇保罗已经在当地时间周二会见湖人老板珍妮巴……国有银行3年期大额存单利率仅3。25,为什么还有很多人愿意存大额存单是一种比定期存款利息更高的存款,所以尽管大额存单的起存门槛相对较高,但仍然比较受欢迎。然而,有些银行的大额存单,利息也并不是很高,比如某国有银行发行的3年期的大额存单,……腾讯诉抖音云南虫谷短视频侵权案件中红旗原则的司法适用《云南虫谷》网剧(主演潘粤明、张雨绮和姜超)改编自天下霸唱(本名张牧野)小说《鬼吹灯之云南虫谷》系列,播出后深受网友热捧。深圳市腾讯计算机系统有限公司和腾讯云计算(西安)有限责……武川县激活资源禀赋促招商优营商为推动招商引资工作提质增效,武川县注重挖掘本区域的资源禀赋,全县上下牢固树立大开放才能招大商,大招商才能大发展的发展意识,注重招商与服务并重,全县总动员,多措并举,多管齐下,发……价值投资的选择潜力币是如何选择出来的?比特币从15,000美元迅速上涨至23,000美元并保持在该水平附近,我们看到山寨币呈爆炸式上涨。会一直这样下去吗?如果我们继续看到比特币每日高于其200天移动平均……硼硫酸盐紫外非线性光学材料研究获进展紫外非线性光学晶体可以通过二次谐波发生过程产生短波激光,在现代激光技术中具有重要应用价值。紫外非线性光学材料需要满足以下基本性能条件,即在紫外波段有宽的透过范围;具有合适的双折……互联网卖酒靠谱吗?忐忑中销量依然直线上升,究竟是什么原因自从互联网走入生活,很多商业行为也发生了巨大的变化。尤其是线下交易转到线上以后,整个社会的经济环境更是发生了天翻地覆的变革。如果只要动动手指下个单,就有人把你想要的一切送……年龄越大越有魅力的女人,往往做好了三件事文时光了了卢梭在《爱弥儿》里写到:一个女人可以用化妆品来使她出一出风头,但要获得别人的好感,还要依赖她的人品。生活中有很多女人,都把美貌当作自己最有利的资本,试图凭……云原生Flinkonk8s讲解与实战操作一、概述Flink核心是一个流式的数据流执行引擎,并且能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用。其针对数据流的分布式计算提供了数据分布,数据通信……
为什么女人睡觉穿睡衣不穿睡裤有图有真相一看就懂普通美女生活照20张这些美女都很潮很时尚(图)新潮又有范儿!襄阳游客点赞南阳元宵焰火晚会四十岁了再看活着恍然醒悟网曝19元买女性生活照女性私照被网上交易的幕后人民日报央视祝贺!中国网球奇迹诞生,淘汰前2号种子,创造历史大学女生日常生活照片无法想象的任性(图)农村留守媳妇真实生活照白天农活夜晚最难熬(图)越南为什么美女这么多揭晓越南美女图片欣赏古田镇吃面越南河内美女图片,越南美女比想象中的漂亮越南美女旗袍开叉到腰带,越南女人为什么穿高开叉旗袍Q2出货量位列全球第二小米手机斩获京东618销量冠军农业现代化评论综述可爱的童话故事又是一年开学季,珍惜和孩子相处的每一天2个鸡蛋1碗玉米面,手不沾面,筷子一搅,做出这美味,比披萨好扫黑风暴大结局高明远用麦佳绑牢王政,李成阳说服麦佳取证上海公积金贷款需要流水帐吗准爸爸应与胎儿多说说话04女排黄金一代同框!陈忠和很精神,周苏红气质佳,赵蕊蕊出新教你如何认识华侨华人华裔华族的区别?他们还属于中国人吗女人房后事腰酸的起因36万阿富汗难民逃离这对妇女和儿童来说将是地狱

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形