CarbonData_meetup_shenzhen_20181201_v1.1.2
在本文中,徐传印先生将分享他在华为SmartCare产品大数据平台上,关于CarbonData的实践与调优经验。徐先生是该平台的系统工程师,自2013年加入华为公司以来,便长期从事大数据技术在电信领域的研究、优化和应用。到了2017年5月,他开始接触并调研CarbonData在详单查询业务中的应用,重点针对其入库性能进行优化。2018年5月,他成为了Apache CarbonData Committer。 徐传印先生介绍了所在业务场景:每天需要处理超过100TB的数据量,年增长率高达30%,并且要求能够在5分钟内完成百亿记录的查询,支持300+字段的SQL交互式查询以及大型分析和多租户支持。 在技术选择方面,他们面临了使用Impala+Parquet方案带来的问题,比如入库速度慢,节点实测速度达到每秒60M/S即达到上限,使用两个动态分区时,入库过程数据shuffle加剧导致磁盘I/O性能下降,查询时如果用不上分区性能较差,MPP架构在百节点以上扩容存在问题,以及未集成Yarn资源管理导致集群资源无法隔离,并在与其他组件共用HDFS时出现数据倾斜问题。 基于以上问题,他们选择转向CarbonData。CarbonData是一种Hadoop Native的列存文件格式,它具有内置索引,与Spark/Presto计算引擎深度集成和优化,拓展了Spark SQL的语法,提供了数据管理功能,还拥有丰富的索引,对计算引擎的查询和计算进行了深度优化。 选择CarbonData的原因在于其能够将大数据转化为小数据进行处理,通过增加任务量,减少批次,使得单个任务处理的小数据集群得到更多资源。此外,CarbonData支持列存编码压缩,分区和分桶,能够跳过不需要处理的数据,同时提供粗粒度和细粒度索引,包括内置和外置的索引,使其具有良好的易用性、扩容性、集成性和演化能力,且足够开放。 具体到优化效果,CarbonData使得查询速度和入库速度都得到了提升,查询性能提升一倍以上,入库性能提升两倍,达到每秒101MB/Node,端到端I/O减少了40%以上。 在概念解释部分,徐传印先生对CarbonData的一些核心概念做了阐释: - Segment:一次数据入库就是一个Segment。 - Block:一个CarbonData数据文件,大小由TABLE_BLOCKSIZE控制。 - Blocklet:在CarbonData组织数据时,数据被水平分组,每组称为一个Blocklet,类似于Parquet的RowGroup。Blocklet的大小是可配置的,一个Block中可以包含多个Blocklet。 - Chunk:每个列的列存数据,数量与列数相关。 - Page:一个列的最小编码和压缩单元,一般包含32000个值,一个列的所有Page放在一起,组成该列的Chunk。 - Sort_Columns:数据按照这些字段排序,目的是改变数据分布,使相同记录聚集在一起,便于扫描;索引起来更高效;编码和压缩效果更好。 徐传印先生提到了引入Zstd压缩技术来提升入库优化,并对CarbonData在详单查询业务中的实践与调优做了深入探讨。通过他的分享,我们可以得知,针对大数据场景下,CarbonData不仅能够提升数据入库和查询的效率,还能有效解决多节点扩容和数据倾斜等问题,使其成为处理电信等大数据领域的优选方案。
剩余77页未读,继续阅读
- 粉丝: 108
- 资源: 218
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助