原创 Map類型:ClickHouse中對動態字段的支持 背景介紹 Map類型使用示例 Map類型的取值實現 Map類型的跳數索引 Map相關函數

背景介紹 在交互式分析場景下,很多時候除了固定字段之外,還會有一些動態字段的需求。比如,在遊戲場景下,需要動態存儲用戶每個遊戲的play時長。這種場景下,我們希望在一張表中同時存儲固定字段和動態字段的信息,並且可以高效地使用動態字段做過濾查

原创 ClickHouse複製表同步機制淺析 0 術語解釋 1 哪些操作會引發數據同步? 2 ZooKeeper的結構和作用 3 負責數據同步的tasks 4 總結

ReplicatedMergeTree是ClickHouse最常用的表引擎之一,該引擎和MergeTree一樣都繼承自MergeTreeData, 和MergeTree共享相同的底層存儲層實現。ReplicatedMergeTree區別於M

原创 ClickHouse複製表同步機制剖析 0 術語解釋 1 哪些操作會引發數據同步? 2 ZooKeeper的結構和作用 3 負責數據同步的tasks 4 總結

ReplicatedMergeTree是ClickHouse最常用的表引擎之一,該引擎和MergeTree一樣都繼承自MergeTreeData, 和MergeTree共享相同的底層存儲層實現。ReplicatedMergeTree區別於M

原创 Spark自建的邏輯內存管理器是怎麼申請和釋放內存的? 1 存儲內存管理 2 執行內存管理 3 分析&總結 4 說明

在漫談Spark內存管理(一)中,概述了Spark內存管理做的事情,並着重對unroll memory的概念做了解釋及分析。本文繼續討論Spark Memory Manager的功能實現.Spark的MemoryManager提供了一套邏輯

原创 Spark DataFrame使用問題記錄:insertInto引起大量文件問題 1 問題描述 2 源碼分析 3 回答問題 4 總結

1 問題描述最近工作中有使用到spark sql的DataFrameWriter.insertInto函數往Hive表插入數據。在一次測試中,執行到該函數時,HDFS上產生了大量的小文件和目錄,最終導致測試環境的namenode發生fail

原创 Spark內存管理功能概述 & 對Unroll Memory的理解 1 Spark內存管理都做了些啥? 說明

談到Spark內存管理,估計大家都會想到:static memory manager,unified memory manager,execution memory,storage memory,tungsten, task memory

原创 漫談Spark內存管理(四): TaskMemoryManager如何爲task分配執行內存?

本文討論跟執行內存密切相關的一個組件:TaskMemoryManager(下文簡稱TMM)。TMM是tungsten內存管理機制的核心實現類(tungsten內存管理只作用於執行內存),它的功能包括:1. 建立類似於操作系統內存頁管理的機制

原创 Spark RDD上的map operators是如何pipeline起來的?

最近在工作討論中,同事提出了這麼一個問題:作用在一個RDD/DataFrame上的連續的多個map是在對數據的一次循環遍歷中完成的還是需要多次循環?當時我很自然地回答說:不需要多次循環,spark會將多個map操作pipeline起來app

原创 SPARK-21444踩坑記錄: DAGSchedulerEventProcessLoop failed when executor preempted

原文前段時間工作中踩到SPARK-21444的坑,這裏做個記錄。1 場景描述我們的一個spark app在正常運行幾個月後經常出現driver端hang住的情況,用yarn container -list查看發現只有driver的conta

原创 Spark MapOutputTracker淺析

最近工作中踩到一個MapOutputTracker相關的坑 (SPARK-21444), troubleShooting的過程中閱讀了MapOutputTracker的代碼,在此做個整理。本文先概括性地介紹MapOutputTracker的

原创 Spark的join什麼情況下可以避免shuffle?

Spark的join操作可能觸發shuffle操作。shuffle操作要經過磁盤IO,網絡傳輸,對性能影響比較大。本文聊一聊Spark的join在哪些情況下可以避免shuffle過程。1 DataFrame/Dataset的join如何避免

原创 漫談Spark內存管理 (一)

談到Spark內存管理,估計大家都會想到:static memory manager,unified memory manager,execution memory,storage memory,tungsten, task memory

原创 漫談Spark內存管理(二)

在漫談Spark內存管理(一)中,概述了Spark內存管理做的事情,並着重對unroll memory的概念做了解釋及分析。本文繼續討論Spark Memory Manager的功能實現.Spark的MemoryManager提供了一套邏輯

原创 漫談Spark內存管理(三) : 存儲內存在哪些地方用到?

漫談Spark內存管理(一)有提到問題:“ Spark中用到內存的地方有哪些?存儲內存主要消耗在哪些地方?執行內存主要消耗在哪些地方?”。本文就從存儲內存使用的角度聊聊spark中哪些地方需要用到存儲內存。MemoryManger.acqu

原创 Spark DataFrame使用問題記錄:insertInto引起大量文件問題

1 問題描述最近工作中有使用到spark sql的DataFrameWriter.insertInto函數往Hive表插入數據。在一次測試中,執行到該函數時,HDFS上產生了大量的小文件和目錄,最終導致測試環境的namenode發生fail