Kudu 启动性能优化--slurp metadata file into memory
背景 Kudu 启动慢是长期以来饱受诟病的一个问题,部分数据量大的集群,单节点重启极端耗时需要 30 分钟以上,同时其部分参数并不能进行运行时调优,需要重启才能生效,这困扰着运维人员,影响升级和变更流程。 社区以及一些组织实现了一些优化方案,具体可以见 此文 tserver启动加速 一节,一些具体的 patch 包括: KUDU-2977 Sharding block map of
[笔记] Kudu 存储引擎 | Kudu 文件系统
Block 抽象接口 操作系统把磁盘抽象成文件,Kudu 则在文件之上再加了一层抽象——Block。在 Kudu 中,一列数据、一个 BloomFilter、一份主键索引,最终都变成一个或多个 Block 写入磁盘。Block 是 Kudu 存储引擎与本地文件系统之间的分界线:上层组件只需面对 Block 接口的 Append / Read,不必关心底层是一个独立文
[笔记] Kudu 存储引擎 | memrowset 实现详解
数据结构 MemRowSet 是 Kudu tablet 中用来暂存新写入数据的内存结构。它的底层存储是一棵并发 B-tree(CBTree),每个叶节点条目存放一个 key-value 对:key 是主键的编码形式(字典序 = 主键逻辑序),value 是一个 MRSRow。 为了支持快照一致性,MemRowSet 从不原地更新已插入的行数据——所有后续变更都以 Mutation 节点的形式挂在
Linux 网络 —— 数据包的发送
背景 Linux 网络–数据包的接收 一文中分析了 Linux 是如何接收一个数据包的,那么 Linux 在发送数据包的时候又是什么样的呢?本文聚焦于 Linux 数据包的发送,结合内核源码分析数据包的发送过程。 关于 Linux 网络数据包的接收可以阅读前文: Linux 网络 —— 数据包的接收 日期: 2024-08-24 标签: #Linux #net 背景 最初学习计算机网络的时
Linux 网络 —— 数据包的接收
背景 最初学习计算机网络的时候,通常都是从 TCP/IP 网络分层模型入手,学习各种协议,如 TCP、IP等,以及相关的原理,并未过多关注整个协议栈具体是如何实现的。在开发的过程中,通过高级语言往往只需要几行就能实现一个简单的网络程序,并从网络接收数据。然而数据具体是如何从网卡达到我们的进程中的呢?在这个过程中网卡和内核到底又做了些什么呢?数据在这个过程中是如何流转、复制的呢?带着这些问题,笔者最
Kudu Tablet Server 非事务写入流程分析
序 本文记录 kudu 源码阅读笔记,记录了 kudu tserver 端非事务写入的完整流程。 写入流程总览 Kudu 的一次“非事务”写(普通单/批行 Insert/Upsert/Update/Delete,不带 txn_id)在 tserver 侧需要经历以下阶段: Client 组装 WriteRequestPB 并通过 RPC 发送 (tserver_service.proto:
Kudu 概览
为什么需要 Kudu 在 Hadoop 生态中结构化的数据通常使用两种方式进行存储:一是通过 Apache Parquet 等二进制数据格式,将静态数据集存储在 HDFS 上,二是将可变数据以半结构化的方式存储在 HBase 中。这里面临的问题是存储在 HDFS 上的数据无法提供单个记录的随机访问,HBase 中存储的数据尽管允许低延迟的读取和写入,但是基于 SQL 分析的应用中顺序读取的吞吐方面
Python 中的元类
元类(metaclass)是 Python 中一个高级概念,它控制了类的创建过程。在 Python 的开源框架中,可以看到很多元类的相关身影,学习并理解元类也可以帮助理解 Python 中的类的创建过程。 一切皆对象 在 Python 中一切皆对象,类也不例外,类也是一个对象,可以像普通对象一样进行赋值、拷贝以及作为函数的参数使用。我们知道每个对象都有一个类型,在 Python
Kubernetes 整体架构与核心组件
Kubernetes 整体架构 从整体来看 Kubernetes (k8s) 主要由两种节点组成,分别是 Master 节点和 Node 节点,其整体结构如图1 所示。Master 节点由三个紧密协作的独立组件组合而成,分别是:kube-apiserver、kube-scheduler 以及 kube-controller-manager;Node 节点上最核心的是名为 kubelet
[译]阅读的重要性
原文:The Need To Read 在我小的时候阅读的科幻小说中,阅读常常被一些更高效获取知识的方式所取代。神秘的“磁带”会将知识加载到一个人的大脑中,就像将程序加载到计算机中一样。 这种情况很可能不会很快发生。不仅因为构建阅读的替代品很困难,而且即使存在一个替代品,也是不够的。阅读关于 x 的内容不仅教给你关于 x 的知识,还教给你如何写作1。 那又怎样?如果我们替代了阅读,还需要有人擅长
rsync 用法
在不同的机器和服务器之间进行数据同步是一个常见的场景,也有不同的命令工具(如 scp、FTP 等),甚至是不同的图形界面软件(如 Termius 等)可供我们选择操作。本文记录的 rsync (remote sync)也是用于文件同步的工具之一,其最大的特点是会检查发送方和接收已有的文件,并仅传输有变动的部分。rsync 不仅可以在本地不同的目录之间使用,同时也支持本地主机与远程服务器之间进行数据
Linux 60秒性能分析
原文:Linux Performance Analysis in 60,000 Milliseconds 当你登陆到一台性能出现问题的 Linux 服务器:你在第一分钟会检查什么? 在 Netflix,我们拥有一个庞大的 EC2 Linux 云和大量的性能分析工具,用于监控和调查其性能。其中包括 Atlas 用于云范围的监控和 Vector 用于按需实例分析。虽然这些工具帮助我们解决了大多数问