kuda 了解片

Apache Kudu是Hadoop生态系统的一员,专为快速实时分析设计,支持流式计算、时间序列数据和机器学习场景。Kudu提供列式存储和高效扫描,与Impala集成提供实时数据分析解决方案。Kudu的列式存储、多副本一致性以及对高并发读写的处理能力使其在大数据领域独具优势。然而,Kudu不支持多行事务、二级索引和某些特定数据类型,适用于需要快速分析快速数据的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本来上个月想去了解一下kuda的,结果一直没有抽出时间去搞,现在大致先开个头,方便后面深入!

 

Apache Kudu是开源Apache Hadoop生态系统的新成员,它完善了Hadoop的存储层,可以 快速分析快速数据。

Kudu提供快速插入/更新和高效柱状扫描的组合,以在单个存储层上实现多个实时分析工作负载。作为HDFS和Apache HBase的新补充,Kudu使架构师能够灵活地处理各种用例,而无需异乎寻常的解决方法。

Kudu专为需要快速(快速变化)数据快速分析的用例而设计。Kudu专为利用下一代硬件和内存处理而设计,可显着降低Apache Impala(孵化)和Apache Spark(最初与其他执行引擎)的查询延迟。

 

Kudu和Impala均是Cloudera贡献给Apache基金会的顶级项目。

 

之前一直是 hdfs+Parquet+hive+impala

现在很多厂有用kuda+impala(或其他), 

去百度一番,快速了解一下。

 

kuda大致了解 

Kudu作为底层存储,在支持高并发低延迟kv查询的同时,还保持良好的Scan性能,该特性使得其理论上能够同时兼顾OLTP类和OLAP类查询。

Impala作为老牌的SQL解析引擎,其面对即时快速查询(Ad-Hoc Query)类请求的稳定性和速度在工业界得到过广泛的验证,Impala并没有自己的存储引擎,其负责解析SQL,并连接其底层的存储引擎。在发布之初Impala主要支持HDFS,Kudu发布之后,Impala和Kudu更是做了深度集成。

在众多大数据框架中,Impala定位类似Hive,不过Impala更关注即席查询SQL的快速解析,对于执行时间过长的SQL,仍旧是Hive更合适。

对于GroupBy等SQL查询,Impala进行的是内存计算,因而Impala对机器配置要求较高,官方建议内存128G以上,此类问题Hive底层对应的是传统的MapReduce计算框架,虽然执行效率低,但是稳定性好,对机器配置要求也低。

执行效率是Impala的最大优势,对于存储在HDFS中的数据,Impala的解析速度本来就远快于Hive,有了Kudu加成之后,会是如虎添翼,部分查询执行速度差别可达百倍。

值得注意的是,Kudu和Impala的英文原意是来自非洲的两个不同品种的羚羊,Cloudera这个公司非常喜欢用跑的快的动物来作为其产品的命名。

 

Kudu的典型使用场景

流式实时计算场景

流式计算场景通常有持续不断地大量写入,与此同时这些数据还要支持近乎实时的读、写以及更新操作。Kudu的设计能够很好的处理此场景。

时间序列存储引擎(TSDB)

Kudu的hash分片设计能够很好地避免TSDB类请求的局部热点问题。同时高效的Scan性能让Kudu能够比Hbase更好的支持查询操作。

机器学习&数据挖掘

机器学习和数据挖掘的中间结果往往需要高吞吐量的批量写入和读取,同时会有少量的随机读写操作。Kudu的设计可以很好地满足这些中间结果的存储需求。

与历史遗产数据共存

在工业界实际生产环境中,往往有大量的历史遗产数据。Impala可以同时支持HDFS、Kudu等多个底层存储引擎,这个特性使得在使用的Kudu的同时,不必把所有的数据都迁移到Kudu。

 

Kudu中的重要概念

列式存储

毫无疑问,Kudu是一个纯粹的列式存储引擎,相比Hbase只是按列存放数据,Kudu的列式存储更接近于Parquet,在支持更高效Scan操作的同时,还占用更小的存储空间。列式存储有如此优势,主要因为两点:1. 通常意义下的OLAP查询只访问部分列数据,列存储引擎在这种情况下支持按需访问,而行存储引擎则必须检索一行中的所有数据。2. 数据按列放一起一般意义来讲会拥有更高的压缩比,这是因为列相同的数据往往拥有更高的相似性。

Table

Kudu中所有的数据均存储在Table之中,每张表有其对应的表结构和主键,数据按主键有序存储。因为Kudu设计为支持超大规模数据量,Table之中的数据会被分割成为片段,称之为Tablet。

Tablet

一个Tablet把相邻的数据放在一起,跟其他分布式存储服务类似,一个Tablet会有多个副本放置在不同的服务器上面,在同一时刻,仅有一个Tablet作为leader存在,每个副本均可单独提供读操作,写操作则需要一致性同步写入。

Tablet Server

Tablet服务顾名思义,对Tablet的读写操作会通过该服务完成。对于一个给定的tablet,有一个作为leader,其他的作为follower,leader选举和灾备原则遵循Raft一致性算法,该算法在后文中有介绍。需要注意的是一个Tablet服务所能承载的Tablet数量有限,这也要求的Kudu表结构的设计需要合理的设置Partition数量,太少会导致性能降低,太多会造成过多的Tablet,给Tablet服务造成压力。

Master

master存储了其他服务的所有元信息,在同一时刻,最多有一个master作为leader提供服务,leader宕机之后会按照Raft一致性算法进行重新选举。

master会协调client传来的元信息读写操作。比如当创建一个新表的时候,client发送请求给master,master会转发请求给catelog、 tablet等服务。

master本身并不存储数据,数据存储在一个tablet之中,并且会按照正常的tablet进行副本备份。

Tablet服务会每秒钟跟master进行心跳连接。

Raft Consensus Algorithm

Kudu 使用Raft一致性算法,该算法将节点分为follower、candidate、leader三种角色,当leader节点宕机时,follower会成为candidate并且通过多数选举原则成为一个新的leader,因为有

### 如何在 Ubuntu 系统中完全卸载 CUDA 要在 Ubuntu 系统中彻底卸载 CUDA,可以按照以下方法操作。这些方法综合了多个来源的信息并进行了补充说明。 #### 方法一:通过 `apt` 工具卸载 使用系统的包管理器来移除 CUDA 及其相关组件是一种常见的方式。以下是具体命令: ```bash sudo apt-get remove --purge '^cuda-.*' 'libcupti-dev' sudo apt-get autoremove --purge ``` 上述命令会清理所有与 CUDA 相关的软件包以及不再需要的依赖项[^1]。如果存在残留文件,则可以通过以下命令进一步处理: ```bash cd /usr/local/ sudo rm -rf cuda* ``` 此步骤用于手动删除 `/usr/local/` 下可能存在的 CUDA 文件夹及其内容[^2]。 --- #### 方法二:使用官方推荐的卸载脚本 NVIDIA 提供了一个专门的卸载程序,适用于某些安装方式下的 CUDA 版本。例如,如果你是从 `.run` 或者 `.deb` 安装的 CUDA,那么可以直接调用该版本对应的卸载脚本来完成工作: ```bash cd /usr/local/cuda-X.Y/bin # 替换 X.Y 为你实际安装的 CUDA 版本号 sudo ./cuda-uninstaller ``` 注意,在执行前需确认路径中的 CUDA 版本号是否正确匹配已安装的版本。 --- #### 方法三:全面清除法 对于更复杂的场景或者当之前的卸载尝试未能成功时,可采用更为激进的方式来确保没有任何残余部分留下。这包括但不限于以下几个方面: 1. **移除显卡驱动及相关工具集** 如果同时希望连带移除 NVIDIA 显卡驱动(仅限于重新编译内核或其他特殊需求),可以用如下指令: ```bash sudo apt-get purge nvidia-* ``` 2. **查找并删除剩余条目** 利用 `dpkg` 命令查询系统中存在的任何带有 “cuda” 字样的记录,并逐一将其标记为待删状态: ```bash sudo dpkg -l | grep cuda sudo dpkg -P $(dpkg-query -Wf '${binary:Package}\n' '*cuda*' || true) ``` 3. **手工排查目录结构** 部分情况下可能存在遗漏的数据存储位置,比如用户的家目录下也可能有临时生成物或缓存数据。建议检查诸如 `$HOME/.local/share/nvidia`, `$HOME/.cache/nvidia` 等地方是否存在相关内容,并酌情予以清空。 4. **环境变量恢复默认设置** 编辑 shell 的初始化脚本 (如 `.bashrc`) ,去掉之前添加进去有关 PATH 和 LD_LIBRARY_PATH 中指向 CUDA 库的位置定义语句。之后刷新配置生效即可: ```bash source ~/.bashrc echo $PATH echo $LD_LIBRARY_PATH ``` 以上过程能够较为彻底地解决遗留问题[^5]^。 --- ### 总结 综上所述,针对不同情况可以选择适合自己的方案来进行 CUDA 的卸载作业。无论是简单的基于 APT 的操作还是深入至每一个细节层面的手动干预措施都各有优劣之处。务必依据个人实际情况作出判断选择最佳实践途径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值