Hexo

Hexo

Untitled
Created2026-02-08
现在的skill使用流程 准备: skills文件夹 加载: 通过FileSystemSkillRepository指定这个文件夹为baseUrl -> 从这个文件夹中load skills -> 注册进SkillBox中 加载结束: 将SkillBox注册到ReActAgent中 运行时动态管理: 通过skillBox提供的API管理(CRUD)skill并加载进系统 对话前: 通过SkillHook将skill的instruction和skill (name, desc)二元组注入到system_prmopt 对话时: 通过SkillLoaderTool(skillId, path(包含SKILL.md)), load对应的skill的特定的内容 拓展后的流程 准备: skills数据源 加载: 使用数据源创建repo, 将repo注册进skillBox 可以直接将repo注册进skillBox, 交给skillBox管理 不再将需要从repo中load数据, 注册成AgentSkill再注册到SkillBox中(repo_name, repo_instan...
Untitled
Created2026-02-08
上下文工程(tool方面) 命名空间的规范性引入以此提高模型对于tool的语意的明细, 微软的参考文档 关于Tool的上下文缩减, Claude的实现文档 ToolSearchTool Programmatic Tool Calling 返回文档化, 只返回链接
Untitled
Created2026-02-08
整体架构 Livy 的整体架构是怎样的?有哪几层? 🔍 探索:画出 REST API → Server → RSCClient → RSCDriver → Spark 的层次图 Livy Server 和 Spark Driver 是什么关系? 🔍 探索:理解 Livy Server 是客户端,Spark Driver 是服务端的反转架构 RSC (Remote Spark Context) 是什么?为什么需要它? 🔍 探索:rsc/src/main/java/org/apache/livy/rsc/README.md Livy 如何与 YARN/K8s 集成? 🔍 探索:SparkYarnApp.scala,查看如何监控 YARN 应用 模块职责 core、server、rsc、repl 四个模块各自的职责是什么? 🔍 探索:查看各模块的 pom.xml 依赖关系 为什么 Interactive Session 需要 ReplDriver,而...
Untitled
Created2026-02-08
创建一个 Interactive Session 的完整流程是什么?经历了哪些步骤? 🔍 探索:InteractiveSession.create() → RSCClient 构建 → ContextLauncher 启动 Driver PingJob 是什么?为什么需要它? 🔍 探索:InteractiveSession.start() 第 537 行,理解连接验证 Session 从 Starting 到 Running 状态,中间发生了什么? 🔍 探索:跟踪 PingJob 的 onJobSucceeded 回调 如果 Spark Driver 启动失败,Session 会经历哪些状态? 🔍 探索:PingJob 的 onJobFailed 和 errorOut() 方法 代码执行流程 用户提交的代码是如何到达 Spark Driver 执行的? 🔍 探索:executeStatement() → RSCClient.submitReplCode() → RPC → ReplDriver.handle() RPC 通信是如何...
Untitled
Created2026-02-08
状态管理 为什么 InteractiveSession 需要双层状态(serverSideState + replState)? 🔍 探索:state 属性的实现,理解细粒度状态监控 状态转换有哪些保护机制?为什么需要这些保护? 🔍 探索:transition() 方法的 areSameStates 和 transitFromInactiveToActive 检查 多个线程同时触发状态转换时,如何保证一致性? 🔍 探索:synchronized 关键字的使用 SparkApp 状态和 Session 状态的映射关系是什么? 🔍 探索:stateChanged() 回调,理解事件驱动的状态同步 会话恢复 Livy Server 重启后,如何恢复已有的 Session? 🔍 探索:InteractiveSession.recover(),SessionStore 的实现 支持哪些持久化方式?它们的优缺点是什么? 🔍 探索:FileSystemStateStore、ZooKeeperStateStore、JDBCStateStore...
Untitled
Created2026-02-08
配置管理 有哪些关键的 Livy 配置项?如何调优? 🔍 探索:livy.conf.template,理解各配置项的作用 如何配置多个 Spark 版本支持? 🔍 探索:livy.spark.versions 配置 如何配置 Kerberos 认证? 🔍 探索:LivyServer.scala 中的 UserGroupInformation 如何配置资源隔离(队列、用户模拟)? 🔍 探索:AccessManager、proxyUser 参数 监控告警 Livy 暴露了哪些监控指标?如何采集? 🔍 探索:Metrics.scala,Prometheus 集成 如何监控 Session 的健康状态? 🔍 探索:/sessions API,状态监控 如何收集 Spark Driver 的日志? 🔍 探索:logLines() 方法,SparkApp.log() 如何知道 Session 启动时间过长? 🔍 探索:MetricsKey.INTERACTIVE_SESSION_START_TIME 高可用...
Untitled
Created2026-02-08
RPC 机制 RPC 的消息格式是什么?如何序列化和反序列化? 🔍 探索:KryoMessageCodec.java,消息头和消息体 RPC 如何处理超时和重试? 🔍 探索:Rpc.call() 方法,Future 机制 SASL 握手的流程是什么? 🔍 探索:SaslHandler.java,客户端和服务端的认证 如何保证 RPC 连接的安全性? 🔍 探索:secret 的生成和验证 REPL 实现 Scala REPL 是如何集成的? 🔍 探索:ScalaInterpreter.scala,IMain 的使用 PySpark 是如何执行的?与 Scala 有何不同? 🔍 探索:PythonInterpreter.scala,py4j 的使用 如何实现代码自动补全? 🔍 探索:completion() 方法,REPL 的 complete 接口 如何取消正在执行的 Statement? 🔍 探索:cancelStatement(),线程中断机制 SparkApp 监控 YARN 应用状态是如何监控的? ...
Untitled
Created2026-02-08
常见问题 Session 一直卡在 Starting 状态,如何排查? 🔍 探索:检查 Driver 日志、YARN 队列资源、网络连通性 PingJob 失败的常见原因有哪些? 🔍 探索:RPC 连接失败、Driver 启动超时、资源不足 Session 突然变成 Dead 状态,可能的原因? 🔍 探索:Driver OOM、YARN 杀掉应用、网络断开 代码执行超时,如何定位问题? 🔍 探索:Driver 日志、Spark UI、任务堆栈 性能问题 大量 Session 创建导致 Livy Server 压力大,如何优化? 🔍 探索:Session 池化、限流、资源预分配 RPC 通信成为瓶颈,如何优化? 🔍 探索:增加 rpc.max.threads、优化序列化 恢复大量 Session 时 Server 启动慢,如何解决? 🔍 探索:异步恢复、批量加载 数据问题 Session 恢复后状态不一致,如何处理? 🔍 探索:乐观锁机制、元数据清理 ZooKeeper 中的 Session 数据损坏,如何...
Untitled
Created2026-02-08
[Spark Source Code 3] How your spark job trigger a job and how it split job to stages and schedule the stage.
Created2025-11-24
Spark启动一个job的过程前置条件在 AM 执行完 resumeDriver() 后,Executor 已经分配并注册完成,用户代码继续运行。当代码执行到 action 操作时,开始创建和提交 job。 详细步骤 代码执行到action操作, 这个时候已经有了有transformation操作形成的RDD DAG 窄依赖: 父RDD的每个分区只被一个子RDD分区使用, 如(map, filter) 宽依赖: 父RDD的每个分区都有可能被多个子RDD分区使用, 如(reduceByKey) 注意对于宽窄依赖来说, 依赖的粒度是分区级别, 同时这个属性是某个transfomation的固有属性, 这是这个算子的计算方式决定的, 如果他产生一条数据需要父RDD中不止一条数据, 涉及到数据的聚合,这个时候这个操作就会是宽依赖的操作 所有的action操作最后都会调用到SparkContext.runJob() SparkContext提交Job到DAGScheduler sc.runJob进行参数清理和验证 调用DAGScheduler.runJob() -> submit...
123
avatar
John Doe
Articles
26
Tags
16
Categories
0
Follow Me
Announcement
This is my Blog
Recent Posts
Untitled2026-02-08
大数据结构总览2026-02-08
Untitled2026-02-08
如何学习一门语言(以scala为例)2026-02-08
Scala基础语法2026-02-08
Tags
Spark language scala BigData Operating-System xv6-lab Git xv6 Livy Overview Hive Workflow syscall source_code Best-Practice how-to-learn
Archives
  • February 2026 19
  • November 2025 4
  • October 2025 3
Website Info
Article Count :
26
Unique Visitors :
Page Views :
Last Update :
© 2025 - 2026 By John DoeFramework Hexo 7.3.0|Theme Butterfly 5.5.0