 4. ClickHouse在苏宁用户画像场景的实践构、解决方案  ClickHouse Contributor  Github: https://github.com/andyyzh Contents 苏宁如何使用ClickHouse ClickHouse集成Bitmap 用户画像场景实践 2 选择ClickHouse的原因 1. 速度快 2. 特性发布快 3. 软件质量高 精确去重计数性能测试 6 ClickHouse在苏宁使用场景  OLAP平台存储引擎 -- 存储时序数据、cube加速数据,应用亍高基数查询、精确去重场景。  运维监控 -- 实时聚合分析监控数据,主要使用物化视图技术。  用户画像场景 -- 标签数据的存储、用户画像查询引擎。 7 Contents 苏宁如何使用ClickHouse ClickHouse集成Bitmap / 8 / 1024 / 1024) 但是如果使用上述的数据结构存储单独一个较大数值的数字id,会造成空间上的浪费,例如 仅存储40亿一个数值也需要477m的空间。也就是说稀疏的Bitmap和稠密的占用空间相 同。通常会使用一种bitmap压缩算法迚行优化。 RoaringBitmap是一种已被业界广泛使用的高效的bitmap压缩算法,使用者包括Spark、 Hive、ElasticS0 码力 | 32 页 | 1.47 MB | 1 年前3 4. ClickHouse在苏宁用户画像场景的实践构、解决方案  ClickHouse Contributor  Github: https://github.com/andyyzh Contents 苏宁如何使用ClickHouse ClickHouse集成Bitmap 用户画像场景实践 2 选择ClickHouse的原因 1. 速度快 2. 特性发布快 3. 软件质量高 精确去重计数性能测试 6 ClickHouse在苏宁使用场景  OLAP平台存储引擎 -- 存储时序数据、cube加速数据,应用亍高基数查询、精确去重场景。  运维监控 -- 实时聚合分析监控数据,主要使用物化视图技术。  用户画像场景 -- 标签数据的存储、用户画像查询引擎。 7 Contents 苏宁如何使用ClickHouse ClickHouse集成Bitmap / 8 / 1024 / 1024) 但是如果使用上述的数据结构存储单独一个较大数值的数字id,会造成空间上的浪费,例如 仅存储40亿一个数值也需要477m的空间。也就是说稀疏的Bitmap和稠密的占用空间相 同。通常会使用一种bitmap压缩算法迚行优化。 RoaringBitmap是一种已被业界广泛使用的高效的bitmap压缩算法,使用者包括Spark、 Hive、ElasticS0 码力 | 32 页 | 1.47 MB | 1 年前3
 6. ClickHouse在众安的实践易观开源OLAP引擎测评报告 洞察数据模型+Clickhouse 使用效果 CHAPTER 使用ck对百亿数据的探索 03 背景 我们希望对保单、用户数据进行灵活分析,根据用户标签筛选出符合 要求的客户进行精准营销。 原始保单数据百亿+,用户数据数亿,如果用户标签几百个,数据存 储和查询以及分析的压力就会很大,原有系统使用es来保存用户标签 数据。 保单表 用户表 用户行为表 ODPS first_policy_premium • ... • phone_flag • ha_flag • ... clickhouse集群配置 • 阿里云ECS * 6,生产环境集群 • CPU: • Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GH • 12 cores 24 processors • 内存: 96GB • 硬盘: 1TB 高效云盘,最大IO吞吐量 140MBps partitions for single INSERT block的问题 • 数据导入慢 原因: • ck-loader-mr方式对大数据量场景支持不够友好 • 单次插入分区过多 解决方法: 使用clickhouse原生insert format csv 配合linux pipline导入 hadoop fs -cat 'hdfs://hadoop-namenode:port/user0 码力 | 28 页 | 4.00 MB | 1 年前3 6. ClickHouse在众安的实践易观开源OLAP引擎测评报告 洞察数据模型+Clickhouse 使用效果 CHAPTER 使用ck对百亿数据的探索 03 背景 我们希望对保单、用户数据进行灵活分析,根据用户标签筛选出符合 要求的客户进行精准营销。 原始保单数据百亿+,用户数据数亿,如果用户标签几百个,数据存 储和查询以及分析的压力就会很大,原有系统使用es来保存用户标签 数据。 保单表 用户表 用户行为表 ODPS first_policy_premium • ... • phone_flag • ha_flag • ... clickhouse集群配置 • 阿里云ECS * 6,生产环境集群 • CPU: • Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GH • 12 cores 24 processors • 内存: 96GB • 硬盘: 1TB 高效云盘,最大IO吞吐量 140MBps partitions for single INSERT block的问题 • 数据导入慢 原因: • ck-loader-mr方式对大数据量场景支持不够友好 • 单次插入分区过多 解决方法: 使用clickhouse原生insert format csv 配合linux pipline导入 hadoop fs -cat 'hdfs://hadoop-namenode:port/user0 码力 | 28 页 | 4.00 MB | 1 年前3
 2. Clickhouse玩转每天千亿数据-趣头条问题: 1:内存限制,对于一些大的查询会出现内存不够问题 2:存储限制,随着表越来多,磁盘报警不断 3:cpu限制 64G对于一些大表(每天600亿+)的处理,很容易报错,虽然有基于磁盘解决方案,但是会影响速度 clickhouse的数据目录还不支持多个数据盘,单块盘的大小限制太大 cpu需要根据实际情况而定 解决: 1:机器的内存推荐128G+ 2:采用软连接的方式,把不同的表分布到不同的盘上面,这样一台机器可以挂载更多的盘 查询过程中clickhouse-server进程挂掉 分析: clickhouse裸奔时max_memory_usage_for_all_queries默认值为0,即不限制clickhouse内存使用 解决: clickhouse安装完成以后,在users.xml文件中配置一下max_memory_usage_for_all_queries,控制 clickhouse-server最大占用内存,避免被OS to allocate chunk of 301989888 bytes), maximum: 9.31 GiB 分析: 1:max_memory_usage指定单个SQL查询在该机器上面最大内存使用量 2:除了些简单的SQL,空间复杂度是O(1) 如: select count(1) from table where column=value select column1, column2 from0 码力 | 14 页 | 1.10 MB | 1 年前3 2. Clickhouse玩转每天千亿数据-趣头条问题: 1:内存限制,对于一些大的查询会出现内存不够问题 2:存储限制,随着表越来多,磁盘报警不断 3:cpu限制 64G对于一些大表(每天600亿+)的处理,很容易报错,虽然有基于磁盘解决方案,但是会影响速度 clickhouse的数据目录还不支持多个数据盘,单块盘的大小限制太大 cpu需要根据实际情况而定 解决: 1:机器的内存推荐128G+ 2:采用软连接的方式,把不同的表分布到不同的盘上面,这样一台机器可以挂载更多的盘 查询过程中clickhouse-server进程挂掉 分析: clickhouse裸奔时max_memory_usage_for_all_queries默认值为0,即不限制clickhouse内存使用 解决: clickhouse安装完成以后,在users.xml文件中配置一下max_memory_usage_for_all_queries,控制 clickhouse-server最大占用内存,避免被OS to allocate chunk of 301989888 bytes), maximum: 9.31 GiB 分析: 1:max_memory_usage指定单个SQL查询在该机器上面最大内存使用量 2:除了些简单的SQL,空间复杂度是O(1) 如: select count(1) from table where column=value select column1, column2 from0 码力 | 14 页 | 1.10 MB | 1 年前3
 2. 腾讯 clickhouse实践 _2019丁晓坤&熊峰Clickhouse 的应用实践 iData 目录 部署与监控管理 一切以用户价值为依归 3 1 4 部署与监控管理 1 高内存,廉价存储: 单机配置: Memory128G CPU核数24 SATA20T,RAID5 万兆网卡 一切以用户价值为依归 5 部署与监控管理 1 生产环境部署方案: Distributed Table Replica1Replica1 Replica1Replica1 业务应用实践 iData 2 一切以用户价值为依归 l 游戏数据分析的业务背景 l iData 数据分析引擎TGMars l 为什么选用ClickHouse l 平台在ClickHouse上的使用 16 业务应用实践 iData 2 腾讯游戏 数据化驱动服务 场景视图: TGlog 服务端采集 腾讯游戏 服务器 腾讯游戏 移动客户端 微信 小游戏 WEB 游戏 海外 {"26":"32","1":"2","2000209":"1"} 2000352 2 30 26 31 26 1 2000209 2 4 1 28 42 16 32 2 1 一切以用户价值为依归 如何使用ClickHouse满足特殊需求 23 业务应用实践 iData 1 Map类数据处理方式 SELECT Goals.play_times_key AS key, sum(Goals.play_times_value)0 码力 | 26 页 | 3.58 MB | 1 年前3 2. 腾讯 clickhouse实践 _2019丁晓坤&熊峰Clickhouse 的应用实践 iData 目录 部署与监控管理 一切以用户价值为依归 3 1 4 部署与监控管理 1 高内存,廉价存储: 单机配置: Memory128G CPU核数24 SATA20T,RAID5 万兆网卡 一切以用户价值为依归 5 部署与监控管理 1 生产环境部署方案: Distributed Table Replica1Replica1 Replica1Replica1 业务应用实践 iData 2 一切以用户价值为依归 l 游戏数据分析的业务背景 l iData 数据分析引擎TGMars l 为什么选用ClickHouse l 平台在ClickHouse上的使用 16 业务应用实践 iData 2 腾讯游戏 数据化驱动服务 场景视图: TGlog 服务端采集 腾讯游戏 服务器 腾讯游戏 移动客户端 微信 小游戏 WEB 游戏 海外 {"26":"32","1":"2","2000209":"1"} 2000352 2 30 26 31 26 1 2000209 2 4 1 28 42 16 32 2 1 一切以用户价值为依归 如何使用ClickHouse满足特殊需求 23 业务应用实践 iData 1 Map类数据处理方式 SELECT Goals.play_times_key AS key, sum(Goals.play_times_value)0 码力 | 26 页 | 3.58 MB | 1 年前3
 ClickHouse: настоящее и будущееissues with zxid overflow • No issues with large packets • Better memory usage • No issues with GC and Java heap 2. Может запускаться встроенным в clickhouse-server • Нет необходимости в отдельном cloud-native ClickHouse. Кстати, а что это значит? Сложность разделения ресурсов 21 • Разделение CPU и IO между запросами • Приоритеты запросов • Memory overcommit Недостаточные возможности по интеграции0 码力 | 32 页 | 2.62 MB | 1 年前3 ClickHouse: настоящее и будущееissues with zxid overflow • No issues with large packets • Better memory usage • No issues with GC and Java heap 2. Может запускаться встроенным в clickhouse-server • Нет необходимости в отдельном cloud-native ClickHouse. Кстати, а что это значит? Сложность разделения ресурсов 21 • Разделение CPU и IO между запросами • Приоритеты запросов • Memory overcommit Недостаточные возможности по интеграции0 码力 | 32 页 | 2.62 MB | 1 年前3
 ClickHouse: настоящее и будущееNo issues with zxid overflow • No issues with large packets • Better memory usage • No issues with GC and Java heap 2. Может запускаться встроенным в clickhouse-server • Нет необходимости в отдельном cloud-native ClickHouse. Кстати, а что это значит? Сложность разделения ресурсов 21 • Разделение CPU и IO между запросами • Приоритеты запросов • Memory overcommit Недостаточные возможности по интеграции0 码力 | 32 页 | 776.70 KB | 1 年前3 ClickHouse: настоящее и будущееNo issues with zxid overflow • No issues with large packets • Better memory usage • No issues with GC and Java heap 2. Может запускаться встроенным в clickhouse-server • Нет необходимости в отдельном cloud-native ClickHouse. Кстати, а что это значит? Сложность разделения ресурсов 21 • Разделение CPU и IO между запросами • Приоритеты запросов • Memory overcommit Недостаточные возможности по интеграции0 码力 | 32 页 | 776.70 KB | 1 年前3
 2. ClickHouse MergeTree原理解析-朱凯6),共拥有合并树、 内存、文件、接口和其他5大类20多种。 合并树 这众多的表引擎中,又属合并树(MergeTree)表引擎及其家族系列(*MergeTree)最 为强大,在生产环境绝大部分场景中都应该使用此系列的表引擎。 只有合并树系列的表引擎才支持主键索引、数据分区、数据副本和数据采样这些特 性,同时也只有此系列的表引擎支持ALTER相关操作。 合并树家族 其中MergeTree作为家族中 数据的分区规则 l 不指定分区键 如果不使用分区键,既不使用PARTITION BY声 明任何分区表达式,则分区ID默认取名为all,所 有的数据都会被写入到这个all分区。 l 使用整型 如果分区键取值属于整型(兼容UInt64,包括 有符号整型和无符号整型),且无法转换为日期类 型YYYYMMDD格式,则直接按照该整型的字符形式 输出作为分区ID的取值。 l 使用日期类型 如果分区键取值属于日期类型,或者是能够转 如果分区键取值属于日期类型,或者是能够转 换为YYYYMMDD日期格式的整型,则使用按照 YYYYMMDD日期格式化后的字符形式输出作为分区 ID的取值。 l 使用其它类型 如果分区键取值既不属于整型,也不属于日期 类型,例如String、Float等。则通过128位Hash 算法取其Hash值作为分区ID的取值。 分区目录的命名规则 PartitionID_MinBlockNum_MaxBlockNum_Level0 码力 | 35 页 | 13.25 MB | 1 年前3 2. ClickHouse MergeTree原理解析-朱凯6),共拥有合并树、 内存、文件、接口和其他5大类20多种。 合并树 这众多的表引擎中,又属合并树(MergeTree)表引擎及其家族系列(*MergeTree)最 为强大,在生产环境绝大部分场景中都应该使用此系列的表引擎。 只有合并树系列的表引擎才支持主键索引、数据分区、数据副本和数据采样这些特 性,同时也只有此系列的表引擎支持ALTER相关操作。 合并树家族 其中MergeTree作为家族中 数据的分区规则 l 不指定分区键 如果不使用分区键,既不使用PARTITION BY声 明任何分区表达式,则分区ID默认取名为all,所 有的数据都会被写入到这个all分区。 l 使用整型 如果分区键取值属于整型(兼容UInt64,包括 有符号整型和无符号整型),且无法转换为日期类 型YYYYMMDD格式,则直接按照该整型的字符形式 输出作为分区ID的取值。 l 使用日期类型 如果分区键取值属于日期类型,或者是能够转 如果分区键取值属于日期类型,或者是能够转 换为YYYYMMDD日期格式的整型,则使用按照 YYYYMMDD日期格式化后的字符形式输出作为分区 ID的取值。 l 使用其它类型 如果分区键取值既不属于整型,也不属于日期 类型,例如String、Float等。则通过128位Hash 算法取其Hash值作为分区ID的取值。 分区目录的命名规则 PartitionID_MinBlockNum_MaxBlockNum_Level0 码力 | 35 页 | 13.25 MB | 1 年前3
 8. Continue to use ClickHouse as TSDB息预测股价涨跌 不断的汇总日成交量从 而制定商业规划 Why we choose it 不断收集CPU、 Memory等系统指标预 测系统未来趋势 不断收集市场变化信 息预测股价涨跌 不断的汇总日成交量从 而制定商业规划 Why we choose it 不断收集CPU、 Memory等系统指标预 测系统未来趋势 不断收集市场变化信 息预测股价涨跌 不断的汇总日成交量从 PARTITION BY toYYYYMM(Time) ORDER BY (Name, Time, Age, ...); ► Column-Orient Model How we do CPU : Intel Skylake 8 core Memory : 64 GB Disk : 500GB SSD Data Set : TSBS, 12 Hours, 40000 Drivers Rows ► Column-Orient Model How we do :) SELECT value FROM benchmark.tags WHERE (metric_name = 'cpu-usage_user') AND ((created_at >= '2016-01-01 08:00:00') AND (created_at <= '2016-01-01 09:00:00'))0 码力 | 42 页 | 911.10 KB | 1 年前3 8. Continue to use ClickHouse as TSDB息预测股价涨跌 不断的汇总日成交量从 而制定商业规划 Why we choose it 不断收集CPU、 Memory等系统指标预 测系统未来趋势 不断收集市场变化信 息预测股价涨跌 不断的汇总日成交量从 而制定商业规划 Why we choose it 不断收集CPU、 Memory等系统指标预 测系统未来趋势 不断收集市场变化信 息预测股价涨跌 不断的汇总日成交量从 PARTITION BY toYYYYMM(Time) ORDER BY (Name, Time, Age, ...); ► Column-Orient Model How we do CPU : Intel Skylake 8 core Memory : 64 GB Disk : 500GB SSD Data Set : TSBS, 12 Hours, 40000 Drivers Rows ► Column-Orient Model How we do :) SELECT value FROM benchmark.tags WHERE (metric_name = 'cpu-usage_user') AND ((created_at >= '2016-01-01 08:00:00') AND (created_at <= '2016-01-01 09:00:00'))0 码力 | 42 页 | 911.10 KB | 1 年前3
 Тестирование ClickHouse которого мы заслуживаем› Кэш OS › Уровень RAID и состояние диска › Положение данных на диске Память: › Аллокатор › Объем CPU: › Количество ядер › Размер кэшей › Планирование https://cdn-images-1.medium.com/max/2600/1*l0rkhXUnMtGFXrRqcaEcoA которого мы заслуживаем Как измерять производительность › Исключить влияние диска и кэшей › Фиксировать CPU и память › Подбирать условия останова › Проверять запросы дольше 10ms › Использовать реальные данные TeamCity, но проще › Запуск произвольного кода на python (задачи) › Фиксирование характеристик хостов (CPU, RAM, OS) › Устойчивость к выпадению хостов › Хранение и поиск артефактов › Запуск задач по таймеру0 码力 | 84 页 | 9.60 MB | 1 年前3 Тестирование ClickHouse которого мы заслуживаем› Кэш OS › Уровень RAID и состояние диска › Положение данных на диске Память: › Аллокатор › Объем CPU: › Количество ядер › Размер кэшей › Планирование https://cdn-images-1.medium.com/max/2600/1*l0rkhXUnMtGFXrRqcaEcoA которого мы заслуживаем Как измерять производительность › Исключить влияние диска и кэшей › Фиксировать CPU и память › Подбирать условия останова › Проверять запросы дольше 10ms › Использовать реальные данные TeamCity, но проще › Запуск произвольного кода на python (задачи) › Фиксирование характеристик хостов (CPU, RAM, OS) › Устойчивость к выпадению хостов › Хранение и поиск артефактов › Запуск задач по таймеру0 码力 | 84 页 | 9.60 MB | 1 年前3
 蔡岳毅-基于ClickHouse+StarRocks构建支撑千亿级数据量的高可用查询引擎广州站 ClickHouse 的特点 优点: 1. 数据压缩比高,存储成本相对非常低; 2. 支持常用的SQL语法,写入速度非常快,适用于大量的数据更新; 3. 依赖稀疏索引,列式存储,cpu/内存的充分利用造就了优秀的计算能力, 并且不用考虑左侧原则; 缺点: 1. 不支持事务,没有真正的update/delete; 2. 不支持高并发,可以根据实际情况修改qps相关配置文件; ClickHouse应用小结 • 数据导入之前要评估好分区字段; • 数据导入时根据分区做好Order By; • 左右表join的时候要注意数据量的变化; • 是否采用分布式; • 监控好服务器的cpu/内存波动/`system`.query_log; • 数据存储磁盘尽量采用ssd; • 减少数据中文本信息的冗余存储; • 特别适用于数据量大,查询频次可控的场景,如数据分析,埋点日志系统;0 码力 | 15 页 | 1.33 MB | 1 年前3 蔡岳毅-基于ClickHouse+StarRocks构建支撑千亿级数据量的高可用查询引擎广州站 ClickHouse 的特点 优点: 1. 数据压缩比高,存储成本相对非常低; 2. 支持常用的SQL语法,写入速度非常快,适用于大量的数据更新; 3. 依赖稀疏索引,列式存储,cpu/内存的充分利用造就了优秀的计算能力, 并且不用考虑左侧原则; 缺点: 1. 不支持事务,没有真正的update/delete; 2. 不支持高并发,可以根据实际情况修改qps相关配置文件; ClickHouse应用小结 • 数据导入之前要评估好分区字段; • 数据导入时根据分区做好Order By; • 左右表join的时候要注意数据量的变化; • 是否采用分布式; • 监控好服务器的cpu/内存波动/`system`.query_log; • 数据存储磁盘尽量采用ssd; • 减少数据中文本信息的冗余存储; • 特别适用于数据量大,查询频次可控的场景,如数据分析,埋点日志系统;0 码力 | 15 页 | 1.33 MB | 1 年前3
共 11 条
- 1
- 2













