当前位置: 首页 > article >正文

Doris集群启停脚本设计与实践指南

1. Doris集群启停脚本设计基础第一次接触Doris集群运维时我被复杂的组件依赖关系搞得手忙脚乱。记得有次半夜处理故障因为没按正确顺序启停服务导致元数据损坏花了三小时恢复。这个惨痛教训让我意识到规范的启停脚本不是可选项而是生产环境的必需品。Doris集群包含三类核心组件它们的启动顺序就像盖房子FEFrontend相当于建筑图纸必须第一个就位。它管理元数据、协调查询如果FE没启动其他组件连门牌号都找不到。BEBackend相当于施工队图纸到位后才能开工。负责实际的数据存储和计算启动后会主动向FE报到。Broker像材料运输车等主体结构完工后才需要进场。专门处理HDFS/S3等外部存储的读写。# 正确启动顺序示例单节点 ./bin/start_fe.sh --daemon # 先启动FE sleep 30 # 等待FE初始化完成 ./bin/start_be.sh --daemon # 再启动BE ./bin/start_broker.sh --daemon # 最后启动Broker关闭时则要逆向操作就像拆房子要先清空家具./bin/stop_broker.sh # 先停Broker ./bin/stop_be.sh # 再停BE ./bin/stop_fe.sh # 最后停FE我曾遇到过BE未完全停止就强制杀进程导致数据文件损坏的情况。后来在脚本中加入状态检查逻辑问题再没出现过。这印证了一个真理集群管理没有侥幸严谨的流程设计才是王道。2. 生产级启停脚本开发实战去年为某电商设计集群脚本时他们提出个需求要在3分钟内完成20个节点的滚动重启。这促使我开发出现在这套经过实战检验的脚本框架核心思路是**状态感知并行控制**。2.1 集群角色规划示例先看一个典型的三节点部署方案节点FE角色BEBrokernode1Leader✓✓node2Follower✓✓node3Observer✓✓对应的脚本变量配置#!/bin/bash # 集群节点列表 SERVERSnode1 node2 node3 # FE Leader节点必须配置正确 MASTERnode1 # Doris安装路径 DORIS_HOME/opt/doris-2.0.42.2 启动脚本关键逻辑分解FE启动函数是精髓所在需要区分Leader和Follower/Observerstart_fe() { for SERVER in $SERVERS; do echo 启动 $SERVER 上的FE... if [ $SERVER $MASTER ]; then # Leader节点独立启动 ssh $SERVER $DORIS_HOME/bin/start_fe.sh --daemon else # 其他节点通过--helper指定Leader地址 ssh $SERVER $DORIS_HOME/bin/start_fe.sh \ --helper $MASTER:9010 --daemon fi # 等待10秒确保进程就绪 sleep 10 ssh $SERVER jps -m | grep PaloFe || echo 警告FE进程未启动 done }BE启动相对简单但建议增加进程检查start_be() { for SERVER in $SERVERS; do echo 启动 $SERVER 上的BE... ssh $SERVER $DORIS_HOME/be/bin/start_be.sh --daemon # 检查BE进程是否注册成功 ssh $MASTER mysql -uroot -P9030 -h127.0.0.1 -e \ SHOW BACKENDS\G | grep $SERVER done }2.3 关闭脚本的注意事项关闭Broker时最容易忽略连接检查stop_broker() { for SERVER in $SERVERS; do echo 关闭 $SERVER 上的Broker... # 先检查是否有活跃连接 conn_count$(ssh $MASTER mysql -uroot -P9030 -h127.0.0.1 -Nse \ SHOW PROC /brokers\G | grep -A 1 $SERVER | grep Active) [ $conn_count -gt 0 ] echo 存在活跃连接请先处理 exit 1 ssh $SERVER $DORIS_HOME/apache_hdfs_broker/bin/stop_broker.sh done }完整脚本应该包含超时控制和重试机制。比如BE停止时如果30秒内未退出就强制killstop_be() { for SERVER in $SERVERS; do echo 关闭 $SERVER 上的BE... ssh $SERVER $DORIS_HOME/be/bin/stop_be.sh # 等待优雅退出 timeout30 while [ $timeout -gt 0 ]; do if ! ssh $SERVER pgrep -f palo_be; then break fi sleep 1 ((timeout--)) done # 强制终止 [ $timeout -eq 0 ] \ ssh $SERVER pkill -9 -f palo_be \ echo 已强制终止BE进程 done }3. 高级功能与避坑指南3.1 状态检查增强版基础的jps检查有时会漏报我改良后的检查方案包含三层验证进程是否存在端口是否监听集群状态是否健康check_fe_status() { local fe_ip$1 local fe_query_port$2 # 第一层进程检查 if ! ssh $fe_ip jps -m | grep -q PaloFe; then return 1 fi # 第二层端口检查 if ! ssh $fe_ip netstat -tlnp | grep -q :$fe_query_port; then return 2 fi # 第三层元数据健康检查 local status$(ssh $fe_ip \ mysql -uroot -P$fe_query_port -h127.0.0.1 -Nse \ SHOW FRONTENDS\G | grep Alive | awk {print \$2}) [ $status true ] return 0 || return 3 }3.2 版本兼容性处理升级Doris版本时遇到过旧脚本不兼容的问题。现在我的脚本会自动识别版本并调整参数# 获取Doris版本 DORIS_VERSION$(grep version $DORIS_HOME/fe/fe.conf | cut -d -f2) # 版本特定逻辑 case $DORIS_VERSION in 1.*) BE_START_CMD$DORIS_HOME/be/bin/start_be.sh --daemon ;; 2.*) BE_START_CMD$DORIS_HOME/be/bin/start_be.sh --daemon --with-broker ;; *) echo 不支持的版本: $DORIS_VERSION exit 1 ;; esac3.3 日志收集与告警生产环境必须要有完善的监控这个日志收集函数帮我定位过无数问题collect_logs() { local log_dir/tmp/doris_logs_$(date %Y%m%d_%H%M%S) mkdir -p $log_dir for SERVER in $SERVERS; do echo 收集 $SERVER 日志... ssh $SERVER tar czf - \ $DORIS_HOME/fe/log/* \ $DORIS_HOME/be/log/* \ 2/dev/null $log_dir/${SERVER}_logs.tar.gz # 提取关键错误信息 ssh $SERVER grep -E ERROR|WARN|FATAL \ $DORIS_HOME/fe/log/fe.log \ $DORIS_HOME/be/log/be.INFO $log_dir/${SERVER}_errors.log done # 发送邮件告警需配置mailx [ -s $log_dir/*_errors.log ] \ mailx -s Doris集群异常告警 adminexample.com \ $log_dir/error_summary.log }4. 典型问题排查手册4.1 FE启动失败常见原因案例某次扩容后FE无法启动日志显示元数据损坏根因磁盘写满导致元数据文件不完整解决方案清理磁盘空间使用--metadata_failure_recoverytrue参数启动从健康节点拷贝元数据备份预防措施# 在crontab中添加磁盘检查 */5 * * * * df -h | awk $5 90 {print 警报磁盘使用超过90%}4.2 BE注册失败处理流程当BE无法注册到FE时按这个顺序检查网络连通性ping/telnetFE的9030端口是否开放BE的heartbeat_service_port配置是否正确FE日志中是否有拒绝注册的记录我常用的诊断命令# 检查BE与FE网络 telnet $FE_IP 9030 # 查看BE配置 grep heartbeat_service_port $DORIS_HOME/be/conf/be.conf # 实时监控FE日志 tail -f $DORIS_HOME/fe/log/fe.log | grep register4.3 Broker连接外部存储超时典型报错failed to access hdfs://namenode:8020排查步骤手动执行hdfs命令测试连通性检查core-site.xml配置是否正确验证Kerberos认证如果启用诊断脚本片段check_hdfs_connection() { local hdfs_path$1 ssh $SERVER $DORIS_HOME/apache_hdfs_broker/bin/hdfs dfs \ -ls $hdfs_path /dev/null 21 if [ $? -ne 0 ]; then echo HDFS连接测试失败 echo 请检查 echo 1. 网络防火墙设置 echo 2. $DORIS_HOME/apache_hdfs_broker/conf/core-site.xml echo 3. Kerberos keytab文件 return 1 fi return 0 }5. 性能优化实践5.1 并行启动优化默认串行启动在大型集群中效率低下这个改进方案将启动时间从15分钟缩短到2分钟parallel_start() { local workers5 # 并发度控制 # 启动所有FE for SERVER in $SERVERS; do ((ii%workers)); ((i0)) wait start_single_fe $SERVER done wait # 启动所有BE类似实现 ... } start_single_fe() { local server$1 # 具体启动逻辑 ssh $server $DORIS_HOME/fe/bin/start_fe.sh --daemon }5.2 资源预热技巧冷启动后立即执行查询会导致性能下降我的解决方案是在脚本最后添加预热逻辑warm_up() { echo 执行集群预热... ssh $MASTER mysql -uroot -P9030 -h127.0.0.1 -e SELECT COUNT(*) FROM system_metrics.schema_meta; SELECT COUNT(*) FROM information_schema.tables; SELECT * FROM backends() ORDER BY last_heartbeat DESC; }5.3 自适应等待策略固定sleep时间在不同硬件环境下表现不稳定改用动态检测更可靠wait_fe_ready() { local fe_ip$1 local max_retry30 for ((i1; i$max_retry; i)); do if ssh $fe_ip curl -s http://localhost:8030/api/bootstrap | \ grep -q OK; then echo FE已就绪 return 0 fi sleep 2 done echo 等待FE启动超时 return 1 }在金融级生产环境运行三年多来这套脚本体系经历了数十次版本迭代。最关键的体会是好的运维工具不仅要正确执行操作更要能预防问题、快速定位故障。建议每次遇到异常情况后都把解决方案沉淀到脚本中久而久之就会形成强大的自动化运维体系。

相关文章:

Doris集群启停脚本设计与实践指南

1. Doris集群启停脚本设计基础 第一次接触Doris集群运维时,我被复杂的组件依赖关系搞得手忙脚乱。记得有次半夜处理故障,因为没按正确顺序启停服务,导致元数据损坏花了三小时恢复。这个惨痛教训让我意识到:规范的启停脚本不是可选…...

用TensorFlow和BERT实战:从海量安全报告中自动提取攻击技战术(TTPs)

基于TensorFlow与BERT的自动化TTPs提取系统实战指南 当安全团队每天需要处理数百份威胁报告时,人工提取攻击技战术(TTPs)的效率瓶颈就会暴露无遗。本文将展示如何构建一个能自动解析安全报告、识别关键攻击模式的智能系统,这套方案…...

无需前端!Nanbeige 4.1-3B极简WebUI,纯Python打造高级聊天界面

无需前端!Nanbeige 4.1-3B极简WebUI,纯Python打造高级聊天界面 1. 项目概览:当Streamlit遇上二次元设计 如果你正在寻找一个既美观又易部署的大模型交互界面,这个Nanbeige 4.1-3B专属WebUI绝对值得尝试。与传统技术方案不同&…...

Autoware.Auto深度解析:基于ROS 2的下一代自动驾驶框架

1. Autoware.Auto是什么?为什么它值得关注? 如果你正在研究自动驾驶技术,一定听说过Autoware这个名字。作为全球首个"一体化"开源自动驾驶软件,Autoware.AI已经在这个领域深耕多年。但今天我要聊的是它的升级版本——Au…...

别再为显存发愁了!手把手教你用VLLM 0.11.0在消费级显卡上跑通Qwen3-VL-8B图生文

消费级显卡实战:用VLLM 0.11.0高效部署Qwen3-VL-8B图生文模型 当24GB显存的RTX 3090遇到8B参数的多模态模型,大多数人第一反应是"这根本跑不动"。但经过三轮参数调优和三次显存爆炸后,我发现只要掌握KV缓存的精妙控制,单…...

淘宝/天猫商家必看:不懂技术也能搞懂的奇门对接原理与ERP/WMS联调避坑指南

淘宝/天猫商家必看:不懂技术也能搞懂的奇门对接原理与ERP/WMS联调避坑指南 作为淘宝/天猫平台的商家,你是否遇到过这样的困扰:代运营的店铺订单信息无法直接获取,导致发货效率低下?或者更换ERP服务商时,需要…...

Ultimate ASI Loader终极指南:如何为任何Windows游戏注入无限创意

Ultimate ASI Loader终极指南:如何为任何Windows游戏注入无限创意 【免费下载链接】Ultimate-ASI-Loader The Ultimate ASI Loader is a proxy DLL that loads custom .asi libraries into any game process. 项目地址: https://gitcode.com/gh_mirrors/ul/Ultima…...

保姆级教程:用Gem5仿真NoC(片上网络)的Mesh_XY路由与流量控制

从零构建Gem5仿真环境:Mesh_XY路由与信用流量控制的NoC实战指南 为什么需要深入理解NoC仿真? 在现代多核处理器设计中,片上网络(NoC)已成为解决核间通信瓶颈的关键架构。与传统的总线结构相比,NoC通过分布式路由和分组交换提供了更…...

Win11 WSL2 + Ubuntu 24.04 下,如何让nRF开发板(DK)被VS Code和NCS v3.0.0正确识别?

Win11 WSL2环境下nRF开发板与NCS v3.0.0深度集成指南 当嵌入式开发遇上WSL2的Linux高效编译环境,硬件连接往往成为最后一道障碍。本文将彻底解决nRF开发板在Windows主机与WSL2 Ubuntu子系统间的识别难题,打造无缝硬件调试体验。 1. 环境准备与核心工具链…...

TrafficMonitor插件终极指南:3分钟打造你的个性化系统监控中心

TrafficMonitor插件终极指南:3分钟打造你的个性化系统监控中心 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 想要在Windows任务栏实时监控系统状态却找不到合适的工…...

CogVideoX-2b行业落地:教育机构动态课件制作新方式

CogVideoX-2b行业落地:教育机构动态课件制作新方式 基于智谱AI CogVideoX-2b模型构建的本地化视频生成工具,专为AutoDL环境优化,让教育机构能够快速制作高质量动态课件 1. 教育课件制作的痛点与解决方案 传统教育课件制作面临诸多挑战&#…...

隐私安全首选:DeepSeek-R1本地推理引擎快速上手指南

隐私安全首选:DeepSeek-R1本地推理引擎快速上手指南 1. 为什么选择本地推理引擎 在当今数据安全日益重要的时代,越来越多的用户开始关注AI应用的隐私保护问题。传统的云端AI服务虽然功能强大,但存在数据外泄的风险,尤其对于处理…...

Win11Debloat:免费Windows系统优化终极指南,一键提升51%运行速度

Win11Debloat:免费Windows系统优化终极指南,一键提升51%运行速度 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other change…...

终极OpenCore安装指南:在PC上打造专业级Hackintosh系统

终极OpenCore安装指南:在PC上打造专业级Hackintosh系统 【免费下载链接】OpenCore-Install-Guide Repo for the OpenCore Install Guide 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Install-Guide OpenCore是一个现代化的引导加载器,…...

LeetCode 152. 乘积最大子数组:从双状态DP到空间优化【C++/Java精讲】

1. 问题引入:为什么乘积最大子数组这么难? 第一次看到LeetCode 152题时,我心想:"这不就是最大子数组和的变种吗?"结果被负数狠狠教育了。还记得当时用最大子数组和的思路写代码,遇到[2,-3,-2,4]…...

ConvNeXt 系列改进:添加门控通道变换(GCT),轻量化涨点(仅增加 0.1M 参数)

ConvNeXt 自从由 Meta AI(原 Facebook AI Research)提出以来,已经彻底改变了我们对纯卷积神经网络的认知。根据 ConvNeXt 官方文档,ConvNeXts 完全由标准 ConvNet 模块构建而成,在准确性和可扩展性方面与 Transformers 竞争,实现了 87.8% 的 ImageNet top-1 准确性,并在…...

企业级报表工具润乾报表的安全审计:从dataSphereServlet接口看文件上传风险

企业级报表工具安全审计实战:从接口风险到供应链防护 报表系统作为企业数据流转的核心枢纽,其安全性直接影响业务数据的完整性与机密性。某次内部安全评估中,我们发现部署在财务系统的报表组件存在异常文件写入行为,追踪发现是源于…...

5分钟终极指南:TegraRcmGUI让你轻松玩转Switch注入

5分钟终极指南:TegraRcmGUI让你轻松玩转Switch注入 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI 还在为Nintendo Switch的注入操作感到困惑吗&…...

从特斯拉AEB误触发事件看SOTIF标准:如何避免自动驾驶系统‘过度反应‘?

从特斯拉AEB误触发事件看SOTIF标准:如何避免自动驾驶系统"过度反应"? 去年某高速公路上,一辆开启Autopilot功能的特斯拉Model 3突然急刹,导致后车追尾。事后调查发现,系统将倾斜的路牌误判为静止车辆——这不…...

SDMatte与智能体(Agent)结合:构建自主化的图片内容审核流水线

SDMatte与智能体(Agent)结合:构建自主化的图片内容审核流水线 1. 引言:当AI遇上内容审核 电商平台每天新增数百万张用户上传的商品图片,社交媒体每小时产生上亿条UGC内容。传统人工审核团队面对这样的数据洪流&#…...

Lychee-Rerank效果展示:教育题库场景中题目与知识点匹配的精准打分

Lychee-Rerank效果展示:教育题库场景中题目与知识点匹配的精准打分 1. 项目简介 Lychee-Rerank是一个基于Qwen2.5-1.5B模型的本地检索相关性评分工具,专门为查询与文档匹配度打分场景设计。这个工具完美复现了Lychee官方推理逻辑,通过纯本地…...

CLIP模型调优新思路:用CoCoOp实现动态提示学习(附代码实战)

CLIP模型调优新思路:用CoCoOp实现动态提示学习(附代码实战) 在计算机视觉与自然语言处理的交叉领域,视觉语言模型正掀起一场革命。CLIP作为这一领域的里程碑式模型,通过对比学习将图像和文本映射到同一语义空间&#x…...

3步掌握智能音频分割:Audio Slicer高效处理语音与播客

3步掌握智能音频分割:Audio Slicer高效处理语音与播客 【免费下载链接】audio-slicer A simple GUI application that slices audio with silence detection 项目地址: https://gitcode.com/gh_mirrors/aud/audio-slicer 在音频内容创作和数据预处理领域&…...

树莓派4推出3GB内存版,我却不再推荐它了

2026年4月1日,树莓派官方发布了一款新品——树莓派4 3GB内存版,定价83.75美元。这条消息刚出来时,我还以为是愚人节玩笑,毕竟日期太巧了。结果不是玩笑,而是真实产品,而且伴随而来的是又一轮内存驱动的涨价…...

抖音下载器终极指南:解锁无水印内容的高效获取之道

抖音下载器终极指南:解锁无水印内容的高效获取之道 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support.…...

BLIP 实战手册:从零到一完成 Image-Text Captioning 任务微调

1. 认识BLIP与Image-Text Captioning 第一次接触BLIP模型时,我被它处理图像和文本的能力惊艳到了。想象一下,你给模型一张猫咪晒太阳的照片,它能自动生成"一只橘猫在窗台上慵懒地晒太阳"这样的描述——这就是Image-Text Captioning…...

国产芯片如何用JLINK+JFlash烧录?极海APM32/英迪芯IND83205案例详解

国产芯片JLINK烧录实战:极海APM32与英迪芯IND83205全流程解析 当国产MCU逐渐成为工程师的新选择,如何高效完成程序烧录成为开发者面临的首要问题。不同于国际大厂芯片的标准支持,国产芯片往往需要更灵活的工具链适配。本文将深入探讨如何利用…...

一键构建25000+ASMR音频库:asmr-downloader高效下载与管理指南

一键构建25000ASMR音频库:asmr-downloader高效下载与管理指南 【免费下载链接】asmr-downloader A tool for download asmr media from asmr.one(Thanks for the asmr.one) 项目地址: https://gitcode.com/gh_mirrors/as/asmr-downloader 在数字化的放松体验…...

书匠策AI:毕业论文写作的“智能魔法棒”,开启学术新纪元!

在学术的浩瀚宇宙中,毕业论文如同璀璨星辰,既照亮了我们求知的道路,也考验着我们的智慧与毅力。然而,撰写一篇高质量的毕业论文并非易事,它需要我们跨越选题迷雾、穿越文献丛林、构建逻辑框架、雕琢内容细节&#xff0…...

零基础极速上手:用AI建站工具10分钟生成你的第一个网站

痛点与目标看着别人轻松拥有自己的品牌官网,你是不是也心动了,却因为不懂代码、不会设计、预算有限而迟迟没动手?别担心,搭建专业网站的门槛已经被新一代的AI生成网站工具彻底打破了。即使你完全不懂技术,也能在10分钟…...