《2017年數據分析領域的黑馬.pdf》由會員分享,可在線閱讀,更多相關《2017年數據分析領域的黑馬.pdf(111頁珍藏版)》請在三個皮匠報告上搜索。
1、數據分析領域的黑馬-ClickHousePower Your Data“世上無難事,只要有捷徑”“工具選的好,下班回家早”目錄自我介紹數據分析面臨的問題ClickHouse原理、架構ClickHouse在新浪的實踐與經驗ClickHouse案例、生態我是誰?我是干啥的?關于我DBA關于我DADBA關于我Data Analyst Data Translator 致力于運維大數據 挖掘與分析 可視化、報警、數據分析 AI-OPS關于我們“表哥”“表姐”們我們需要什么樣的工具?Excel?也用Hadoop Spark Hive?But,Hadoop這玩意,不是一天就能玩得轉的啊Google用Hado
2、op多數人用Hadoop太重了一切以需求作為第一位一切以需求作為第一位快速 好用 體量夠用一切以需求作為第一位快速 好用 體量夠用好維護!對結構化的數據 快速給出聚合/過濾結果We NeedSQLFast SQLFast Complex SQL沒有什么數據統計是一個SQL解決不了的。如果有,那就2個俄羅斯搜索巨頭Yandex開源列式存儲集群超高性能壓縮驅動豐富SQL線性擴展PB級別OLAP統計函數updated in real time跨數據中心異步復制最終一致不支持事務 不支持update/delete 然鵝,查詢巨快 超大容量 But,Lets Begin部署:單機1.官方提供Ubuntu
3、包 2.第三方rpm包 2.Docker鏡像 需要注意:1.修改網絡,默認監控IPv4/v6 2.自定義數據目錄,修改官方啟動腳本 3.Docker修改時區 部署部署:單機是不是很SQL部署:單機蠔,我們來壓測一下USA civil flights data since 1987 till 2015 contains 166 millions rows 63 GB of uncompressed data數據源部署:單機https:/clickhouse.yandex/docs/en/getting_started/example_datasets/ontime.htmlUSA civil f
4、lights data since 1987 till 2015 contains 166 millions rows 63 GB of uncompressed data數據源部署:單機數據大小173MB文件行數436951插入耗時4.731 Sec平均速度9.3 W/Sec壓縮率5倍https:/clickhouse.yandex/docs/en/getting_started/example_datasets/ontime.html部署:單機并發5個進程機器負載部署:單機響應時間峰值50W QPS部署:單機1.查詢總量 2.簡單group by查詢類型https:/clickhouse.
5、yandex/docs/en/getting_started/example_datasets/ontime.html部署:單機條件查詢,聚合,排序查詢類型https:/clickhouse.yandex/docs/en/getting_started/example_datasets/ontime.html部署:單機復雜查詢查詢類型https:/clickhouse.yandex/docs/en/getting_started/example_datasets/ontime.html部署:單機優點:1.部署簡單 2.全部CPU打滿,查詢效率極高 問題:1.性能依賴單機(scale up路線)
6、2.存在單點故障風險(宕機數據全丟)1.啟動Server 2.use db,create table 3.盡情select 4.推薦引擎:MergeTree使用總結分區主鍵稀疏索引粒度MergeTree類似LSM Tree,但是沒有內存表,不記錄log 直接落磁盤,按照主鍵排序,分塊寫入 異步merge,與寫不沖突,最大merge到月緯度 不支持刪除、修改 primary.idx+*.bin+*.mrk+checksums.txt+columns.txt寫如何寫的快?是否可壓縮?主鍵查詢:eg:(x,y,z,date)最左原則 讀如何快速查找?數據量大,如何適應內存?其他列查詢:稀疏索引定位區
7、間:不適合點對點查詢,適合范圍查詢 顆粒度N:默認8192 查詢問題:會帶來過多的IO擴展性 可靠性缺乏:擴展性 可靠性如何獲得:部署:分布式假的scale out 借助于特殊引擎實現 借助配置文件 概括部署:分布式Distributed引擎:1.本身不存儲數據 2.被寫入,做轉發 3.查詢,作為中間件,聚合后返回給用戶 集群名稱庫表分布算法分區主鍵顆粒度apm_msgapm_msg_all部署:分布式分布式如何做到的部署:分布式通過域名,寫本地表 insert into apm_msg values()總QPS=單機QPS apm_msgapm_msg_allapm_msgapm_msg_a
8、llapm_msgapm_msg_allapm_msgapm_msg_all寫寫操作 ClickHouse-部署:分布式apm_msgapm_msg_allapm_msgapm_msg_allapm_msgapm_msg_allapm_msgapm_msg_all讀操作 通過域名,讀分布式表 select*from apm_msg_all where xxx=yyy 原則:確保其他節點返回的數據,自己還可以聚合,如top/group by邏輯就不同讀ClickHouse-部署:分布式apm_msgapm_msg_allapm_msgapm_msg_allapm_msgapm_msg_allap
9、m_msgapm_msg_all讀操作 收到請求的節點,拿到所有節點數據(各自計算一次)本地匯總后讀讀取真實數據ClickHouse-部署:分布式apm_msgapm_msg_allapm_msgapm_msg_allapm_msgapm_msg_allapm_msgapm_msg_all讀操作 返回給客戶端讀取真實數據讀聚合返回ClickHouse-部署:分布式通過全局配置文件,達到集群相互知曉 各自維護各自的數據,讓用戶自己寫入 水平擴展性很好 查詢/寫入能力隨機器數線性增加 cluster config updated on the fly 總結部署:分布式1.直接寫分布式表,造成數據不
10、均勻 2.域名映射的IP只有在初始解析 3.新增節點,歷史數據不會搬遷,造成不均衡 4.過度的group by,導致大量數據交換 5.數據分片依賴單機穩定性,缺乏可靠性 問題擴展性 可靠性如何獲得:我們知道的復制:ClickHouse的復制ZKapm_msgapm_msgapm_msgapm_msg多源、多主、多向復制 數據互通有無 自帶檢測機制 自帶同步機制(物理復制)依賴ZK 非多數派寫部署:復制ZKapm_msgapm_msgapm_msgapm_msgReplicatedMergeTree(zk路徑,副本名稱,日期列,(其他列,日期列),索引粒度)多源、多主、多向復制 數據互通有無 自
11、帶檢測機制 自帶同步機制(物理復制)依賴ZK 非多數派寫部署:最佳架構復制復制復制復制復制復制ABCAABBCCIDC1IDC2IDC33個IDC使用復制機制做互備 每個IDC 3個節點,做分布式表,分擔查詢壓力 如:A/B/C 分別是數據的3個分片,各自承擔1/3的數據 查詢性能:A+B+C 部署:最佳架構復制復制復制復制復制復制ABCAABBCCIDC1IDC2IDC31.3個IDC,掛掉2個 不影響讀寫 恢復只需重啟實例 ClickHouse自動完成數據同步 2.掛掉某個實例,如A 切換讀寫到其他IDC,恢復實例A即可 3.掛掉多個實例,A、B同時掛掉 處理方式同上宕機分析集群的Clic
12、kHouse有多快?我們的架構表1:14字段 900億 4T 表2:94字段 500億 15TX 4CPU E5-2620 2.00GHz 開啟超線程后24core 48G內存 3T*12 Raid5請開始你的表演:select count(*)300億 0.9秒請開始你的表演:select date,count(*)from xx group by date 300億group by日期 9.8秒請開始你的表演:太復雜了請開始你的表演:更復雜了 支持Join請開始你的表演:官方demo快快快為啥這么快?1.優秀的代碼編寫,強大的底層優化,嚴格的單元測試 2.A vector engine&C
13、ode generation 3.CPU底層指令集的使用 4.C+新特性 為啥這么快?ClickHouse函數:300+ClickHouse高級函數:quantile(level)(x)quantiles(level1,level2,.)(x)median(X)統計類URL截取其他cutQueryString(X)domain(X)today()-1yesterday()substring(s,offset,length)IPv4NumToStringClassCextract(haystack,pattern)高級函數舉例:域名類高級函數舉例:IP歸類來點干貨目錄結構配置文件:config.
14、xml配置文件:metrika.xml配置文件:metrika.xml配置文件:user.xmlhttp:/jackpgao.github.io/2017/11/20/ClickHouse-User-Password/配置文件:user.xmlhttp:/jackpgao.github.io/2017/11/20/ClickHouse-User-Password/ClickHouse的問題:1.insert into xx(a,b,c)values(a,b,c)只能是單引號 2.如果是int插入的是string,報錯(不確定是否有類似SQL_MODE的參數)3.刪除只支持到月緯度的分區 4.改
15、造官方的啟動腳本,不要用root直接啟動 誰在用誰在用374 servers store over 20.3 trillion rows 17 PB uncompressed data TSV 2 PB without counting duplication and replication歐洲原子能研究機構 store and process metadataon 10 billion events with over 1000 attributes per eventInnovative provider ofonline retail financial services in Russ
16、ia 誰在用How Cloudflare analyzes 1M DNS queries per second做存儲的公司 Python驅動:infi.clickhouse_orm誰在用CARTO(formerly CartoDB)is a Software as a Service(SaaS)cloud computing platform that provides GIS and web mapping tools for display in a web browser.Altinity is the leading service provider for ClickHouse Al
17、tinity Provides Cloud Version of ClickHouse on Kodiak Data MemCloud Kodiak Data is an edge-cloud infrastructure company that allows customers to easily deploy and scale big data infrastructure in both public and private clouds 誰在用誰在用誰在用Blockchairis a blockchain search and analytics engine or you can
18、 also say its a blockchain explorer on steroids.誰在用我浪怎么用?SupersetAirbnb開源Python項目 Apache孵化 快速實現可視化 完美對接ClickHouse,方便分析師進行問題排查與分析 搭配案例某APP APM管理PythonClickHouse圖表、郵件、報警等 Superset可視化工作臺數據處理鏈路短 數據實時可見,及時Trace 如何快速數據變現 ESHangout問題排查,Trace案例某APP APM管理案例案例某APP APM管理CK監控Prometheus+ClickHouse exporter+Grafa
19、nahttps:/ (SSE 4.2 instruction set need)開啟超線程、性能模式 2.小磁盤多機器大磁盤少機器 3.Raid-10 is better If Raid5/6/50,increase stripe_cache_size 4.內存:越大越好,留給page cache 禁用swap/透明大頁/NUMA 5.CentOS7/Ext4/復制帶寬問題1.batch insert 2K 起步 2.用域名寫本地表,讀分布式表 3.如果是Docker,注意修改時區 4.clickhouse-client在Docker里,中文亂碼 5.拒絕 select*6.無Decimal,
20、乘以倍率,用Uint64存運維使用總結使用場景大容量 結構化 SQL方式日志分析 廣告 IOT 監控對比MySQL:復雜查詢、容量,重點不在事務 HDFS生態:簡單、易用、查詢快,規模穩定性有待驗證 Druid:保留原始數據,防止預先設定不滿足需求 大PK對比 對比項ESClickHouse數據接入插件豐富:hangout/logstash/filebeats無需特別指明字段類型,兼容性好需要自己開發:JDBC、clickhouse-client、Python導入Hangout to ClickHouse插件查詢原生查詢方式不靈活SQL插件復雜度有限大范圍查詢性能差支持復雜查詢高級函數多支持連
21、表查詢擴展性旗鼓相當,ES略輕松,ClickHouse需要管理表維度其他原生API社區健壯原生API社區正在發展語言Java/PythonJava/Python/R/PHP對比ES對比 GPU產品http:/ most advanced GPU based PostgreSQL DatabaseGPU Database for Fast,Interactive Visual Analytics GPU-accelerated analytics database for real-time insights on large and streaming datasetsHigh Perform
22、ance GPU Database for Big Data SQL對比 74x to 3,500 x faster than CPU DBs.對比 PG-Strom is an extension designed for PostgreSQL v9.5 or later,to off-load a part of CPU intensive workloads to GPU(Graphic Processor Unit)devices,and execute them in parallel asynchronously.對比 開源產品商業產品對比 性能與成本的均衡對比 行業排名結緣,“那年我還是個DBA,飽受業務復雜查詢,也就是OLAP之苦”不怕有坑?不試試怎么知道好用不好用Summary大容量結構化的數據需要SQL快速實現聚合、可視化But,如果,不好用,別撕我