大数据 高鹏 数据分析领域的黑马-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.谁在⽤用