【技术解析 | 实践】Havenask问题排查

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
智能开放搜索 OpenSearch向量检索版,4核32GB 1个月
OpenSearch LLM智能问答版免费试用套餐,存储1GB首月+计算资源100CU
简介: 本次分享内容为Havenask的问题排查,由下面4个部分组成(Hape运维脚本问题、集群相关问题、表相关问题、数据写入与查询问题),希望可以帮助大家更好了解和使用Havenask。

一、架构模式

在介绍具体问题之前,先回顾前面的知识。Havenask主要有两种架构模式,即读写分离模式和读写统一模式。读写分离与读写统一相比,主要在于多了独立的索引。

image.png image.png


二、Hape运维脚本问题

构建服务叫build serviceHavenask主要由下面几个部分组成:

  • Hape运行脚本
  • 在线系统
  • 索引构建系统Build Service
  • Swift消息中间件
  • 还有其他依赖的一些基础的组件,比如zkhdfs等。


Havenask的所有操作都是通过Hape脚本来实现的,它在脚本执行过程中可能会出现命令执行失败的情况。在解决这类问题时,我们首先通过Hape脚本提供的validate的命令验证配置是否,如果正确,再在执行的命令后面加-v的参数(hape start havenask –v),打印命令执行过程中的详细的信息。另外,Hape脚本是使用Python编写的,我们可以直接修改这个脚本,进行pdb的跟踪。


三、集群相关问题

集群相关的问题较为复杂,它主要包括在线集群的问题、BS集群的问题、Swift集群的问题和一些依赖的基础组件的问题。

  • 在线集群的问题主要表现为在线集群节点启动异常、查询异常(主要包括查询耗时变大或查询报错)、表加载异常等。
  • BS集群的问题主要包括BS结集群节点启动异常、数据处理延迟、索引构建异常等。
  • Swift集群的问题主要包括Swift进群节点启动异常、Swift数据处理延迟等。
  • 基础组件的问题主要包括ZK的问题和hdfs的问题,ZK的问题主要包括上面各个集群的节点启动异常,Hdfs的问题可能会导致索引数据、实时数据的读写异常等。


在排查这些问题时,我们首先要确定出现问题的部分,找到对齐的部分后,主要通过排查对应的日志确定具体问题的原因。如在线集群出现问题后,可查看在线Master的日志,在在Master日志中查看是否有异常的节点。另外,如果已经确定了异常节点,就可以查看对应异常节点上的日志。

 

三、表相关问题

表相关的问题主要包括表创建失败,或是表创建成功但未生效,或是表全量失败,或时表索引构建过慢等方面。

  • 表创建失败,是指在通过HAPE脚本创建表时报错,我们就可以直接在Hape执行命令过程中加一个-v参数,排查具体报错的原因。
  • 表创建成功但未生效,我们可以到对应的在线集群的Master节点中查看对应的日志。
  • 表全量失败和表索引构建过慢主要是由索引构建服务异常(如配置不合理等)导致的,我们主要排查build Service日志数据写入的问题,主要包括数据写入后一直未生效,无法在线查询,或是查询得到的结果与写入的原数据不一致。

 

四、数据写入与查询问题

  • 排查这类问题,首先要确保写入的数据无误,其格式是Havenask支持的正确格式。其次,要确定表是全量表或是直写表,因为全量表和直写表对应的整体数据生效链路不同。
  • 若是全量表,在数据写入时应先将数据写入Swift,然后处理BS process节点,重新发送到一个Swift中转,在线的search节点直接从Swift上面去获取处理后的数据,然后直接在内存中构建。若是直写表,数据直接发到search,直接构建成索引,然后search把数据写入Swift,继而其他的数据节点同步这个数据,构建成索引。
  • 总之,全量表和直写表的数据生效链路不同。在确定属于何种表之后,根据首次推送到的节点开始逐步排查。对于一个全量表,数据推送后一直未生效,可以排查是否所有消息中间件都有数据延迟,是否数据处理节点有延迟,是否由于设置节点内存已满导致索引构建失败。这样,我们基本可以确定数据未生效的原因。
  • 查询耗时过大或是查询报错主要是由于在线集群异常或某些配置不合理或扫描的数据节点数据量过多导致的。如查询耗时过大,可以首先确定query,即是否是由于扫描数据量大导致的,如果扫描数据合理,则要检查在线集群的资源是否有瓶颈,这里的资源主要是指CPU资源和内存资源。如果第一次查询较慢,再次查询可能会相对较快,之后,原因是内存资源可能存在瓶颈,或是待查询的数据刚开始不在内存中,我们需要将它提前加到内存中,这样查询耗时就会变短。
  • 另外一个资源是CPU资源,只要查看CPU水位即可,CPU过高会导致查询耗时变大。查询报错,主要排查查询的query是否正确,报错时,我们可以通过查询错误的日志或通过在查询语句中添加一些trace,进而查看具体的原因。


除了以上问题外,数据写入与查询问题比较复杂,我们还需要根据具体的case具体分析。


四、结尾

具体Havenask问题排查的视频可以通过链接查看,欢迎各位开发者使用。

视频链接:https://developer.aliyun.com/live/253856?spm=a2c6h.13262185.profile.5.563bee42LdD7By


关注我们:

Havenask 开源官网:https://havenask.net/

Havenask-Github 开源项目地址:https://github.com/alibaba/havenask

阿里云 OpenSearch 官网:https://www.aliyun.com/product/opensearch

钉钉扫码加入 Havenask 开源官方技术交流群:

1715594790746.png

目录
相关文章
|
4天前
|
运维 Kubernetes 监控
深入解析微服务架构的演进与实践
本文旨在探究微服务架构从诞生到成熟的发展历程,分析其背后的技术推动力和业务需求,并结合具体案例,揭示实施微服务过程中的挑战与解决策略。通过对微服务架构与传统单体架构的对比,阐明微服务如何优化现代应用开发流程,提高系统的可扩展性、可维护性和敏捷性。
14 0
|
4天前
|
数据采集 存储 API
Python虚拟环境数据共享技术解析:最佳实践与常见误区
本文探讨了Python爬虫开发中如何在虚拟环境中管理数据,提倡使用共享目录、数据库和API进行数据共享。通过创建虚拟环境、安装依赖并提供一个使用代理IP爬取微博数据的示例,阐述了如何配置代理、解析网页及保存数据到共享路径。强调了避免硬编码路径、忽视依赖管理和数据安全性的误区。
28 11
Python虚拟环境数据共享技术解析:最佳实践与常见误区
|
4天前
|
传感器 存储 数据采集
振弦采集仪的技术解析和应用进行详细介绍
振弦采集仪的技术解析和应用进行详细介绍
振弦采集仪的技术解析和应用进行详细介绍
|
2天前
|
物联网 云计算
操作系统中的内存管理技术解析
【7月更文挑战第13天】本文将深入探讨操作系统中至关重要的内存管理技术,包括虚拟内存、分页和分段机制等核心概念。我们将从内存管理的基本原理出发,逐步过渡到高级技术如交换空间和文件映射,最后讨论现代操作系统中内存管理面临的挑战与未来发展方向。文章旨在为读者提供对操作系统内存管理全面而深入的理解。
14 7
|
3天前
|
存储 安全 数据安全/隐私保护
移动APP安全加固技术深度解析
【7月更文挑战第12天】移动APP安全加固技术是保障移动应用安全的重要手段。通过对Android和iOS两大主流平台的安全加固,可以有效防止逆向分析、动态调试、数据篡改等安全威胁。在实际应用中,我们需要结合静态层面、动态层面和数据层面的加固技术,全方位地提升APP的安全性。同时,随着技术的不断发展,我们也需要不断关注新的安全威胁和加固技术,确保移动应用的安全性和稳定性。
|
1天前
|
数据可视化 持续交付 开发工具
RAD技术解析:快速开发应用程序的秘诀
**快速应用开发(RAD)**是一种始于90年代的敏捷方法,旨在通过迭代原型和反馈加速高质量软件交付。由James Martin提出,它包括需求规划、界面设计、快速构建和持续优化四阶段,以提高质量、降低风险、增强灵活性、降低成本和提升客户满意度。工具如ZohoCreator支持RAD,通过可视化工具和低代码平台促进高效开发,实现快速迭代和市场适应,降低项目失败风险,提高用户满意度。
23 9
|
3天前
|
安全 编译器 数据处理
PHP 8:新特性解析与实践应用
本文深入探讨了PHP 8版本中引入的关键新特性,包括JIT编译器、联合类型、命名参数、匹配表达式等,并结合实例代码演示了如何在实际项目中有效利用这些新功能来提高开发效率和代码质量。通过对比分析PHP 7与PHP 8的性能差异,文章进一步验证了新版本带来的性能提升,旨在为PHP开发者提供升级至PHP 8的全面指南。
8 2
|
3天前
|
编解码 前端开发 图形学
【技术深度解析】多平台适配下的UI适配难题:U3D游戏UI错乱的终极解决方案
【7月更文第12天】随着移动设备市场的多元化,Unity游戏开发者面临的一大挑战是如何在不同分辨率和屏幕尺寸的设备上保持UI的一致性和美观性。游戏在高分辨率平板与低分辨率手机上呈现出的UI布局混乱、按钮错位等问题,严重影响玩家体验。本文旨在探讨Unity UI(UGUI)在多平台适配中的最佳实践,通过优化Canvas Scaler设置、灵活运用RectTransform和Anchor Points,以及高效利用设计工具,确保UI的完美适配。
7 1
|
4天前
|
设计模式 中间件 测试技术
PHP中的中间件模式解析与实践
【7月更文挑战第11天】在现代Web开发中,中间件模式已成为设计高效、可维护应用程序的关键。本文深入探讨了PHP环境下中间件模式的实现方法,并提供了一个实际示例来演示如何利用中间件优化请求处理流程。
|
4天前
|
传感器 数据采集 安全
工程监测仪器振弦采集仪的技术解析与应用介绍
振弦采集仪的技术解析与应用进行介绍
工程监测仪器振弦采集仪的技术解析与应用介绍

推荐镜像

更多