| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> doris计算分析 -> 正文阅读 |
|
[Java知识库]doris计算分析 |
exec_plan_fragment fe: 1.fe-core/src/main/java/org/apache/doris/qe/Coordinator.java public void exec() throws Exception { ?service FrontendService { ? ? ? ? ? ?// be在执行plan_fragement_exexutor.cpp执行计划时候,上报执行状态 ? ? ? ? ? ?// be: 1.exec_plan_fragment rpc接口,_exec_env->fragment_mgr()->exec_plan_fragment( backend_service.cpp finish_task fe: 将任务从AgentTaskQueue中移除 文件名master/MasterImpl.java public TMasterResult finishTask(TFinishTaskRequest request) { finishCreateReplica AgentTaskQueue.removeTask(? ? 将任务从?AgentTaskQueue移除 be:完成任务发送finishTask rpc请求 文件名be/src/agent/task_worker_pool.cpp? void TaskWorkerPool::_finish_task(const TFinishTaskRequest& finish_task_request) {? ? ? submit_tasks service BackendService { AgentService.TAgentResult submit_tasks(1:list<AgentService.TAgentTaskRequest> tasks); be:? 将task放入threadpool中出来 be/src/agent/agent_server.cpp? task_worker_pool.cpp? ? ? void TaskWorkerPool::submit_task(const TAgentTaskRequest& task) {? ? if (_register_task_info(task_type, signature)) { 添加当前be正在处理的任务 _finish_task(finish_task_request); 发送finishTask rpc给fe fe: report be:每隔interval时间上报be当前正在处理的任务 be/src/agent/agent_server.cpp? ?task_worker_pool.cpp void TaskWorkerPool::_report_task_worker_thread_callback() {? ? _handle_report(request, ReportType::TASK); ? ? ? ? } while (!_stop_background_threads_latch.wait_for( fe: rpc 接口:src/main/java/org/apache/doris/master/MasterImpl.java:? ?reportHandler.handleReport(request); ReportHandler.java: ? ?public TMasterResult handleReport(TReportRequest request) throws TException { ?ReportTask reportTask = new ReportTask(beId, tasks, disks, tablets, reportVersion); ? ? ? ? ? ? ?增加任务 取出任务: ? ?@Override 执行任务 protected void exec() { List<AgentTask> diffTasks = AgentTaskQueue.getDiffTasks(backendId, runningTasks); diffTask是fe中存在的任务,而be节点中不存在的任务 ?if (task.shouldResend(taskReportTime)) { // 重做任务 report: runtime/fragment_mgr.cpp 上报执行心跳 void FragmentExecState::coordinator_callback(const Status& status, RuntimeProfile* profile, coord->reportExecStatus(res, params); ???????初始化FragmentExecState对象会设置callback FragmentExecState::FragmentExecState(const TUniqueId& query_id, plan_fragment_executor执行的时候会上报??????? void PlanFragmentExecutor::report_profile() { 上报exec正在执行心跳 send_report(false); |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 4:41:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |