-
AI平台
背景 公司内部有大量的平台,日常用户在使用平台时会有各种各样的问题,目前用户需要建Oncall来处理这些问题,平台开发人员每周需要处理30个左右的问题,可以用GPT对用户经常提问的专业领域知识,给出较好的答案,降低平台 Oncall 的成本 平台目前对用户经常提的问题也整理汇总了FAQ文档,但是用户并不会主动去查阅文档,在遇到问题时还给平台提Oncall 随着大型语言模型(LLM)不断涌现的各种能力,AI 应用的场景变得更加广阔。然而,对于大多数开发者而言,基于 GPT 等大型语言模...…
-
数据开发平台
背景 数仓团队通过git来管理调度任务脚本,通过DataIn系统实现调度任务脚本的开发及维护。由于两套系统各自维护了一套调度脚本,难以保证完全一致,需要一套平台化的工具来辅助调度任务的开发并管理代码 缺少生产和开发环境的隔离,验证脚本通常是在本地修改SQL后再复制到zue或者beeline运行,测试过程中容易污染线上数据,测试代码误发布到线上,导致产生数据质量问题 通过引入开发平台,希望能够将调度任务脚本的开发及审批流程固化下来,提高开发效率,减少团队协作成本和平台使用成本目标 使...…
-
Atlas血缘优化
优化血缘上报链路之前上报血缘逻辑如下1、先上报所有的实体,Hive,Kafka,HBase, ClickHouse, Doris, HDFS, ES, Chart, DataSet, Report, ReportConfig2、调用在线服务的接口,获取这些实体的上下游关系,比如任务的依赖,产出表,然后在各个实体间连线(构建边)3、在边上增加TTL属性,配置定时任务,每隔三天定时全量扫描一次边和实体,找到TTL过期的边进行删除这种方式会有以下几个问题:1、全量更新会大量调用线上接口,影响服务...…
-
K8S节点NodeNotReady问题排查
现象:调度服务用的k8s node节点经常会出现NodeNotReady,会导致该节点pod被kill,然后重新拉起来跑一次,影响任务正常运行,而且基本上都是每天 00:00 - 01:00 这个时间段看这几天机器在这个时间段的监控cpu:磁盘:怀疑是任务引用的公共类库太大,导致磁盘io高统计下任务引用的公共类库大小,查这几台机器在那个时间段跑的任务是以下实例worker01: 共180个53848863,53876058,53878271,53881543,53879733,538596...…
-
HiveSQL注释问题排查
现象:--CREATE EXTERNAL TABLE ads_meta_dev.ads_meta_flow_aa_index_pdset hive.merge.tezfiles = true;这条SQL用beeline查询没问题beeline -u 'jdbc:hive2://hive-adhoc:10000/default?mapreduce.job.queuename=tc_infra_tsn_dev;auth=noSasl' -n tc_warehouse -p hive_PY8fJ...…
-
使用连接池导致metastore连接被打满
现象:GenericObjetPool 配置的5个连接,为什么会创建这么多连接?看日志在不断的在init和close连接先看下连接池配置参数maxActive 最大活跃连接数 maxIdle 链接池中最大空闲的连接数 minIdle 连接池中最少空闲的连接数 maxWait 当连接池资源耗尽时,调用者最大阻塞的时间 ti...…
-
HBase调优
hbase.regionserver.handler.count默认值:10说明:RegionServer的请求处理IO线程数。调优:较少的IO线程,适用于处理单次请求内存消耗较高的Big PUT场景(大容量单次PUT或设置了较大cache的scan,均属于Big PUT)或ReigonServer的内存比较紧张的场景。较多的IO线程,适用于单次请求内存消耗低,TPS要求非常高的场景。如果server的region数量很少,大量的请求都落在一个region上,因快速充满memstore触发...…
-
HBase读写流程
WAL机制WAL(Write-Ahead Logging),基本原理是在数据写入之前首先顺序写入日志,然后再写入缓存,等到缓存写满之后统一落盘。之所以能够提升写性能,是因为WAL将一次随机写转化为了一次顺序写加一次内存写。提升写性能的同时,WAL可以保证数据的可靠性,即在任何情况下数据不丢失。假如一次写入完成之后发生了宕机,即使所有缓存中的数据丢失,也可以通过恢复日志还原出丢失的数据。WAL(Write-Ahead-Log)预写日志是HBase的RegionServer在处理数据插入和删除...…
-
Kafka-零拷贝
传统IO流程比如:读取文件,再用socket发送出去,传统方式实现是先读取、再发送,实际经过1~4四次copy。 1、操作系统将数据从磁盘文件中读取到内核空间的页面缓存; 2、应用程序将数据从内核空间读入用户空间缓冲区; 3、应用程序将读到数据写回内核空间并放入socket缓冲区; 4、操作系统将数据从socket缓冲区复制到网卡接口,此时数据才能通过网络发送。 网络数据持久化到磁盘 (Producer 到 Broker)传统方式实现:...…
-
Kafka-message格式
Kafka根据topic(主题)对消息进行分类,发布到Kafka集群的每条消息都需要指定一个topic,每个topic将被分为多个partition(分区)。每个partition在存储层面是追加log(日志)文件,任何发布到此partition的消息都会被追加到log文件的尾部每一条消息被发送到Kafka中,会根据一定的规则选择被存储到哪一个partition中。如果规则设置的合理,所有的消息可以均匀分布到不同的partition里,这样就实现了水平扩展。如上图,每个partition由...…