首页
学习
活动
专区
圈层
工具
发布

OPPO 大数据诊断平台“罗盘”正式开源

支持多种主流调度平台,例如 DolphinScheduler、Airflow 或自研等。 支持多版本 Spark、Hadoop 2.x 和 3.x 任务日志诊断和解析。...,提前结束或晚点结束的任务 基线耗时异常 相对于历史正常运行时长,运行时间过长或过短的任务 运行耗时长 运行时间超过2小时的任务 报错分析 sql失败 因sql执行问题而导致失败的任务 shuffle...失败 因shuffle执行问题而导致失败的任务 内存溢出 因内存溢出问题而导致失败的任务 成本分析 内存浪费 内存使用峰值与总内存占比过低的任务 CPU浪费 driver/executor计算时间与总...为了能够获取任务元数据和相关日志进行诊断,一个方式是在 MasterServer 中监听任务状态事件,另一个方式是订阅 MySQL binlog 日志。...诊断失败的任务 用户经常忽略首次失败,甚至加大重试次数,如果不重视,最终可能会演变为最终失败。罗盘记录和诊断分析了每次失败的原因,不仅可以为用户快速定位问题,还可以在故障回溯时找到根因。

1.7K20

Agari使用Airbnb的Airflow实现更智能计划任务的实践

; 多次重试任务来解决间歇性问题; 成功或失败的DAG执行都通过电子邮件报告; 提供引人注目的UI设计让人一目了然; 提供集中日志-一个用来收集日志的中心位置供配置管理; 提供强大的CLI用于自动易于集成...开发者不仅需要写代码来定义和执行DAG,也需要负责控制日志、配置文件管理、指标及见解、故障处理(比如重试失败任务或者对长时间见运行的任务提示超时)、报告(比如把成功或失败通过电子邮件报告),以及状态捕获...DAG度量和见解 对于每一个DAG执行,Airflow都可以捕捉它的运行状态,包括所有参数和配置文件,然后提供给你运行状态。...这个配置从我们的GIT Repo中拿出来,然后放到UI和Airflow Metadata数据库中排列整齐。它也能够允许我们在通信过程中做出改变而不需要进入Git检查变化和等待部署。...更多优良特性 Airflow允许你指定任务池,任务优先级和强大的CLI,这些我们会在自动化中利用到。 为什么使用Airflow?

3.1K90
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    与AI对话的珍藏- Claude的智慧碎片

    回答: 这里有几点建议可以处理airflow任务日志过大的问题: 在调用日志API时指定参数full_content=false,只获取日志的元数据和省略内容,不返回完整日志。...设置日志轮换,将历史日志压缩打包存档到云存储,只保留最近的日志文件。 使用ELK等日志收集系统,直接在后端过滤和搜索日志,只返回用户需要的部分。 控制日志的最大容量和备份份数,自动清理旧日志。...,可以改成流式获取日志吗 回答: import requests from requests.auth import HTTPBasicAuth def stream_airflow_log(dag_id...回答: 推荐优先考虑使用多进程而不是多线程的理由主要有: 1. 避免GIL的影响 Python的多线程实现受到GIL(全局解释器锁)的限制,一次只能有一个线程执行,无法利用多核CPU。...资源控制更简单 进程可以方便地限制内存及CPU使用等资源,而线程无法做到资源限制。 4. 代码实现更简单 多进程代码通常比多线程代码简单,不需要同步、死锁等方面的考虑。 5.

    25610

    《云原生场景下Prometheus指标采集异常的深度排查与架构修复》

    系统初期仅监控10个节点、200个Pod,运行稳定;但随着集群扩容至30个节点、800个Pod,开始出现“Prometheus间歇性无法采集容器指标”的问题:Grafana面板中,部分容器的CPU、内存使用率指标会突然显示...当集群节点的Pod数量超过25个时,节点上的容器数量(含Init容器、Sidecar容器)会超过100个,cadvisor遍历cgroup目录时,需要同时打开大量文件描述符;而kubelet的默认配置中...,“cadvisor指标生成线程数”为2,且“cgroup文件读取缓存时间”为30秒——当容器启停频繁(如业务部署、故障重启)时,缓存失效的cgroup文件增多,2个线程需处理大量文件读取请求,导致指标生成延迟...Operator的ServiceMonitor资源,将“kubelet-cadvisor”job的采集间隔从15秒延长至20秒,给cadvisor足够的指标生成时间;同时将采集超时从5秒调整为8秒,避免因轻微延迟导致的请求失败...cgroup文件读取失败数”( kubelet_cadvisor_cgroup_read_errors_total ),并在Grafana中创建专属仪表盘,实时跟踪指标生成效率;同时配置Alertmanager

    14600

    在Kubernetes上运行Airflow两年后的收获

    第二个问题,也是导致更多痛苦的问题,是一些任务(尤其是长时间运行的任务)由于 Pod 被驱逐而导致意外失败。...它的工作原理是获取 Airflow 数据库中运行和排队任务的数量,然后根据您的工作并发配置相应地调整工作节点的数量。...这在特别重要的 Celery 工作节点上得到了证明 —— 由于节点轮换或发布而重新启动后,有时会将任务分配给尚未获取 DAG 的新工作节点,导致立即失败。...通知、报警和监控 统一您公司的通知 Airflow 最常见的用例之一是在特定任务事件后发送自定义通知,例如处理文件、清理作业,甚至是任务失败。...后者优于前者,因为 OpenTelemetry 是一个更完整的框架,还支持日志和跟踪。然而,目前 Airflow 还不支持通过 OTEL 进行日志和跟踪(但未来会支持!)。

    1.3K10

    Spark on K8S 在有赞的实践

    改进点在于,现在小文件合并过程是同步合并的,为了更好的灵活性可以修改成为异步合并的模式。 3.2 日志收集服务 Spark 整体迁移到 K8s 之后,日志会随着 K8s Pod 的释放而被清除掉。...如果使用 K8s 的话,会因为 executor 不能访问到用户代码或者资源文件而任务失败。有两个解决方案可以处理。...Airflow 在调度的时候,是根据命令执行的返回码来判断任务执行是否成功,这样即使任务失败,但是 spark-submit 进程的返回码还是会保持为 0 , Airflow 系统会认为任务执行成功。...所以需要优化这块逻辑,添加任务分配超时机制,控制任务分配超时时间,当任务超时后,返回获取到的内存数量为 0,让 task 在当前 executor 上失败,从而在其它的 executor 节点上执行。...而不是直接抛出IOException,导致任务失败。 5.6 spark 配置文件加载顺序问题 app 任务需要打包才能运行,少量用户会将一些资源文件打包到 fat jar 里面。

    3.1K10

    Flink on Zeppelin 作业管理系统实践

    模式进行运行,由于每个长跑作业都需要建立实时监控,对server压力很大,调度任务从外部运行SQL,也经常出现卡顿,无法提交作业的情况。...后来我们改用pyflink后台作业提交,作业监控额外通过监控程序管理,但随着任务增加,单台节点无法满足任务提交需要,期间做了批、流server独立拆分,增加单节点机器配置等,但依然无法稳定。...主要问题有以下: Zeppelin Server单点故障导致已经运行流作业失败,批作业无法正常提交;最初使用yarn这种模式提交,客户端 Flink Interpreter 进程运行在 Zeppelin...remote模式提交到hadoop yarn 中已经存在的job manager中,共享管理资源; yarn模式通过解析器新建flink cluster ; 作业提交后,通过回调Zeppelin api,获取当次作业的提交信息记录到作业日志数据库中...对于同一个作业组的作业提交,如果第一次提交,会通过解析器创建flink cluster进行任务提交,而对于组内已有作业运行,即通过获取rpc 地址进行remote模式提交,类似如下图的入参。 4.

    2.4K20

    Hudi:Apache Hadoop上的增量处理框架

    然而,根据延迟需求和资源协商时间,摄取作业也可以使用Apache Oozie或Apache airflow作为计划任务运行。...在每次压缩迭代中,日志量最大的文件首先压缩,而小的日志文件最后压缩,因为重写parquet文件的成本不会分摊到文件更新的次数上。...失败恢复 当由于间歇性错误导致摄取任务失败时,Spark会重新计算RDD并进行自动解析。如果失败的数量超过Spark中的maxRetries,则摄取作业失败,下一次迭代将再次重试摄取相同的批。...在读取日志时,跳过不相关的、有时是部分写入的提交块,并在avro文件上适当地设置了seek位置。 压缩失败可能会写入部分拼parquet文件。 这是由查询层处理的,它根据提交元数据过滤文件版本。...上一代通过消除日志文件和降低延迟来简化体系结构。几个月来,这一直在为优步的数据获取和表格建模提供动力。

    1.5K10

    Apache Hudi | 统一批和近实时分析的增量处理框架

    故障恢复 首先,Spark的本身的重试机制会cover一些间歇性的异常,当然如果超过了重试次数的阈值,我们的整个作业都会失败。下一次的迭代作业会在同一批次数据上进行重试。...以下列出两个重要的区别: 摄取失败可能在日志文件中生成包含部分数据的avro块 - 这个问题通过在commit元数据中存储对应数据块的起始偏移量和日志文件版本来解决。...当读取日志文件时,偶尔发生的部分写入的数据块会被跳过,且会从正确的位置开始读取avro文件。...这些失败的compaction文件会在下一个compaction周期被回滚。 读取Hudi文件 commit时间轴元数据可以让我们在同一份HDFS数据上同时享有读取优化的视图和实时视图。...这个过程基本上与普通的查询大致相同,只是选取特定时间范围内的文件版本进行读取而不是选最新的,提交时间会最为过滤条件被谓词下推到文件扫描阶段。

    3.1K41

    大数据开发平台(Data Platform)在有赞的最佳实践

    )和监控(机器资源/日志/基于预测的监控)。...日志监控:通过将任务运行时产出的日志采集到 Kafka,然后经过 Spark Steaming 解析和分析,可以计算每个任务运行的起止时间、Owner、使用到的资源量( MySQL 读写量、 Yarn...* 未来规划:任务的运行时长不是基于过去的数据,而是通过读取的数据量、集群资源使用率、任务计算复杂程度等多个特征维度来预测运行时长。...任务调度需要解决的问题包括: 如何支持不同类型任务? 如何提供任务调度的高并发(高峰时期每秒需要处理上百个任务执行)? 如何保证相对重要的任务(数据仓库任务)优先获取资源并执行?...(空间),提供日常运维工具和管理页面,更加方便任务的集中管理 任务日志管理优化(包括快速定位出错信息/拉取和分析 Yarn 日志等)

    1.4K40

    SmartNews基于Flink加速Hive日表生产的实践

    公司业务基本上都在 AWS 上,服务器的原始日志以文件形式上传至 S3,按日分区;目前的作业用 Airflow 调度到 EMR 上运行,生成 Hive 日表,数据存储在 S3。...问题的定义  输入 新闻服务器每隔 30 秒上传一个原始日志文件,文件上传至相应日期和小时的 S3 目录,目录格式如下所示: S3://logbucket/actions/dt=2021-05-29/...当前 Airflow 下游作业是等待 insert_actions 这个 Hive 任务完成后,再开始执行的,这个没问题,因为 insert_actions 结束时,所有 action 的 partition...流式读取 S3 文件 项目的输入是不断上传的 S3 文件,并非来自 MQ (message queue)。...而 Bulk format 均需要一次性全局处理,因此无法分段上传然后合并,必须一次性全部上传。 当第二个作业感知到一个新的 json 文件上传后,加载它,转化成 RCFile,然后上传到最终的路径。

    1.1K20

    助力工业物联网,工业大数据之服务域:AirFlow的介绍【三十一】

    基于工作流来实现任务流的自动化运行 需求1:基于时间的任务运行 job1和job2是每天0点以后自动运行 需求2:基于运行依赖关系的任务运行 job3必须等待job1运行成功才能运行...:Airbnb公司研发,自主分布式、Python语言开发和交互,应用场景更加丰富 开发Python文件 # step1:导包 # step2:函数调用 提交运行 场景:整个数据平台全部基于Python开发...设计:利用Python的可移植性和通用性,快速的构建的任务流调度平台 功能:基于Python实现依赖调度、定时调度 特点 分布式任务调度:允许一个工作流的Task在多台worker上同时执行 DAG任务依赖...:以有向无环图的方式构建任务依赖关系 Task原子性:工作流上每个task都是原子可重试的,一个工作流某个环节的task失败可自动或手动进行重试 自主定制性:可以基于代码构造任何你需要调度的任务或者处理工具...加载redis配置文件,/opt/redis-4.0.9/src/redis.conf output.log为存储日志文件 2>&1中2代表错误日志,重定向为正确日志记录再output.log中,否则错误日志会在

    57110

    AIRFLow_overflow百度百科

    Airflow 是基于DAG(有向无环图)的任务管理系统,可以简单理解为是高级版的crontab,但是它解决了crontab无法解决的任务依赖问题。...与crontab相比Airflow可以方便查看任务的执行状况(执行是否成功、执行时间、执行依 赖等),可追踪任务历史执行情况,任务执行失败时可以收到邮件通知,查看错误日志。...可选项包括True和False,False表示当前执 行脚本不依赖上游执行任务是否成功; ②start_date:表示首次任务的执行日期; ③email:设定当任务出现失败时,用于接受失败报警邮件的邮箱地址...可选项包括 True和False,True表示失败时将发送邮件; ⑤retries:表示执行失败时是否重新调起任务执行,1表示会重新调起; ⑥retry_delay:表示重新调起执行任务的时间间隔;...其中 “ALL_DONE”为当上一个task执行完成,该task即 可执行,而”ALL_SUCCESS”为只当上一个task执行成功时,该task才能调起执行,执行失败时,本 task不执行任务。

    2.7K20

    大数据调度平台Airflow(六):Airflow Operators及案例

    ,并且继承了许多属性和方法。...email_on_retry(bool):当任务重试时是否发送电子邮件 email_on_failure(bool):当任务执行失败时是否发送电子邮件 retries(int):在任务失败之前应该重试的次数...dag(airflow.models.DAG):指定的dag。 execution_timeout(datetime.timedelta):执行此任务实例允许的最长时间,超过最长时间则任务失败。...“{{}}”内部是变量,其中ds是执行日期,是airflow的宏变量,params.name和params.age是自定义变量。...SSHOperator使用ssh协议与远程主机通信,需要注意的是SSHOperator调用脚本时并不会读取用户的配置文件,最好在脚本中加入以下代码以便脚本被调用时会自动读取当前用户的配置信息: #Ubunto

    8.8K55

    《云原生边缘与AI训练场景:2类高频隐蔽Bug的深度排查与架构修复》

    ,容器内却无法识别设备,导致训练任务启动即崩溃。...团队先检查业务日志,确认训练代码在启动时会先检测GPU可用性,且数据写入逻辑中包含定期fsync操作,无IO未刷盘的问题;在容器内手动执行sync命令后,数据文件状态正常,排除业务代码缺陷。...Kubernetes调度器在处理多任务并发请求时,会基于GPU Operator提供的资源状态快速决策,将GPU资源标记为“已分配”并调度Pod至目标节点,这个过程通常在几百毫秒内完成;而GPU Operator...的Device Plugin(负责容器与GPU设备绑定的组件)需要与NVIDIA驱动通信,获取设备独占锁后才能完成实际绑定,这个过程在单任务时耗时约200-300毫秒,但多任务并发时,由于Device...某工业企业基于K3s构建边缘集群,5个边缘节点部署在厂区,通过4G/5G无线接入云端控制面,运行工业设备数据采集服务,却频繁出现“容器网络间歇性断连”问题—容器无法访问云端MQTT服务器,主机网络却完全正常

    18200

    Azure Airflow 中配置错误可能会使整个集群受到攻击

    Geneva 服务中的缺陷来篡改日志数据或发送虚假日志,以避免在创建新的 Pod 或账户时引起怀疑。...初始访问技术包括创建一个有向无环图(DAG)文件,并将其上传到连接到 Airflow 集群的私有 GitHub 存储库中,或者修改现有的 DAG 文件。...“这意味着老练的攻击者可以修改易受攻击的 Airflow 环境,”安全研究人员 Ofir Balassiano 和 David Orlovsky 说。...“例如,攻击者可以创建新的 Pod 和新的service 账户。他们还可以将更改应用于集群节点本身,然后将虚假日志发送到 Geneva,而不会发出警报。...此问题在于,虽然具有 Key Vault 参与者角色的用户无法通过配置了访问策略的 Key Vault 直接访问 Key Vault 数据,但发现该角色确实具有将自身添加到 Key Vault 访问策略和访问

    36610

    前端项目实战 | H5跳转参数缓存:sessionStorage 缓存数据丢失的偶然性分析及解决方案

    实际现象:数据读取出现间歇性丢失,问题复现率低于5%,设备无规律。 影响范围:参数依赖型操作(用户鉴权、订单处理等)。...{string} key - 要存储的数据键名 * @param {any} value - 要存储的数据值(支持字符串和对象) * @returns {boolean} 操作是否成功,失败时返回...} key - 要获取的数据键名 * @returns {any|null} 获取到的数据值(自动解析JSON),失败时返回null并打印错误日志 */ get: key => {...操作成功返回true,失败打印错误并返回false。 get方法:读取数据时尝试解析JSON,解析失败则返回原始值。操作失败时返回null并打印错误。...: ${event.oldValue} → ${event.newValue}`); } }); 四、问题定位的三阶分析法 4.1 第一阶:浏览器环境检查 4.2 第二阶:代码执行时序追踪 在入口文件添加日志标记

    24210

    Airflow 实践笔记-从入门到精通一

    Airflow 2.0 API,是一种通过修饰函数,方便对图和任务进行定义的编码方式,主要差别是2.0以后前一个任务函数作为后一个任务函数的参数,通过这种方式来定义不同任务之间的依赖关系。...当数据工程师开发完python脚本后,需要以DAG模板的方式来定义任务流,然后把dag文件放到AIRFLOW_HOME下的DAG目录,就可以加载到airflow里开始运行该任务。...配置文件中的secrets backend指的是一种管理密码的方法或者对象,数据库的连接方式是存储在这个对象里,无法直接从配置文件中看到,起到安全保密的作用。...启动任务流的方式还有两种:CLI命令行方式和HTTP API的方式 点击link->graph,可以进一步看到网状的任务图,点击每一个任务,可以看到一个菜单,里面点击log,可以看到具体的执行日志。...如果某个任务失败了,可以点击图中的clear来清除状态,airflow会自动重跑该任务。 菜单点击link->tree,可以看到每个任务随着时间轴的执行状态。

    6.3K11

    《金融对账系统雪崩隐患的深度复盘与架构重生》

    但在高并发场景下,任务调度框架返回的商户ID列表偶尔会出现“格式错乱”—比如将两个连续的商户ID“10000001”和“10000002”合并为“1000000110000002”,或在商户ID末尾附加任务编号...“567”,而代码中未对获取的商户ID做任何格式校验,直接生成key发起查询,导致大量无效请求涌向缓存。...而代码中的缓存查询重试逻辑设置为“无限重试”,只要超时就立即重新发起请求,形成“无效请求→超时→重试→更多无效请求”的死循环,最终线程池中的200个核心线程全部阻塞在“缓存查询重试”上,无法处理新的对账任务...第五轮排查则锁定了数据不一致的根因:当节点因“假死”停滞时,分布式任务调度框架会将其未完成的任务重新分配给其他节点;而原节点恢复后,未检测任务状态已变更,继续执行本地队列中的任务,导致部分交易被重复对账...其三,“状态必须全局可见”—分布式任务的最大风险在于“状态孤岛”,单个节点的状态变更若无法同步到全局,就会导致任务重复执行或遗漏。通过分布式协调服务实现状态同步,是确保数据一致性的关键。

    18810
    领券