<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[icedating的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/icedating</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; icedating]]></copyright><item><title><![CDATA[【从零开始学习数据仓库 | 第三篇】: Flume——数据采集基石]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/169827995</link><guid>https://blog.youkuaiyun.com/icedating/article/details/169827995</guid><author>icedating</author><pubDate>Mon, 02 Nov 2026 12:49:10 +0800</pubDate><description><![CDATA[Flume 是什么？简单来说，Flume 就是一个分布式的、高可靠的、高可用的海量日志采集、聚合和传输系统。你可以把它想象成一个不知疲倦的“数据搬运工”。核心优点：高可靠：基于事务机制，保证数据在传输过程中不丢失（结合 File Channel 可实现断电续传）。高可用：支持多级拓扑结构，以及 Failover（故障转移）和 Load Balance（负载均衡）机制。易扩展：组件化设计，支持自定义 Source、Channel、Sink 和 Interceptor。配置即用。]]></description><category></category></item><item><title><![CDATA[【从零开始学习数据仓库 | 第二篇】: 拉链表 & 数仓分层]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/169530131</link><guid>https://blog.youkuaiyun.com/icedating/article/details/169530131</guid><author>icedating</author><pubDate>Fri, 30 Oct 2026 09:46:40 +0800</pubDate><description><![CDATA[拉链表是一种记录数据历史变化的存储方式，通过 start_date 和 end_date 标记每条记录的有效周期，实现“用时间换空间”。它仅更新变更部分，避免全量快照带来的高存储成本。常见实现方式包括先修改再插入（适用于支持行级更新的引擎）、先删除再插入（传统方法，性能差）和覆盖写入（主流于Hive环境）。拉链表主要用于处理缓慢变化维，在维度建模中保障历史状态可追溯。结合数仓分层架构，其多应用于DIM层，配合ODS、DWD、DWS等层级，实现数据解耦、血缘清晰与复用高效，是现代数据仓库核心实践之一。]]></description><category></category></item><item><title><![CDATA[【从零开始学习数据仓库 | 第一篇】:维度建模理论]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/169343156</link><guid>https://blog.youkuaiyun.com/icedating/article/details/169343156</guid><author>icedating</author><pubDate>Wed, 28 Oct 2026 21:29:09 +0800</pubDate><description><![CDATA[这篇笔记梳理了维度建模最底层的几个概念。维度建模的价值不在于概念多精妙，而在于它强迫你在动手写 SQL 之前，先把“业务过程是什么、粒度是什么、谁在分析什么”想清楚。代理键、可加性、三种事实表，这些看似琐碎的规则，每一条背后都有真实的踩坑教训。]]></description><category></category></item><item><title><![CDATA[【从零开始学习Spark | 第一篇】:算子与持久化]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/167127329</link><guid>https://blog.youkuaiyun.com/icedating/article/details/167127329</guid><author>icedating</author><pubDate>Fri, 23 Oct 2026 15:14:54 +0800</pubDate><description><![CDATA[【代码】【从零开始学习Spark | 第一篇】:算子与持久化。]]></description><category></category></item><item><title><![CDATA[Hive面试总结]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/168027327</link><guid>https://blog.youkuaiyun.com/icedating/article/details/168027327</guid><author>icedating</author><pubDate>Tue, 20 Oct 2026 20:43:05 +0800</pubDate><description><![CDATA[第一步，写Java类，继承GenericUDF，重写initialize、evaluate、getDisplayString 三个方法，第二步，打成Jar包传到HDFS第三步，注册 CREATE FUNCTION scott.HELLO_UDF AS ‘com.yjxxt.hive.udf.HelloUDF’ USING JAR ‘hdfs:///bd/hive-demo-1.0-SNAPSHOT.jar’，默认注册到default库之后SQL里自定义函数就可以当系统函数直接用。]]></description><category></category></item><item><title><![CDATA[Hadoop-MapReduce&YARN面试总结]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/167807517</link><guid>https://blog.youkuaiyun.com/icedating/article/details/167807517</guid><author>icedating</author><pubDate>Thu, 15 Oct 2026 16:20:51 +0800</pubDate><description><![CDATA[先看Map端，文件上传HDFS会切成Block，默认128M，然后有一个逻辑切片叫Split，它不改动存储，只是用来控制参与计算的节点数，一个切片就对应一个MapTask，Map任务从自己的切片里读数据，每次读一行，拼成KV，Key是偏移量，Value是一行内容。然后数据不是直接写磁盘，而是先写进内存里的环形缓冲区，默认100M，写到80%就触发溢写，写进去之前会先分区，默认是Key的哈希对Reduce数取模。缓冲区里的数据在溢写之前还会排个序，先按分区排，再按Key排，所以溢写出去的小文件内部是有序的。]]></description><category></category></item><item><title><![CDATA[HDFS面经总结]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/167795625</link><guid>https://blog.youkuaiyun.com/icedating/article/details/167795625</guid><author>icedating</author><pubDate>Tue, 13 Oct 2026 14:44:54 +0800</pubDate><description><![CDATA[首先创建一个FileSystem对象，调用open方法，通过RPC请求NameNode打开文件。NameNode会检查权限、目录、文件在不在，检查通过就把结果返回。接着客户端拿到一个输入流，向NameNode问第一个块的所有副本在哪。返回的地址列表是按距离排好序的，离客户端近的排前面。客户端就挑最近的那个DataNode去连，然后在流里反复调read，把这个块读完。读完一块，关掉连接，再找下一块的最佳DataNode接着读。最后整个文件读完，调close，把读到的所有块拼成一个完整的文件。]]></description><category></category></item><item><title><![CDATA[ZooKeeper面经总结]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/167668129</link><guid>https://blog.youkuaiyun.com/icedating/article/details/167668129</guid><author>icedating</author><pubDate>Tue, 13 Oct 2026 10:50:51 +0800</pubDate><description><![CDATA[面经记录]]></description><category></category></item><item><title><![CDATA[《从你点了一份外卖，到老板发现程序员是顶级牛马》一条外卖订单的大数据技术栈奇幻漂流]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/166838758</link><guid>https://blog.youkuaiyun.com/icedating/article/details/166838758</guid><author>icedating</author><pubDate>Tue, 29 Sep 2026 17:58:45 +0800</pubDate><description><![CDATA[《从你点了一份外卖，到老板发现程序员是顶级牛马》]]></description><category></category></item><item><title><![CDATA[大数据修炼之路（五）：Hive进阶]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/165752991</link><guid>https://blog.youkuaiyun.com/icedating/article/details/165752991</guid><author>icedating</author><pubDate>Thu, 17 Sep 2026 17:57:58 +0800</pubDate><description><![CDATA[减少 Shuffle”和“避免数据倾斜”。理解了 MapReduce 的底层执行逻辑，就能在面对海量数据时，写出既优雅又高效的 SQL。从表设计到参数调优，每一层优化都在为大数据管道保驾护航。]]></description><category></category></item><item><title><![CDATA[大数据修炼之路（四）：Hive基础]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/165719874</link><guid>https://blog.youkuaiyun.com/icedating/article/details/165719874</guid><author>icedating</author><pubDate>Thu, 17 Sep 2026 17:21:32 +0800</pubDate><description><![CDATA[普通视图：只保存 SQL 定义，不存储实际数据。每次查询视图时，相当于重新执行一次定义好的 SQL。它能简化复杂查询、提高数据安全性，但不会提升查询速度。物化视图：会保存计算后的实际结果。查询时直接读取预计算的结果，速度极快，但占用存储空间，且需要配置刷新策略（增量或全量刷新）来保证数据一致性。Hive 内置函数虽然丰富，但无法覆盖所有业务逻辑，此时需要自定义函数（UDF）。分类：普通函数，一进一出（如UPPER：聚合函数，多进一出（如SUMCOUNT：表生成函数，一进多出（如EXPLODE。]]></description><category></category></item><item><title><![CDATA[大数据修炼之路（三）：MapReduce & Yarn核心解析]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/165626246</link><guid>https://blog.youkuaiyun.com/icedating/article/details/165626246</guid><author>icedating</author><pubDate>Thu, 17 Sep 2026 09:55:10 +0800</pubDate><description><![CDATA[MR 的核心思想是“分而治之”，其精髓在于。核心细节minSizemaxSizemap()reduce()reduce()]]></description><category></category></item><item><title><![CDATA[大数据修炼之路（二）：HDFS 核心架构与面试详解]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/165458600</link><guid>https://blog.youkuaiyun.com/icedating/article/details/165458600</guid><author>icedating</author><pubDate>Tue, 15 Sep 2026 21:02:56 +0800</pubDate><description><![CDATA[HDFS 本质上是一个‘一次写入、多次读取’的分布式文件系统。它的核心架构是主从结构，NameNode 只负责管理元数据，不存真实数据；DataNode 存数据块（默认 128MB），默认 3 副本。它的读写流程最核心的理念是**‘数据流与控制流分离’**。客户端只向 NameNode 要元数据，然后直接与 DataNode 建立 Pipeline 管道传输数据，避免了 NameNode 成为性能瓶颈。]]></description><category></category></item><item><title><![CDATA[MySQL底层探索（一）：什么是脏页？什么是冷热分离？]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/165122868</link><guid>https://blog.youkuaiyun.com/icedating/article/details/165122868</guid><author>icedating</author><pubDate>Mon, 14 Sep 2026 15:35:25 +0800</pubDate><description><![CDATA[内存（Buffer Pool）里的数据页被修改了，但还没有被写回磁盘，此时内存和磁盘数据不一致，这个内存页就叫。]]></description><category></category></item><item><title><![CDATA[大数据修炼之路（一）: ZooKeeper学习]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/165001094</link><guid>https://blog.youkuaiyun.com/icedating/article/details/165001094</guid><author>icedating</author><pubDate>Fri, 11 Sep 2026 19:22:59 +0800</pubDate><description><![CDATA[ZooKeeper 学习]]></description><category></category></item><item><title><![CDATA[Linux & Shell 实用干货]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/164575076</link><guid>https://blog.youkuaiyun.com/icedating/article/details/164575076</guid><author>icedating</author><pubDate>Tue, 08 Sep 2026 15:13:34 +0800</pubDate><description><![CDATA[桥接（Bridged）：虚拟机独立 IP，和宿主机平级，局域网内其他机器可直连。NAT：虚拟机共享宿主机 IP上网，宿主机和虚拟机互通，外网无法直接访问虚拟机（最常用）。Host-Only纯内网，只能与宿主机通信，不能上网（安全性高）。name="zhangsan" # 等号两边不能有空格！echo $name # 输出 zhangsanecho ${name} # 推荐加花括号，便于识别边界echo "My name is ${name}" # 双引号会解析变量。]]></description><category></category></item><item><title><![CDATA[微服务学习最终篇： Elasticsearch]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/164472195</link><guid>https://blog.youkuaiyun.com/icedating/article/details/164472195</guid><author>icedating</author><pubDate>Mon, 07 Sep 2026 17:23:46 +0800</pubDate><description><![CDATA[Elasticsearch 之所以能在大数据量下实现毫秒级的全文搜索，核心秘密就在于它的底层数据结构——倒排索引（Inverted Index）。在传统关系型数据库（如 MySQL）中，搜索文本字段通常用，需要扫描每一行记录，效率极低。倒排索引的设计思路完全不同——它不存储“哪个文档包含了什么内容”，而是存储“这个关键词出现在了哪些文档中”。正排索引 vs 倒排索引正排索引（Forward Index）：以文档为核心，文档 ID → 文档内容。这是存储原始数据的方式。]]></description><category></category></item><item><title><![CDATA[微服务学习（三）：网关 + 配置管理 + RabbitMQ]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/164376035</link><guid>https://blog.youkuaiyun.com/icedating/article/details/164376035</guid><author>icedating</author><pubDate>Mon, 07 Sep 2026 11:47:26 +0800</pubDate><description><![CDATA[在微服务架构中，网关（Gateway）负责统一流量入口，配置中心（Config Center）承担动态配置管理，而消息队列（MQ）则解决服务间的异步通信问题。]]></description><category></category></item><item><title><![CDATA[微服务学习（二）：服务拆分 + 治理 + OpenFeign]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/164262439</link><guid>https://blog.youkuaiyun.com/icedating/article/details/164262439</guid><author>icedating</author><pubDate>Tue, 01 Sep 2026 19:40:12 +0800</pubDate><description><![CDATA[知识点一句话总结服务拆分原则先单体验证可行性，再拆微服务减少风险纵向拆分按功能模块拆出独立服务横向拆分抽取公共能力形成通用服务注册中心服务的"通讯录"，帮你找到想调的服务在哪服务发现 + 心跳自动感知实例变化，不用手动维护列表最基础的远程调用方式，适合入门，代码不太优雅OpenFeign声明式HTTP客户端，用起来像调本地方法连接池Feign生产环境必开，用连接池复用连接提升性能Feign抽取统一用公共模块管理，避免重复造轮子下一步。]]></description><category></category></item><item><title><![CDATA[微服务学习（一）：Docker · 夯到爆的一个工具]]></title><link>https://blog.youkuaiyun.com/icedating/article/details/164226309</link><guid>https://blog.youkuaiyun.com/icedating/article/details/164226309</guid><author>icedating</author><pubDate>Tue, 01 Sep 2026 08:36:06 +0800</pubDate><description><![CDATA[创建网络# 启动容器时指定网络好处：同一个网络里的容器可以通过容器名互相访问，Docker 自带 DNS 解析。比如在myapp而不是写。]]></description><category></category></item></channel></rss>