大数据 高鹏 数据分析领域的黑马-ClickHouse-新浪-高鹏_部分2
2020-02-27 121浏览
- 1.部署:‘分布式’ 写操作 ClickHouse-xxxxxx.sina.com.cn 通过域名,写本地表 insert into apm_msg values() 总QPS=∑单机QPS apm_msg_all apm_msg apm_msg_all apm_msg 写 apm_msg_all apm_msg apm_msg_all apm_msg
- 2.部署:‘分布式’ 读操作 ClickHouse-xxxxxx.sina.com.cn 通过域名,读分布式表 select * from apm_msg_all where xxx=yyy 原则:确保其他节点返回的数据, ⾃自⼰己还可以聚合,如top/ group by逻辑就不不同 读 apm_msg_all apm_msg apm_msg_all apm_msg apm_msg_all apm_msg apm_msg_all apm_msg
- 3.部署:‘分布式’ 读操作 收到请求的节点, 拿到所有节点数据 (各⾃自计算⼀一次) ClickHouse-xxxxxx.sina.com.cn 读 读取真实数据 本地汇总后 apm_msg_all apm_msg apm_msg_all apm_msg apm_msg_all apm_msg apm_msg_all apm_msg
- 4.部署:‘分布式’ 读操作 apm_msg_all apm_msg 返回给客户端 ClickHouse-xxxxxx.sina.com.cn 读 读取真实数据 聚合返回 apm_msg_all apm_msg apm_msg_all apm_msg apm_msg_all apm_msg
- 5.部署:‘分布式’ 通过全局配置⽂文件,达到集群相互知晓 总结 各⾃自维护各⾃自的数据,让⽤用户⾃自⼰己写⼊入 ⽔水平扩展性很好 查询/写⼊入能⼒力力随机器器数线性增加 cluster config updated on the fly
- 6.部署:‘分布式’ 1. 直接写分布式表,造成数据不不均匀 问题 2. 域名映射的IP只有在初始解析 3. 新增节点,历史数据不不会搬迁,造成不不均衡 4. 过度的group by,导致⼤大量量数据交换 5. 数据分⽚片依赖单机稳定性,缺乏可靠性
- 7.如何获得: 扩展性 可靠性
- 8.我们知道的复制:
- 9.ClickHouse的复制 ZK apm_msg apm_msg apm_msg apm_msg 多源、多主、多向复制 数据‘互通有⽆无’ ⾃自带检测机制 ⾃自带同步机制(物理理复制) 依赖ZK ⾮非多数派写
- 10.部署:复制 ZK apm_msg apm_msg apm_msg 多源、多主、多向复制 数据‘互通有⽆无’ ⾃自带检测机制 apm_msg ⾃自带同步机制(物理理复制) 依赖ZK ⾮非多数派写 ReplicatedMergeTree('zk路路径', '副本名称', ⽇日期列列, (其他列列, ⽇日期列列), 索引粒度)
- 11.部署:最佳架构 IDC3 IDC2 IDC1 A'' 复制 A' 复制 A B'' 复制 B' 复制 B 3个IDC使⽤用复制机制做互备 每个IDC 3个节点,做分布式表,分担查询压⼒力力 如: A/B/C 分别是数据的3个分⽚片,各⾃自承担1/3的数据 查询性能:A+B+C C'' 复制 C' 复制 C
- 12.部署:最佳架构 IDC3 IDC2 IDC1 A'' 复制 A' 复制 A B'' 复制 B' 复制 B C'' 复制 C' 复制 C 宕机分析 1. 3个IDC,挂掉2个 不不影响读写 恢复只需重启实例例 ClickHouse⾃自动完成数据同步 2. 挂掉某个实例例,如A 切换读写到其他IDC,恢复实例例A即可 3. 挂掉多个实例例,A、B同时挂掉 处理理⽅方式同上
- 13.集群的ClickHouse有多快?
- 14.我们的架构 CPU E5-2620 @ 2.00GHz 开启超线程后24core 48G内存 X4 3T*12 Raid5 表1: 14字段 900亿 4T 表2: 94字段 500亿 15T
- 15.请开始你的表演: select count(*) 300亿 0.9秒
- 16.请开始你的表演: select date, count(*) from xx group by date 300亿group by⽇日期 9.8秒
- 17.请开始你的表演: 太复杂了了
- 18.请开始你的表演: 更更复杂了了 ⽀支持Join
- 19.请开始你的表演: 官⽅方demo
- 20.快
- 21.快
- 22.快
- 23.为啥这么快? 1. 优秀的代码编写,强⼤大的底层优化,严格的单元测试 2. A vector engine & Code generation 3. CPU底层指令集的使⽤用 4. C++新特性
- 24.为啥这么快?
- 25.ClickHouse函数: 300+
- 26.ClickHouse⾼高级函数: 统计类 URL截取 quantile(level)(x) quantiles(level1, level2, ...)(x) median(X) cutQueryString(X) domain(X) 其他 today()-1 yesterday() substring(s, offset, length) IPv4NumToStringClassC extract(haystack, pattern)
- 27.⾼高级函数举例例: 域名类
- 28.⾼高级函数举例例: IP归类
- 29.来点⼲干货 ⽬目录结构
- 30.配置⽂文件: config.xml
- 31.配置⽂文件: metrika.xml
- 32.配置⽂文件: metrika.xml
- 33.配置⽂文件: user.xmlhttp://jackpgao.github.io/2017/11/20/ClickHouse-User-Password/
- 34.配置⽂文件: user.xmlhttp://jackpgao.github.io/2017/11/20/ClickHouse-User-Password/
- 35.ClickHouse的问题: 1. insert into xx (a, b, c) values ('a', 'b', 'c') 只能是单引号 2. 如果是int插⼊入的是string,报错(不不确定是否有类似SQL_MODE的参数) 3. 删除只⽀支持到⽉月纬度的分区 4. 改造官⽅方的启动脚本,不不要⽤用root直接启动
- 36.谁在⽤用