《谢磊-Flink在移动云实时计算的实践.pdf》由会员分享,可在线阅读,更多相关《谢磊-Flink在移动云实时计算的实践.pdf(33页珍藏版)》请在三个皮匠报告上搜索。
1、谢磊 中国移动云能力中心Apache Flink 在移动云实时计算的实践中移(苏州)软件技术有限公司(中国移动云能力中心)是中国移动通信有限公司的全资子公司。公司定位为中国移动云设施构建者、云服务提供者、云生态汇聚者。公司以移动云运营为中心,产品和服务在电信、政务、金融、制造、交通、医疗等行业得到广泛应用。N+31+X200+2500+100万+属地化资源池支撑产品应用客户实时计算平台介绍#1中移信令业务优化#2稳定性实践#3未来规划#4#1实时计算平台介绍实时流计算在移动云的演进2000202021第一代实时消息处理组合式编程模型微批处理集成资源框
2、架有状态的流计算支持事件时间处理支持灵活窗口操作声明式编程云原生时代流计算上线移动云私有云+公有云实时数仓LakeHouse上线移动云中移信令数据处理145632实时用户画像、埋点实时数仓实时运维监控实时推荐业务场景移动云数据管道平台功能设计 实时任务日志检索 实时性能指标采集 消息延迟报警 任务反压报警 任务生命周期托管 支持Flink、SQL 支持Spark Streaming 流程管理、安全审查 引擎多版本支持 Notebook编写 SQL语法检测 UDF管理 元数据管理#1 服务管理#2 SQL支持#3 任务运维引擎多版本设计主要是由于作业中包含了与生产环境不一致的FLINK依赖提交流
3、程RTPRTP存储读取提交运行业务作业 用户程序调试成本高 尝试新版本引擎周期长 无法规避hack引擎功能 运行失败且无异常信息需求背景引擎多版本设计增加作业包检测,过滤非法作业例如,含有 org.apache.flink.core.*业务作业RTPRTP提交&检测1.极大减少低价值的BUG定位成本2.作业在升级、回退版本方便3.提高作业安全性、稳定性解决思路我们的收益实时任务日志检索设计 业务需要检索日志来验证流程复杂逻辑 原生TM的日志UI打不开,容易卡死 原生TM日志不支持检索需求背景实时任务日志检索设计 如何采集作业程序日志,TM分布在不同的机器上 如何不侵入作业程序采集日志 如何限流
4、作业打印大量无用日志PUSHAOP-AspectJWeaver-SenderRateLimiter设计思考实时任务日志检索设计JM/TaskManagerTaskTaskTask注:env.java.opts.jobmanager:-javaagent:lib/aspectjweaver.jarenv.java.opts.taskmanager:-javaagent:lib/aspectjweaver.jarSenderRateLimiterAOP EVENT PLUGIN索引字段JobId、Level、Content、Timestamp整体设计实时任务日志检索设计 业务程序不需要做任何改动,
5、即可支持日志搜索 开发人员可以便捷地验证业务逻辑 采用限流措施,不存在日志存储瓶颈 减轻平台管理同事压力我们的收益#2中移信令业务优化业务介绍各级政府部门都有关于移动用户资源数据的应用需求,包括旅游部门、应急部门、交通行业等,如交通规划、交通调查、旅游景区等重点区域的人口流量监测、流动人口监测管理等等。中国移动信令业务正是为了解决这些问题,快速高效满足客户需求,根据中国移动手机用户的高覆盖率,利用移动通信网络、区域信息服务技术及GIS(地理信息系统)技术,通过对群体移动用户信令数据的统计,对城市的人口数量、分布、流动性等要素进行分析、预测,为城市规划、交通规划、管理资源配备、外来人口管理、政策
6、制定等政府管理行为提供决策数据支持。舆情监控舆情监控社会治理社会治理公共安全公共安全交通旅游交通旅游轨迹分析轨迹分析跨地域流动跨地域流动驻留地分析驻留地分析互联网偏好分析互联网偏好分析背景智慧城市智慧城市业务介绍 日均超10PB,20万亿/天 大小0.5KB,包含2345G DPI数据、2345G位置信令、IMS数据、省份、城市、网络类型、接口类型、O域话单、MSISDN(GPSI)/IMSI(SUPI)/IMEI(PEI)/XDR 数据加密服务,支持对5G数据的字段级加密处理 数据压缩/解压服务,支持对5G数据数据片段的压缩 支持通过条件过滤、生成新列、缺值处理等对5G清单中的数据进行清洗
7、对4G数据不同版本进行标准化,按协议输出统一版本 支持将时间戳和手机号进行标准化格式转换数据量大单条数据数据处理复杂集群物理结构FlumeKafkaSparkStreaming物理部署上报网关HCFlumeHC位置基地集群BDOC-OPLDAPHadoopKPBCOREDMZSM4SM4RangerYARNHDFShivesparkhbaseLDAPRangerKafkaHCKafka v140(184+3)Flume v140集群(120+3)SDTP遇到哪些问题Flume channel full防火墙超限Flume写入Kafka,客户端发送超时The server disconnecte
8、d before a response was received.SparkStreaming处理不稳定遇到哪些问题涉及组件多,维护成本高组件职责不清晰,例Flume中存在数据清洗逻辑Spark逻辑处理复杂,多处存在shuffle,处理性能不稳定 Kafka写入频繁超时,生产性能存在瓶颈 Flume发送数据未达到网卡上线速率写入性能问题架构设计问题Flume写入Kafka超时The server disconnected before a response was received.硬件防火墙超限,特殊端口6667 Kafka服务端性能参数调优,例如work.threads,num.io.th
9、reads Kafka物理服务器网络参数调优?Flume客户端优化 batch.size buffer.memory request.time.outcompression.type:LZ4、ZSTD.?单机同时多少客户端并发合适KafkaApache Flume AgentSourceChannelSinkKafka ClientKafka ClientKafka ClientKafka Client问题定位Kafka写入性能优化./bin/kafka-producer-perf-test.sh-topic demo_p30-num-records 0-record-s
10、ize 512-throughput 2000000-print-metrics-producer-props bootstrap.servers=kafka-servere:9092 batch.size=256000 buffer.memory=134217728 linger.ms=100验证评估Kafka写入性能优化KAFKA-12611https:/ demo_p30-num-records 0-record-size 512-throughput 2000000-print-metrics-producer-props bootstrap.servers=ka
11、fka-servere:9092 batch.size=256000 buffer.memory=134217728 linger.ms=100 compression.type=lz4验证评估Kafka写入性能优化Kafka单机并发度优化如何达到网卡网速上线Flume Channel FullFlume 事务逻辑takeListtransactionFlink 状态管理ChannelSourcetakeListtransaction Flume事务处理API较底层,需要手动进行处理 Flume事务处理需要将数据进行两遍拷贝,影响性能 Flink的状态管理轻量级,数据处理性能稳定 Flink拥
12、有丰富的source、sink算子,扩展性高Sink思考点整体优化升级FlinkKafkaFlink+Aviator 提升采集性能解决海量数据发送性能瓶颈,稳定性提高 明确组件职责将原Interceptor逻辑转移至后端实时流处理,采集层专注于数据汇聚,处理层专注于数据分拣 统一技术架构端到端采用FLINK框架,具有更好的性能,降低开发、运维成本Spark采集层处理层相同量级,整体性能提升1/3,并降低维护成本我们的收益#3稳定性实践作业稳定性建设 作业运行失败 作业消费延迟 作业出现OOM 作业异常重启个体性整体性 物理隔离 服务降级 资源监控 服务拆分服务故障处理方案作业稳定性建设FLIN
13、K-10052Yarn NodeManagerJobManagerYarn NodeManagerJobManagerZooKeeperZooKeeperZooKeeperrack 1rack 2rack 3XZooKeeper集群正常,仅其中一台服务器网络瞬断。引发大批量JobManager重新Leader进行选举,任务重启。Leader 选举、发现Checkpoint ID 计数器作业稳定性建设ZooKeeper 网络状态转换ConnectedSuspendedLostReconnectedCurator2.X LeaderLatch 缺陷处理激进作业稳定性建设修复方案https:/curator.apache.org/zk-compatibility-34.htmlhttps:/ Elastic Scaling调研 K8s Yunikorn资源队列调研资源利用方向数据湖方向