Pinterest采用Redshift实现强大的交互式数据分析

我们最终选用了Redshift,它是基于亚马逊网络服务的数据仓库服务,它增强了我们的交互分析能力,每天尽可能快的导入数以亿计的记录,来确保核心数据源的可用性。Redshift是一个伟大的解决方案,它可以在几秒钟内回答问题来保证交互数据分析和快速的原型(然而Hadoop和Hive用来处理每天兆兆字节量级的数据,只能在几钟或者几个小时内给出答案)。

来看看我们在使用Redshift中的一起体验吧:包括了挑战和收获,这只是系统的数亿分之一的缩影。

Pinterest采用Redshift实现强大的交互式数据分析

Redshift启动方便并且相当可靠,然而面对千万亿字节量级的大量数据和快速扩张的组织规模,在生产环境中使用Redshift,我们将会面对一些有趣的挑战。

挑战1: 创建100万亿字节量级的ETL完成从Hive到Redshift的转化

在Hive中有万亿字节量级的数据,它需要我们花一些时间来思考一个***的实践,如何把100万亿字节的核心数据导入到Redshift中。在Hive中有各种格式的数据,包括了原始的json,Thrift, RCFile,这些都需要转化成带有一个平面模式的文本文件。我们用Python撰写了模式映射的脚本,通过这些脚本生成Hive查询来处理重量级的ETL。

在Hive中,大部分的表都是时间序列数据且按日期分片。为了保证***结果,我们使用了日期作为排序键,每天在各张表后追加数据,从而避免高成本的VACUUM操作。另一种方法是每天使用一张表,通过视图把它们关联,但是我们发现Redshift没有很好的视图查询优化的机制(例如,它不能下压LIMIT)。

加载一张大的快照表同样是一件具有挑战的事情。我们***的表db_pins它包括了200亿个Pins,在规模上远不止10TB的数据。在快照表中加载它会导致开销巨大的分片和排序,因此我们在Hive中做了大量的分片,同时逐块儿的加载到Redshift中。

由于Redshift只有有限的存储空间,我们采用表保留的方式去处理大数据的时间序列的表格,通过周期性的运行插入查询到Redshift中去将有限的数据拷贝到新的表格中,这样做会比删除行然后做耗费极高的清空,或者舍弃整个表再重新导入的方法要快得多。

也许***的挑战是来自于S3最终的一致性。我们发现在Redshift中有时候会有严重的丢数据现象,然后追查下来是S3的问题。我们通过绑定一些小的文件的方法来减少在S3上的文件数量,这样来减少数据丢失。我们同时在ETL的每一步中添加审计,这样数据丢失率现在通常已经在可以接受的0.0001%以下。

挑战2:通过Redshift之外的Hives得到100x的速度提升

Redshift生来具备高性能,这使得在原型中对于一些查询不需要什么额外的努力,我们可通过Hive得到50-100x的提速,然而一旦进入生产环境,它并不总能像测试时那样与预期的性能相符。

在早期的测试中我们发现一些长达数小时的查询,调试性能问题是相当棘手的,这需要收集查询计划、查询执行统计等,但是最终它没有明显的性能问题。

由此得到的教训是需要把数据准备好,无论何时更新系统的统计信息是必须的,因为它会极大的影响优化的的工作。为每张表选择一个好的排序键和分区键,排序键会容易一些,但是糟糕的分区键将会歪曲和影响系统的性能。

下面是Hive 和Redshift聚簇的基准测试结果,测试基于db_pins(200亿行,每行有50个列的,总大小是10TB)和一些其它的核心表。要记得这些比较不包括聚簇大小,资源争用和其它可能的优化机制,因此比较一点也不科学。

Pinterest采用Redshift实现强大的交互式数据分析

我们也发现了一些常识性的错误,总结了我们的***实践,创建了工具实时的监控速度慢的查询。耗时超过20分钟的被视为有嫌疑,工程师们就会收到提醒,来回顾我们遵守的***实践。

Pinterest采用Redshift实现强大的交互式数据分析

或许最常见的错误是趋向于把“Select *” 这样的内容放在select子句中,这有悖于列存储,因为它需要扫描全部非必需的列。

挑战3: 管理不断增长的查询/用户的争用。

因为性能良好,在我们配置好后,Redshift被广泛的应用到Pinterest中。我们是一个高速发展的机构,越来越多的人们对并行使用Redshift感兴趣,由于大量的查询争用资源,查询的速度明显的下降。一个代价较大的查询会占用大量的资源且明显的影响其它并行的查询,因此我们需要制定规则来使得争用最小化。

我们避免在峰值时段(上午9点到下午5点)使用重量级的ETL查询。ETL查询和COPY一样会占用大量的输入输出和网络带宽,为了保证用户的交互查询要避免在这些时段使用ETL查询。我们优化了ETL的管道使它在峰值时间之前完成,或者暂停管道,在峰值后再恢复。甚至于,在峰值时段暂停用户交互查询。可能包含错误的长查询将会被立即停止,而不是让它浪费资源。

目前状况

我们建了16个hs1.8xlarge性能的节点。通常在Pinterest上会有100个用户同时使用Redshift,每天我们运行300到500个交互式的查询。因为很多查询都能在几秒钟内完成,总体的性能超过了我们的预期。以下是上周交互式查询的持续百分比。我们可以看到75%的查询是可以在35秒内完成的。

Pinterest采用Redshift实现强大的交互式数据分析

因为我们成功的使用了Redshift,我们将继续将其集成到我们下一代的工具中。如果你对这一类的挑战感兴趣,并且有快速的、可扩展的方法,请加入我们的团队。

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/238021.html<

(0)
运维的头像运维
上一篇2025-04-22 18:10
下一篇 2025-04-22 18:12

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注