广告行业的大数据处理架构实践
如果您希望阅读更多的大数据机器学习的文章,请关注公众号:QCon大数据机器学习
时间:2015年5月26日 晚20点
讲师介绍:AdMaster技术副总裁,资深大数据技术专家。关注高可靠、高可用、高扩展、高性能系统服务,关注Hadoop/Storm/Spark/ElasticSearch等离线、流式及实时分布式计算技术。曾在联想研究院、百度基础架构部、Carbonite China工作;拥有超过10年云存储、云计算开发及架构工作经验,多年Hadoop实战经验,专注于分布式存储、分布式计算、大数据分析等方向,有多个发明专利,《一种分布式文件系统及其数据访问方法》和《一种数据备份的版本管理方法及装置》等。曾多次被CSDN、51CTO、IT168、InfoQ、阿里技术邀请为嘉宾分享Hadoop大数据在互联网的应用。
内容大纲:
(1)、混合异构数据介绍
(2)、混合异构数据平台架构
(3)、混合异构数据分析
(4)、广告数据平台与混合异构数据的融合
(5)、广告反作弊实践分析
(6)、AdMaster数据处理平台架构实践
======讲座实录======
大家晚上好,非常感谢大家的支持。
这是今天我分享的提纲,如果后面大家有问题可以再增加的。谢谢!
首先我们来看看混合异构数据的特点,最重要的两个特点是混合异构数据具有不同的数据类型以及用户有着不同的访问速度需求。
大家看到我给混合异构数据进行了一个简单分类,分为在线数据和离线数据,中间是用虚线分开,意思是说他们没有严格意义的划分。最重要的看需求来切分。
接下来我们来看看混合异构数据的流程,首先我们先来看很重要的部分-数据采集
数字、字符等称为格式化数据;
文本、图形、图像、声音、视频等称为非格式化数据;
融合分析这些数据的第一步是数据的预处理,传统企业信息系统中ETL是群内各位最熟悉的一种预处理过程。当我们进入大数据之后,仅仅进行数据的抽取、转换和加载往往会带来灾难,我们必须花费很大的努力去做数据清洗,确保宝贵的大数据算力和存储资源用在了有价值的分析计算之上。
这是混合异构数据平台的一般架构。
咱们群里对此系统应该都非常熟悉了,这里重点说两个系统一个是Flink,一个Elasticsearch。
Flink是一个高效、分布式、基于Java实现的通用大数据分析引擎,它具有分布式 MapReduce一类平台的高效性、灵活性和扩展性以及并行数据库查询优化方案,它支持批量和基于流的数据分析,且提供了基于Java和Scala的API。
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
接下来我给大家介绍广告数据平台与混合异构数据的融合
首先我们来看看广告营销数据的一些概念
我们收到的广告来源主要有展示广告,各种SNS,以及搜索引擎等
我们一般分两大类,一个是全流程营销,一个实时竞价营销。
RTB(Real-Time Bidding) 实时竞价,是一种利用第三方技术在数以百万计的网站上针对每一个用户展示行为进行评估以及出价的竞价技术,它的核心是DSP平台(需求方平台)。
Ad Exchange 是互联网广告交易平台,像股票交易平台一样,实现以每个用户为单位的竞价交易,AdExchange联系的是广告交易的买方和卖方,也就是广告主方和广告位拥有方。
DSP(Demand-Side Platform) 即需求方平台。它是一个广告主服务平台,广告主可在DSP平台上设置广告的目标受众、投放地域、广告出价等等。
SSP(Sell-Side Platform) 即供应方平台。能够让出版商也介入广告交易,从而使它们的库存广告可以获得较高的单位展示费用和售出率,从而实现收益最大化。
DMP(Data-Management Platform) 数据管理平台,是把分散的第一、第三方数据进行整合纳入统一的技术平台,并对这些数据进行标准化和细分,从而把这些细分结果推向现有的互动营销环境里。
上面图是各个部分的关系,出版商和广告主是核心人物
接下来我给大家讲几个广告里结算的方式:
1.CPM(Cost Per Mille,或者Cost Per Thousand;CostPer Impressions)这是听的最多的。
大家注意,这里M不是指Million。是指千人成本。
2.CPC(Cost Per Click;Cost Per ThousandClick-Through) 按点击计费。
3.CPA(Cost Per Action)按广告投放实际效果计费。
当然还有CPV,CPD,CPS等等,这里我就不详细说了。
我们了解到广告精准投放主要是指3W原则
而要做这样的效果主要是由以下方法来分析的
其实这是一个典型的推荐系统的流程。
而主要用到的方法是如下:
核心算法主要用到有SVM,自然语言处理,聚类分析,回归分析,时间序列分析。
举一个时间序列:同一个人在不同的时间段具有不同的角色,举例子一个男人在上班的时候是职员,回家后就是父亲的角色了。如果在上班的时候你给他推荐儿童用品,他一般不会购买的,但回家后你再推荐他就可能会购买了。
广告数据的数据类型多样,算法以及时效也多种,跟混合异构数据架构是融合在一起的。
所以接下来我们看看系统里用的最多的分析方式:
对于OLAP,百度大数据部,阿里的ADS等都在追求在1000亿级数据时候实现秒级查询。
架构跟以前都有很大不一样的,最重要有一块都是基于SSD来做的。
由于昨天看到有同学在问反作弊的问题,我这里特地加了一节《广告反作弊实践分析》
我们总结有两个词无中生有,鱼目混珠。
所以基于上面两大类我们有如下方法的区分是否作弊:
细化一下主要是URL,时间,地域,频次,行为等方法来识别。
前面讲了那么多理论,接下来以AdMaster的数据分析为例给大家介绍一下数据的采集、清洗、存储、分析、展现等整个流程。
由于中国的基础网络环境的互联互通还不完善,各类营销数据的产生环境也相对纷乱,因此AdMaster在国内首先部署了多点分布式数据采集架构。多点分布式采集架构的难点在于调度策略,大数据时代的负载均衡调度已经不仅仅是DNS轮询或者传统的多机热备,我们还通过一些机器学习的方法预测潜在的并发突增,通过7层数据包的解析在链路物理层开始对数据异常模式进行学习和识别,从而动态调度、配置负载均衡策略,提高数据质量降低误差。AdMaster在这个领域的思路与 软件定义网络SDN 不谋而合。
给大家分享几个做WebService系统优化的几个点:cat /proc/sys/net/ipv4/tcp_mem
cat /proc/net/sockstat
cat /proc/sys/net/ipv4/tcp_max_orphans
net.netfilter.nf_conntrack_max
net.netfilter.nf_conntrack_tcp_timeout_established
举例来说当你看到/var/log/message报kernel: Out of socket memory这样的错误。
一般通过如下方法解决:cat /proc/net/sockstat
sockets: used 16886
TCP: inuse 82422 orphan 65658 tw 2094alloc 82426 mem 3213
UDP: inuse 1 mem 0
RAW: inuse 0
FRAG: inuse 0 memory 0
看具体哪个值需要调整我们才去修改系统内核参数。
广告主在营销和运营中产生了大量的数据,数据来自于广告投放、搜索引擎、到站访问、社交媒体、电商客服等数据。随着移动互联网的出现,未来诸如门店、渠道、会员、折扣、调研等线下的数据也会接入线上,这些数据过去出于散落在各处的状态。AdMaster希望协助广告主将这些数据统一采集、清洗、存储并分析。
这里重点提一下Redis和MongoDB的存储我们由原来的SATA硬盘全部换成了SSD硬盘。
这是我们基于Hadoop自研发的ADH版本,专门针对广告营销数据行业的。
由于每天新增 5TB 级数据,每天对千亿条记录进行几千种维度的计算
这里我给大家介绍几个对Hadoop优化的几个重要参数:/sys/kernel/mm/redhat_transparent_hugepage/enabled
/sys/kernel/mm/redhat_transparent_hugepage/defrag
dfs.socket.timeout
dfs.datanode.max.xcievers
dfs.datanode.socket.write.timeout
dfs.namenode.handler.count
在线数据分析里我给大家介绍一个非常成功的案例就是AdMaster给可口可乐做的“昵称瓶”活动
大家可能都了解在2013年,可口可乐出过一批带各式昵称的可乐。像“高富帅”、“白富美”、“月光族”、“喵星人”等。
AdMaster主要通过捕捉社交媒体过亿数据,提取最频繁使用的热词,然后从多个维度进行定量比较(例如声量、互动性以及发帖率),初步选出300个热词。
AdMaster帮助可口可乐全程监测了”昵称瓶”在社交媒体上的表现,分析数据显示,在这次的夏季活动中,社交元素由始至终进行了完整的贯穿。归功于社会化媒体的“滚雪球式”传播,广告宣传达到了近20亿次,吸引了超过100万个关键意见领袖自发代表品牌传播这些热词。在参与本次活动的人群中,仅新浪微博上,36.9%的人觉得可乐非常亲民可爱,更有25%的人直接表达了自己购买可乐的意愿。相比普通的活动,这种比例是非常高的。
从销售结果来说,这次“接地气”的活动完美收官。据可口可乐(中国)2013年6月初到7月底的销售统计数据,昵称装可口可乐的销量较去年同期增长两成,超出了此前预期制定的10%的销量增长目标。
这个案例具体用到如下模型:
人群管理通过打标签、标准化、多维细分,最后通过Lookalike辐射到更多受众
这是AdMaster常见的应用场景。这是一个我们将文本自然语言数据和广告和站点访问日志结合的应用,用于提取匿名用户的访问浏览兴趣,并针对页面的内容进行关键词的抽取。
在提取了大量用户的访问浏览兴趣之后,并配合调研、社交和电商等基础数据,我们可以通过聚类的方法,将类似的访问者进行多个维度的切分,并且预估用户潜在的兴趣爱好和需求。一些广告主已经逐渐意识到受众细分的重要性,他们也提供一些脱敏的CRM数据,在和AdMaster采集的数据进行连接后,更好地优化受众的分类模型。
数据分析出来后,数据可视化显得就非常重要了:
主要有这三方面:1、数据呈现方式
2、展示层与数据层松耦合,多种数据源接入
3、极高的可靠性和容错机制
最后讲大数据都会提到数据隐私问题,我给大家分享AdMaster给出的一个方式:
核心在于找一个可信的第三方数据托管
大家都是把通过SHA2不可逆的方式把数据上传至第三方数据,计算完各自把数据报表取回后,将放在第三方的数据彻底销毁。
好的,刚好一小时,欢迎大家提问和指正。谢谢!
==========问答时间==========
Q1.反作弊主要还是规则引擎吗?有没有用到机器学习方面的算法?
Answer:
都有的,我们有数据模型团队(有专门的研究院算法团队),通过我们已有样本库通过机器学习来计算分析,并且还用到了GPU。
Q2.ADH的数据任务调度系统,可以介绍下大概怎样调度的嘛?
Answer:
通过下面三个方面来调度
A、Job 配额计算、配额查询
B、项目的配额分配和更新
C、查询任务优先级管理
@小海菜 还不完全是的。我们内部会把CPU、内存、硬盘、带宽、时间等各种参数统一一种方式进行配额分配
@Ryan_Y不是指的container,是指的我们自己将CPU、内存、硬盘、带宽、时间、优先级等换算成的一种资源,有点类似于积分的概念,任务要跑的快,消耗的资源(积分)就大。
Q3.在展示层,部分指标数据来自异步离线计算结果部分来自事实计算,如何能统一展示不让用户有误解呢,比如点击数100实时计算的,但是展示数离线计算还比较延迟可能显示20这样用户看到数据会有疑惑,还请老师给个方向
Answer:
这个问题很不错。目前我们用流式计算来解决,但是如果数据分布在全国各地,需要把数据同步到中心机房再统一计算就会出现这样的问题。所以我们需要将同步速度提高,如通过UDT的传输方式解决公网的问题,这样才能从根本解决问题。如果只是在展示层做,有一个小方法就是将时间尺度延后一定时间,看起来还是连续的,只时数据整个延迟一些。
Q4. 大家都是把通过SHA2不可逆的方式把数据上传至第三方数据,计算完各自把数据报表取回后,将放在第三方的数据彻底销毁。 ==> 难道存储和计算都是在第3方平台做的?
Answer:
是加密脱敏后将需要的数据存储在第3方平台,用第3方的计算平台的,双方不拥有对方的数据源。
Q5. admaster是如何采集社交媒体数据的?是有商业接口还是模拟登陆采集页面?是否需要遵循对方的robots.txt协议?
Answer:
微博我们用的是商业接口,我们跟微博是高级合作伙伴,但是像新闻、BBS这一类的我们采取的爬虫的方式来获取数据的,我们严格遵循对方的robots.txt协议。
现在 微博、论坛(如天涯)活跃度等都大不如前了,从这些点取数据下来分析,价值/意义体现在?
只是我们关注的点不一样了。
另外我们在微信这块也投入了很大资源,比如说我们在跟腾讯的广点通合作。
嗯,是有这些的,但是目前还是比较大的媒体在这方面投入资源,因为分行业了,比如说汽车之家、知乎、宝宝树一类的
Q6.一个小问题,卢用说的RDD序列化优化指的是哪方面?我最近遇到这个瓶颈,从java换成使用kyro感觉也没有多大提升Answer:
RDD序列化优化主要是指数据存储的方式根据不同应用做相就的调整。从java换成使用kyro性能没有提升,你们应用场景是计算重,还是数据交换多呢?
另外我们也正在做基于SSD的OLAP实时系统,欢迎大家一起探讨。