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

大数据笔记-关于Cassandra的删除问题

        Cassandra是Facebook开源的一个NoSQL数据库,它除了具备一般的NoSQL分布式数据库特点以外,最大的一个特点是去中心化架构设计,这和Hadoop HDFS/HBase等不一样,比如HDFS分为NameNode和DataNode,而Cassandra集群中所有节点都是数据节点,每一个节点都在集群中承担相同的角色。

        我们开始在2013年做大数据存储系统选型过程中,也考虑过Cassandra,不过最终选择了MongoDB,之后又使用Elasticsearch,一直与Cassandra无缘,不过前几年我们引入了一款商业的AI类系统,它的后台存储系统选择了Cassandra,迫使我们不得不去熟悉Cassandra系统,然而一般是运维人员去维护它,常常也是咨询厂家运维人员来解决具体问题。

        最近由于某地市平台的运维人员休长假,由我来暂时接管其运维工作。这个系统中的Cassandra被限制只能存储2亿特征向量数据,到达这个阙值之后,系统将不永许再新增任何特征向量记录。我们每天大概几百万的采集量,大概3月左右就会存储满,所以运维人员写了一个定时清除脚本,指定一个上限阙值,一旦超过这个阙值,脚本将删除最早的一天数据,一直到存储量低于这个阙值才停止,比如阙值190000000,但是,在crontab配置时编辑错误,也没有事后进行检查,致使一直没有生效,时间到了3个月之后某一天,客户发现数据前一天没有入库,马上给我电话,他立即赶到现场,稍微分析发现Cassandra容量已经刚好达到2亿,厂家业务系统停止入库了。

        得知具体原因之后,我和主开发人员商量清理一部分数据,反正客户也不要求那么多天数据,我们的特征向量存储远比图片文件存储的时间长,所以主开发人员给我建议是先删除5000万。这个数据量也不大,我也没想那么多,使用厂家删除库接口进行删除,我们是一天一个特征向量库的,于是用Python脚本调用厂家接口从最早库进行删除,一直删除到库容量小于1.5亿,删除倒是很快完成,删除之后我第一时间用库列表查询接口去看,第一次查询还能出结果,但是再次查询的时候,接口就返回错误: no hosts availed in the pool,整个系统所有接口都不能调用了,先前还只是新增特征向量接口不行,现在什么都不行,吓了我一跳,系统这么脆弱。

        一边第一时间联系厂家远程运维人员,一边登录这台AI系统所在服务器,按厂家运维人员去看系统状态,这个系统只有一台机器,厂家却在上面安装了一个k8s单集群,本人没有使用过k8s系统,一切只能边baidu边摸索,用命令看容器状态:

        kubectl get pod -A

        发现Cassandra也是只有一个容器实例,已经是0/1了,肯定是发起删除操作的时候,让整个系统垮掉了,于是手工删除它,让k8s去重启它:

        kubectl delete pod -n component Cassandra-default-0

        但是还是启动不起来,于是强制删除:

        kubectl delete pod --force  --grace-period=0 -n compent Cassandra-default-0

        容器终于启动起来了,然后看容器日志:

        kubectl logs -f -n component Cassandra-default-0

        这时日志没有ERROR级别错误,只是大量gc1日志,看来JVM在做大量垃圾回收处理,这肯定跟删除有关了。

        再访问厂家API接口,不管是查询库列表接口、创建库接口,还是新增特征向量接口、搜索特征向量接口,都不可用,全部返回先前的错误描述:no hosts availed in the pool。

        咨询厂家运维人员,运维人员去问内部开发人员,答复是:从来没碰到一次性删除5000万数据的,删除1千万数据可能要5个小时。我说5000万数据不是要25个小时,这简直不可接受啊,但是也没办法,对方是大公司,开发人员应该是有水平,只有等了。

        但是我还是不甘心,就要自己分析Cassandra为什么会这么慢,系统内部状态是什么。于是就进入容器,直接用docker命令:

        docker ps | grep cassandra

        docker exec -it container-ID /bin/bash

        进入容器之后看进程: ps -ef | grep cassandra

        然后看端口: sudo netstat -ntlp 

        9042 : native协议服务端口

        7199  :  JMX服务端口

        这两个重要的端口都是正常存在的,于是用cqlsh工具去连接,需要密码,问厂家运维人员,回答账号在k8s环境里,于是执行:

        kubectl gett secrets password-secrets -o yaml | grep cassandra

        得到一个json格式的账号列表,Cassandra、MySQL、MinIO等登录账号都在这里,于是对密码进行Base64解码,得到密码原文。

        登录Cassandra:

   > cqlsh -u username -p password

   >> help

         所有命令都出来了,然后看键空间和表,找到特征向量所在的表,其实就一张表而已,查询都没有问题,感觉Cassandra应该已经好了啊,不至于要25个小时,再去看docker容器日志,全部是INFO和DEBUG级别日志,都是在删除sstable数据,看不出任何问题。

        我怀疑Cassandra可能已经正常,说不定是厂家自己的应用系统的问题。于是咨询厂家运维人员,他们自家开发的系统到底是怎么一个部署架构,之间是怎么调用的,我要分析一下他们的系统到底是打印什么错误。

        然后我和厂家运维从kong网关查起,发现厂家的两个程序有大量错误,错误描述还是:no hosts availed in the pool。

        我怀疑是cql连接池处理不好,于是重启厂家那两个需要连接Cassandra系统,重启之后,再去调用厂家所有API接口,一切正常。阿弥陀佛,庆幸自己没有听他们开发人员所谓的1千万数据删除要5个小时的断论,坚持了自己去分析各个系统,分析系统运行日志,整个系统提前恢复服务。

        这个过程中也怀疑过Cassandra的删除机制墓碑问题,其实不可能那么慢,5000万数据对一个NoSQL数据库应该不至于致命,但是稳定性确实有问题,单点部署情况下,删除导致单点故障而不能恢复,确实是Cassandra一个小问题,但是一般用Cassandra应该至少3个以上节点,做集群做副本集才有意义。

        

        

相关文章:

大数据笔记-关于Cassandra的删除问题

Cassandra是Facebook开源的一个NoSQL数据库,它除了具备一般的NoSQL分布式数据库特点以外,最大的一个特点是去中心化架构设计,这和Hadoop HDFS/HBase等不一样,比如HDFS分为NameNode和DataNode,而Cassandra集群中所有节点…...

Qt自定义文件选择框

文章目录 前言一、头文件二、源文件三、qss文件四、效果 前言 在开发过程中,经常遇到使用文件选择框的情况,qt默认的文件选择框,样式可能与开发的桌面程序差异比较大.此时,我们可以自定义文件选择框,设置其样式,尽量做到样式统一. 一、头文件 #ifndef CUSTOMFILEDIALOG_H #d…...

金蝶云星空创建自动下推并保存公共服务

文章目录 金蝶云星空创建自动下推并保存公共服务创建公共方法按单下推数据按明细行下推数据调用下推操作 调用公共方法 金蝶云星空创建自动下推并保存公共服务 创建公共方法 按单下推数据 /// <summary>/// 获取单据转换数据包/// </summary>public DynamicObjec…...

人大金仓助力中国人民银行征信中心业务系统异地容灾优化升级

日前&#xff0c;人大金仓助力中国人民银行应收账款融资服务平台异地容灾项目顺利上线&#xff0c;保证了平台系统运行的连续性和数据安全&#xff0c;为充分发挥平台的融资功能&#xff0c;缓解中小微企业融资难提供了强有力的保障。 缓解中小微企业融资难 中国人民银行构于2…...

[架构之路-249/创业之路-80]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 产品(数据)管理

目录 前言&#xff1a; 一、企业信息化的结果&#xff1a;常见企业信息化软件 1.1 产品数据管理 1.1.1 什么是产品数据管理What 1.1.1.1 常见工具 1.1.1.2 软件企业的产品数据管理系统 1.1.2 为什么需要产品数据管理系统Why&#xff1f; 1.1.3 谁需要产品数据管理系统w…...

【NI-DAQmx入门】传感器基础知识

1.什么是传感器&#xff1f; 传感器可将真实的现象&#xff08;例如温度或压力&#xff09;转换为可测量的电流和电压&#xff0c;因而对于数据采集应用必不可少。接下来我们将介绍您所需的测量类型及其对应的传感器类型。在开始之前&#xff0c;您还可以先了解一些传感器术语&…...

CMake:构建时为特定目标运行自定义命令

CMake&#xff1a;构建时为特定目标运行自定义命令 导言项目结构相关源码结果 导言 add_custom_command 是 CMake 中用于添加自定义构建规则的命令&#xff0c;通常用于在编译项目时执行一些自定义操作&#xff0c;例如生成文件、运行脚本等。 项目结构 . ├── CMakeLists…...

基于适应度相关算法的无人机航迹规划-附代码

基于适应度相关算法的无人机航迹规划 文章目录 基于适应度相关算法的无人机航迹规划1.适应度相关搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用适应度相关算法来优化无人机航迹…...

jmeter BeanShell预处理程序:报错Error invoking bsh method: eval...

1、jmeter运行报错&#xff1a; ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval In file: inline evaluation of: " . . . Encountered "" at line 13, column 23. WARN o.a.j.m.BeanShellPreProcessor: Problem in BeanShell scri…...

使用springboot对Elasticsearch 进行索引的增、删、改、查

一 SpringBoot Elasticsearch 项目环境搭建 1.1 修改pom文件添加依赖 目前使用spring-boot-starter-parent版本为2.2.8.RELEASE 对应spring-data-elasticsearch版本为2.2.8.RELEASE&#xff0c;版本对应可以自行百度&#xff0c;如果不行直接用elasticsearch-rest-high-lev…...

Project#2: Extendible Hash Index

文章目录 准备Task #1-Read/Write Page GuardsBasicPageGuard/ReadPageGuard/WritePageGuardUpgradeWrappersTests Task #2-Extendible Hash Table PagesHash Table Header Pages**成员变量&#xff1a;****方法实现&#xff1a;** Hash Table Directory Pages**成员变量&#…...

Emscripten + CMakeLists.txt 将 C++ 项目编译成 WebAssembly(.wasm)/js,并编译 Html 测试

背景&#xff1a;Web 端需要使用已有的 C 库&#xff08;使用 CMake 编译&#xff09;&#xff0c;需要将 C 项目编译成 WebAssembly(.wasm) 供 js 调用。 上篇文章《Mac 上安装 Emscripten》 已讲解如何安装配置 Emscripten 环境。 本篇文章主要讲解如何将基于 CMakeLists 配…...

MATLAB中preparets函数用法

目录 语法 说明 示例 准备开环和闭环网络的数据 preparets函数的功能是为网络模拟或训练准备输入和目标时间序列数据 语法 [Xs,Xi,Ai,Ts,EWs,shift] preparets(net,Xnf,Tnf,Tf,EW) 说明 [Xs, Xi, Ai, Ts, EWs, shift] preparets(net, Xnf, Tnf, Tf, EW) 这个函数接受…...

ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南续篇

作者&#xff1a;运维有术 前言 知识点 定级&#xff1a;入门级KubeKey 安装部署 ARM 版 KubeSphere 和 KubernetesARM 版 KubeSphere 和 Kubernetes 常见问题 实战服务器配置 (个人云上测试服务器) 主机名IPCPU内存系统盘数据盘用途ks-master-1172.16.33.1661650200KubeSp…...

react官网

应急方案 – React 中文文档 (docschina.org) 正版卡死版 Hooks FAQ – React (reactjs.org) 英文流畅版 应急方案 – React 中文网 (nodejs.cn) 盗版流畅版&#xff08;翻译有稍稍的问题&#xff09; http://www.react-cn.com/index.html 黄版...

前端css介绍

CSS介绍 CSS&#xff08;Cascading Style Sheet&#xff0c;层叠样式表)定义如何显示HTML元素。 当浏览器读到一个样式表&#xff0c;它就会按照这个样式表来对文档进行格式化&#xff08;渲染&#xff09;。 CSS语法 CSS实例 每个CSS样式由两个组成部分&#xff1a;选择器和…...

MySql创建索引

在MySQL中&#xff0c;可以使用CREATE INDEX语句来创建索引。以下是创建索引的基本语法&#xff1a; CREATE INDEX index_name ON table_name (column1, column2, ...);其中&#xff0c;index_name是索引的名称&#xff0c;可以自定义&#xff08;也可以不指定索引名称&#x…...

前后端分离vue+springboot家庭理财账单财务管理系统

项目介绍&#xff1a; 该系统能够管理家庭收入支出&#xff0c;并且能直观得表现收支状态。主要功能包括用户管理、收支管理、财务管理、统计收支情况等功能。 技术栈&#xff1a; 后端&#xff1a; SpringBoot&#xff0c;Sa-Token&#xff0c;MyBatis-Plus&#xff0c;MyB…...

LeetCode:2003. 每棵子树内缺失的最小基因值(C++)

目录 2003. 每棵子树内缺失的最小基因值 题目描述&#xff1a; 实现代码与解析&#xff1a; dfs 启发式合并 原理思路&#xff1a; 2003. 每棵子树内缺失的最小基因值 题目描述&#xff1a; 有一棵根节点为 0 的 家族树 &#xff0c;总共包含 n 个节点&#xff0c;节点编…...

React Hooks之useContext使用

官方文档写道&#xff1a;在组件的顶层调用 useContext 来读取和订阅 context。 我理解就是一个“全局变量”的概念。它可以用来声明一个变量&#xff0c;然后在各个组件中使用&#xff0c;避免了props一级一级往下传&#xff0c;当然使用场景有限&#xff0c;比如设置一个主题…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

【实施指南】Android客户端HTTPS双向认证实施指南

&#x1f510; 一、所需准备材料 证书文件&#xff08;6类核心文件&#xff09; 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...

电脑桌面太单调,用Python写一个桌面小宠物应用。

下面是一个使用Python创建的简单桌面小宠物应用。这个小宠物会在桌面上游荡&#xff0c;可以响应鼠标点击&#xff0c;并且有简单的动画效果。 import tkinter as tk import random import time from PIL import Image, ImageTk import os import sysclass DesktopPet:def __i…...

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。

2024 年&#xff0c;高端封装市场规模为 80 亿美元&#xff0c;预计到 2030 年将超过 280 亿美元&#xff0c;2024-2030 年复合年增长率为 23%。 细分到各个终端市场&#xff0c;最大的高端性能封装市场是“电信和基础设施”&#xff0c;2024 年该市场创造了超过 67% 的收入。…...

GeoServer发布PostgreSQL图层后WFS查询无主键字段

在使用 GeoServer&#xff08;版本 2.22.2&#xff09; 发布 PostgreSQL&#xff08;PostGIS&#xff09;中的表为地图服务时&#xff0c;常常会遇到一个小问题&#xff1a; WFS 查询中&#xff0c;主键字段&#xff08;如 id&#xff09;莫名其妙地消失了&#xff01; 即使你在…...

若依项目部署--传统架构--未完待续

若依项目介绍 项目源码获取 #Git工具下载 dnf -y install git #若依项目获取 git clone https://gitee.com/y_project/RuoYi-Vue.git项目背景 随着企业信息化需求的增加&#xff0c;传统开发模式存在效率低&#xff0c;重复劳动多等问题。若依项目通过整合主流技术框架&…...

ABAP设计模式之---“Tell, Don’t Ask原则”

“Tell, Don’t Ask”是一种重要的面向对象编程设计原则&#xff0c;它强调的是对象之间如何有效地交流和协作。 1. 什么是 Tell, Don’t Ask 原则&#xff1f; 这个原则的核心思想是&#xff1a; “告诉一个对象该做什么&#xff0c;而不是询问一个对象的状态再对它作出决策。…...