云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

分布式数据库_web中间件_免费领

小七 141 0

Sharethrough使用Apache Spark流来优化实时竞价

我们很高兴看到我们在Cloudera的朋友们继续宣传apachespark,他们最新的博客文章是一个很好的例子,说明用户如何利用Spark流实时解决复杂问题。感谢Sharethrough的数据基础设施工程师Russell Cardullo和Michael Ruggiero在Cloudera博客上的这篇客座文章,我们在下面交叉发布了这篇文章在Sharethrough,它提供了一个广告交换的feed广告,在过去的三年里,我们一直在运行CDH(从Amazon EMR迁移过来之后),主要用于ETL。随着2013年初推出我们的exchange平台,以及我们希望实时优化内容分发的愿望,我们的需求发生了变化,但CDH仍然是我们基础架构的重要组成部分。2013年年中,我们开始研究从我们的管道访问点击流数据的基于流的方法。我们扪心自问:与其通过更频繁地运行那些更大的批处理来"预热我们的冷通道",不如给我们的开发人员一个针对增量、小批量处理而优化的编程模型和框架,同时继续依赖Cloudera平台吗?理想情况下,我们的工程团队专注于数据本身,而不是担心诸如整个管道的状态一致性或故障恢复之类的细节。火花(和火花流)apachespark是一个用于大规模数据处理的快速通用框架,其编程模型支持使用传统MapReduce构建更复杂或不太可行的应用程序。(Spark在Cloudera Enterprise 5中提供,并且已经支持与CDH 4.4及更高版本一起使用。)通过内存中的持久存储抽象,Spark支持完整的MapReduce功能,而不需要像数据复制、磁盘I/O和序列化这样的长执行时间。因为Spark Streaming与Spark的批处理和交互模式共享相同的API,所以我们现在使用Spark Streaming实时聚合业务关键数据。一个一致的API意味着我们可以在不太复杂的批处理模式下进行本地开发和测试,并使该作业在生产流中无缝地工作。例如,我们现在可以实时优化投标,使用该活动的整个数据集,而无需等待运行频率较低的ETL流完成。我们还可以进行实时实验,并在测试结果出来时对其进行测量。前后我们的批处理系统如下所示:apacheflume根据最佳HDFS块大小(64MB)将文件写入每小时的bucket。MapReduce(烫伤)作业每天安排N次。apachesqoop将结果移动到数据仓库中。延迟约1小时,加上Hadoop处理时间。Sharethrough以前的批处理数据流对于我们的特定用例,这个批处理工作流不能提供对性能数据的访问,而这些计算的结果仍然是有价值的。例如,知道客户的优化内容性能在他们的日常预算支出后为每小时4.2%,这意味着我们的广告客户得不到他们的钱的价值,我们的出版商没有看到他们需要的填补。即使批处理作业需要几分钟时间,流量的峰值也可能会减慢给定批处理作业的速度,导致它"撞上"新启动的作业。对于这些用例,流式数据流是可行的解决方案:Flume将clickstream数据写入HDFS。Spark以5秒的批量大小从HDFS读取数据。输出到键值存储,更新我们的预测模型。Sharethrough的新Spark流式数据流在这个新模型中,我们的延迟仅为Spark处理时间,而Flume将文件传输到HDFS所需的时间实际上大约为5秒。在旅途中当我们开始使用Spark流时,我们很快就发布了。为了充分利用我们新的流媒体工作,我们很快就适应了Spark编程模型。以下是我们沿途发现的一些事情:24x7流媒体应用程序的配置文件不同于每小时一次的批处理作业—您可能需要更细粒度的警报和对重复错误的更多耐心。对于流式应用程序,良好的异常处理是您的朋友。(准备回答以下问题:"如果火花接收器不可用怎么办?应用程序是否应该重试?它应该忘记丢失的数据吗?它应该提醒你吗?")花点时间根据输入验证输出。一个有状态的作业,例如,记录点击次数,可能会返回测试中意想不到的结果。确认正在序列化支持对象。scaladsl使得关闭不可序列化的变量或引用变得很容易。在我们的例子中,一个GeoCoder对象没有被序列化,我们的应用程序变得非常慢;它必须返回原始的、非分布式对象的驱动程序。您的Spark流作业的输出仅与提供Spark的队列一样可靠。如果产生队列的消息减少了,比如说,1%,那么您可能需要一个周期性的协调策略(比如将有损的"热路径"与"冷路径"持久性数据合并)。对于这些类型的合并,当您需要确定关联计算(例如计数)是准确和可靠的时,幺半群抽象非常有用。要了解更多信息,请参见Twitter的Storehaus或Oscar Boykin的"代数分析"。结论Sharethrough Engineering打算用Spark Streaming做更多的事情。我们的工程师可以交互地设计一个应用程序,批量测试它,将它转移到流媒体中,它就可以正常工作了。我们鼓励其他对解锁实时处理感兴趣的人来看看Spark流。由于简洁的Spark API,熟悉MapReduce的工程师现在可以构建流式应用程序,而不必学习全新的编程模型。Spark Streaming为您的组织提供了只有从最新数据中获得的见解,无论是以机器学习算法的形式还是以实时仪表板的形式:这取决于您!免费试用Databricks。今天就开始吧