LakeHouse

  • 浅谈 Apache ORC 之 Decimal 存储

    这篇文章围绕 Apache ORC 中 Decimal 类型的存储实现,逐步补齐理解官方文档所需的几个关键前置概念。正文先解释 precision 和 scale 的含义,以及 ORC 中 int128、补码和 zigzag 编码的背景,再通过示例梳理 zigzag 的编码与解码过程,最后回到 ORC Decimal 本身,说明 valueStream 如何保存整数表示、SECONDARY stream 如何保存 scale,以及 reader 在 scale 不匹配时如何对读出的数值进行乘除调整。

    2024年5月5日
    9791
  • 自适应 Cache 之 Starburst Warp Speed

    这篇文章借 Starburst Warp Speed 的设计,讨论了一个面向 Lakehouse 场景的自适应缓存系统应当如何在索引、预热和易用性之间取得平衡。正文先介绍 Warp Speed 在 Starburst Galaxy 和 Enterprise 中的定位,以及它如何通过收集 Trino 查询历史、生成 warmup rule 和 acceleration instruction,驱动 worker 异步建立索引、缓存数据和执行查询加速;随后进一步拆解 Big Data Index、Cache Management、Text Analytics 和自适应预热代码中的 Collector、Extractor、Analyzer 等模块,最后从产品设计角度强调相比单纯追求极限性能,面向用户的低心智负担和易用性往往更重要。

    2024年4月21日
    7520
  • 浅谈 HDFS 慢节点的解决方案

    这篇文章围绕 HDFS 慢节点导致 OLAP 查询忽快忽慢的问题,梳理了问题成因和几种常见缓解手段。正文先区分数据多读、IO 次数过多、跨多个 HDFS Block 读取以及纯粹运气不好连到慢 DataNode 等不同来源,再分别讨论 Hedged Read 在解决慢节点时的原理、线程池规划和额外内存成本,以及通过缩短 HDFS 客户端 IO timeout 来尽快放弃慢请求的思路,最后结合 Trino 的历史经验说明这类配置本质上只是补救措施,真正的关键仍然是减少不必要的 IO。

    2024年3月25日
    4.4K3
  • Spark-SQL 有用的 SQL

    这篇文章是一份偏备忘录性质的 Spark-SQL 实用 SQL 记录,主要解决本地创建 Iceberg 表以及连接 Hive Metastore 时缺少现成示例的问题。正文给出了 Spark-SQL 启动 Iceberg 所需的 package 依赖写法、本地创建 Iceberg V2 表的方法,以及连接 HMS 时的相关配置,同时补充了在网络较差场景下将依赖 Jar 直接放入 Spark 目录以绕过在线下载的做法。

    2023年11月12日
    2.9K3
  • HDFS Hedged Read 的利弊分析

    这篇文章重新审视了 HDFS Hedged Read 的实际收益与代价,重点说明它虽然能缓解慢节点问题,但会显著放大内存开销。正文先回顾 Hedged Read 在超时后向其它副本发起并行读取的工作方式,再结合线上因频繁 OOM 触发查询失败的案例,分析 HDFS 客户端在开启该功能后会额外申请一个甚至两个 ByteBuffer,导致读取同一批数据时内存占用从原本的 1 倍上升到 2 到 3 倍,最后解释了为什么 HDFS 默认关闭这一功能。

    2023年11月12日
    2.3K2
  • Trino / StarRocks 阿里云 EMR Kerberos 认证指南

    这篇文章记录了如何在非 EMR 节点上让 Trino 和 StarRocks 正常连接阿里云 EMR 的 Kerberos 环境。正文先从创建带 Kerberos 的 EMR 和测试 ECS 开始,说明如何准备 principal、keytab 和 krb5 配置,再分别给出 Trino Hive catalog 与 StarRocks FE/BE 所需的 core-site.xml、hdfs-site.xml、hive-site.xml 和 JVM 参数设置,最后汇总了 Kerberos 超时、Hive Metastore 连接失败和 HDFS BlockMissingException 等典型报错的定位与修复方法。

    2023年8月21日
    1.9K0
  • HTrace 与 Zipkin 简单教程

    这篇文章介绍了 HTrace 在分布式系统中的基本作用,以及如何配合 Zipkin 对 RPC 调用链进行可视化追踪。正文先说明 HTrace 试图解决的问题,再梳理 Span、TraceScope、Tracer、Sampler 和 SpanReceiver 等核心概念,随后给出将数据输出到 Zipkin 的环境搭建方式,并分别用单机示例和模拟分布式 RPC 的多线程示例演示如何创建追踪链路、传递 SpanId 以及在 Zipkin 中查看各阶段的耗时。

    2021年1月21日
    2.7K0
  • 解决 IDEA 阅读 Hadoop 源码报错问题

    这篇文章记录了在 IDEA 中阅读 Hadoop 3.3.0 源码时,因缺失 protobuf 生成类而出现大量报错的排查过程和最终解决方案。正文先分析 proto 相关类缺失的原因,再依次尝试手动用 protoc 编译、在本地按官方文档直接用 Maven 构建、以及基于 IDEA 或 VS Code 的远程开发方案,并说明这些方法各自遇到的问题。最后文章给出一条可行路径:在远程 Linux、虚拟机或 Docker 环境中完成 Hadoop 编译,再将 target/generated-sources/java 中生成的源码拖回项目中供 IDEA 正常索引和阅读。

    2020年12月28日
    2.6K1
  • Hadoop 完全分布式(Fully Distributed)安装

    这篇文章记录了一个基于三台 CentOS 8 主机搭建 Hadoop 完全分布式集群的完整过程,内容从基础环境准备、主机通信、静态 IP、hadoop 用户和 SSH 免密登录开始,随后逐步配置 Hadoop 3.2.1 的 JAVA_HOME、HDFS、YARN 与 workers 节点,并将配置同步到各个从节点。最后文章通过格式化 NameNode、启动 HDFS 和 YARN、查看 jps 进程以及访问 Web 控制台的方式验证集群是否正常运行。

    2019年10月6日
    1.8K0