合约广告系统-常用广告系统开源工具

常用广告系统开源工具

常用广告系统开源工具

是否可以用开源工具快速地搭建广告系统?可以肯定的说,基本是可以的。很多重要的模块,如上章所讲的architecture里的模块很多都可以借助开源工具实现。

在实际的广告系统中我们会用到很多的开源工具。下面我将分别讲述几个开源开具。基本上所有的大的广告系统公司都要使用Hadoop平台,除了google。Hadoop是广告平台中建模的基础,Hadoop有很多子项目,有的子项目与Hadoop有密切的联系,有的子项目仅是在Hadoop框架体系下深挖出来的一些Idea。简单介绍一下,Hadoop现在核心的项目只剩下来两个,HDFSMapReduce,以前Hadoop有很多子项目,中间两列以前都是Hadoop的子项目,但很多现在都已经独立出来,成为顶级项目了。Hadoop本身是一个大数据的存储和计算的平台。

图中的工具可以分为两类,一类是离线的数据处理,另一类是在线的数据处理。离线的数据处理,常用的是HBase,它是基于Hadoop的列存储数据库,并不是关系型数据库,是NoSql型数据库。和HBase功能相似的数据库有很多,比如google的BigTable,和HBase对应的HyperTable,HyperTable是c语言写的工具,效率比HBase高一些,还有Facebook开源的Cassandra。它们都是解决大数据上半结构化存储的问题,在实际的系统中都可能会用到。

oozie是把Hadoop上的流程控制工具,比如我们每天的日志处理,要等日志收到后,进行各种分析,比如有的进行CTR预测,有的进行Audience Targeting,有的交由BI系统,它们这些分析之间可能有一些依赖关系。Hadoop提供了一个管理这些依赖的工具就是oozie,oozie可以认为是比较底层的,可以用API开发的一个framework,我个人感觉是很不好用,也没看到有多少用人这个工具,但它在设计上比较完善。

Hadoop上有两个很重要的脚本语言,PigHive。它们的作用有些相似,功能都是希望将Hadoop上的非结构化的数据,可以用sql语言的方式来访问和加工。这样在拉一些简单的数据报表时,就不用写MapReduce程序去得到数据,只用写pig或hive的脚本。Pig和Hive的区别是:如果你的数据是用分隔符分好的数据,你就可以写Pig脚本直接访问了,所以用起来比较直接方便。而Hive需要预先加工,建立类似于Index的数据才可以操作。所以Pig更接近于程序员的习惯,Hive更适合做BI的习惯。

Mahout是一个在Hadoop上用Map/Reduce做数据挖掘,机器学习的工具,我个人感觉除了几个算法外,其它的算法并不太好用。但这也是机器学习算法的本质决定的,机器学习算法需要根据数据和实际情况做调整,加工,所以如果不了解内部实现,调整模型比较麻烦。

在线部分,最常用的是ZooKeeper,ZooKeeper是分布式环境下解决一致性问题的开源解决方案,它对应的是更有名的Google的Chubby。ZooKeeper和Chubby的理论基础不完全一致。Chubby是严格按照Paxos算法来实现的,Paxos是Lamport是提出的解决分布式环境下的一致性问题的一个完备的算法,而ZooKeeper是这个算法的简化版,它把Paxos简化成两段式提交后实现的一个版本,无法在理论上证明它是正确的,但实践中没有问题,这个是我们在做在线服务中经常要用到的一个工具。

Avro知道的人可能并不多,因为并不常用它,常用的是Facebook的Thrift,它解决的是分布式环境里的跨语言通信的问题,非常好用,而Avro仅是Hadoop的作者实现的一个代替产品,Google的ProtoBuffer也是类似的工具。

S4类比于更常用的Twitter的Storm,是我们上章Architecture里的流式计算平台,进行日志快速处理反馈的一个计算平台。S4是最早Yahoo!用于搜索广告系统分析目的而开发的,Storm是为了满足Twitter上一些快速的计算任务,比如快速计算Fans数,Repost数。两种有一定不同,S4主要优化的是吞吐量,它完全不用磁盘,而Storm还要用到少量的磁盘操作,因为它要保证数据的一致性,保证每一条数据至少被处理一次,但它不保证仅被处理一次。

Chuhwa对应的是Facebook的Scribe,它是上章Architecture里提到的Data Highway,它是分布式的日志收集工具,一个广告系统有很多的广告投放引擎,这些投放引擎,Data Highway准实时地把多个服务器的日志准实时地都收集到一起,准实时地投到Hadoop或是Storm上,现在还有一个常用的是Flume。

Elephant-Bird是一个有意思的小工具,它是配合Pig使用的,如果我们的系统中大量使用Thrift或是ProtoBuffer,它的结构都是序列化的,二进制的,你用Pig无法直接访问,Twitter为了解决这个问题提供了Elephant-Bird工具,使用Elephant-Bird后,Pig就可以直接访问序列化的数据了。

图中有阴影的表示是我个人感觉好用的工具,但仅代表我个人观点。在这里我也想介绍一点我个人对开源社区的一些看法,现在开源社区已经和若干年前已经完全不同,现在不再是一个质量不能保证,内容比较芜杂的环境了。原因是有很多大公司在不遗余力地在支持开源项目,比较典型的是Twitter,Yahoo!,Facebook。我们认为开源工具可选的原因是这些工具是在Twitter,Facebook这种数据量上进行验证的,而其它公司很难有真实的环境去测试这种大规模数据的,比如Facebook在测试Scribe的时候,数据达到过每秒10T,所以开源工具的质量和可靠性非常高。

跨语言服务搭建工具

在搭建一个广告系统的时候,遇到的第一个问题可能就是多模块的语言不统一,Facebook在这方面是比较开放的,它提供了一个工具Thrift,它允许工程师各自喜欢或是习惯的语言去开发,Thift就是一个跨语言服务快速搭建的工具。它的使用方法非常简单,第一步是用struct定义语言无关的通信数据结构,用IDL语言描述,比如下面的KV,它有两个字段一个是32位int类型的key,一个是string类型的value。Thrift会将IDL语言的定义转为你所需要的语言(比如c语言)的定义。

struct KV

{

1:optional i32 key=10;

2:optional string value=“x”

}

搭建服务也是在IDL文件里写,比如KVCache是存KV pair的一个服务,它有几个接口,set,get和delete,这些定义都是语言无关的,你根据定义实现自己的逻辑。

service KVCache

{

void set(1:i32 key, 2:string value);

string get(1:32 key); void delete(1:i32 key);

}

如果不是进行特殊的协议层优化,Thrift就可以满足需求了。并且它能实现结构和接口的向后兼容(backward compatible),类型的工具有Hadoop的Avro和google的ProtoBuffer。

时间: 2025-01-06 13:05:08

合约广告系统-常用广告系统开源工具的相关文章

云计算学习路线图素材课件:云计算常用的开源工具

随着互联网的高速发展以及国家政策扶持,我国云计算行业发展迅猛,云计算人才也成为稀缺高薪人才.众所周知,云计算和开源是相爱相生的关系,借助开源社区的力量,云计算技术迅速占领市场,不过2020年常用的云计算开源工具有哪些呢? 1.Kubernetes 过去两年Kuberentes已成为火爆的开源项目之一,相信在未来Kuberentes的势头会更劲,其拥有大量的扩展工具,其优势在于: 1)通过基于角色的访问控制可以更好地支持企业部署: 2)将Kuberentes从单一用户操作系统转移到Unix: 3)

秒针系统网络广告交易平台介绍

2012~2013年,还在北京秒针系统工作的时候,接触到了"网络广告交易平台"这个项目.虽说没有亲自参与这个项目的开发,但是自从了解到这个项目的存在,就非常感兴趣. 最早知道,是了解同事同学的工作,看看别人在做什么项目.   正此时,我的学习兴趣非常浓厚,这个项目的文档非常齐全,而且很有技术含量,就重点研究了下.   说到秒针,我最喜欢的地方是,SVN上有很多项目和文档,很多项目只要知道项目的英文名称,就可以down下来.文档里的信息还是很丰富的,通过以前的文档,还可以知道公司过去是怎

开发者和系统管理者最喜爱的开源工具Vim 起步学习的五个技巧

多年来,我一直想学 Vim.如今 Vim 是我最喜欢的 Linux 文本编辑器,也是开发者和系统管理者最喜爱的开源工具.我说的学习,指的是真正意义上的学习.想要精通确实很难,所以我只想要达到熟练的水平. 我使用了这么多年的 Linux ,我会的也仅仅只是打开一个文件,使用上下左右箭头按键来移动光标,切换到插入模式,更改一些文本,保存,然后退出.但那只是 Vim 的最最基本的操作.我的技能水平只能让我在终端使用 Vim 修改文本,但是它并没有任何一个我想象中强大的文本处理功能.这样我完全无法用 V

【新手实战】微信广告投放排期系统终于搞掂

出于公司自身业务需求, 要开发一个简单的广告投放排期系统,虽然没有很复杂的东西,但是也做了差不多一个星期.体会很深,学到的只是算是加固了不少,不过还需要继续努力! 知识点回顾:自定义函数的使用,利用session辨别是否管理员,sql_func.php文件中初步使用了类的模式,不过还是十分的不熟悉,感觉这套源码重写的话,还可以做的更简洁,代码可以写的更少,目标是灵活,稳定,估计还有bug,希望各位多多指教啦! 下一步需要学习的知识点:文件/图片的上传,调用,类的使用,最后就是mvc,目标:能使用

统计翻译系统中的开源工具们

(根据 计算机世界/2007年/10月/22日/第B15版 文章改编) 开源工具对统计翻译带来的意义不必多说,想必也都能体会出来.Brown等提出IBM模型是在20世纪90年代初,而IBM模型广泛使用和研究的年份竟然是1999年以后!促成这种想象的原因竟是开源工具包的出现!开源工具的出现,降低了研究的准入门槛,使得我们可以正真意义上的站在巨人的肩膀上,来做进一步的探索!感谢那些开源工具们,记住他们,利用他们,让我们的研究更上一层楼! 一.开源工具 1. 首个开源统计机器翻译工具包Egypt (包

nssm常用命令(在Windows系统下安装服务的工具)

nssm install servername //创建servername服务 nssm start servername //启动服务 nssm stop servername //暂停服务 nssm restart servername //重新启动服务 nssm remove servername //删除创建的servername服务 在Windows系统下安装服务的工具 官网网址:http://www.nssm.cc 工具下载地址:http://www.nssm.cc/downloa

大数据平台最常用的30款开源工具

大数据平台是对海量结构化.非结构化.半机构化数据进行采集.存储.计算.统计.分析处理的一系列技术平台.大数据平台处理的数据量通常是TB级,甚至是PB或EB级的数据,这是传统数据仓库工具无法处理完成的,其涉及的技术有分布式计算.高并发处理.高可用处理.集群.实时性计算等,汇集了当前IT领域热门流行的各类技术. 本文整理出了大数据平台常见的一些开源工具,并且依据其主要功能进行分类,以便大数据学习者及应用者快速查找和参考. ▲ 大数据平台常见的一些工具汇集 主要包含:语言工具类.数据采集工具.ETL工

win7系统常用命令-win7运行命令大全

http://www.01xitong.com/ 如果你是一名电脑技术员或者经常维修win7系统电脑,那么下面这些电脑常用运行命令你是否知道呢?如果不知道就跟着小编好好学习一下win7电脑常用运行命令吧! 1.cleanmgr:打开磁盘清理工具 2.compmgmt.msc:计算机管理 3.conf:启动系统配置实用程序 4.charmap:启动字符映射表 5.calc:启动计算器 6.chkdsk.exe:Chkdsk磁盘检查 7.cmd.exe:CMD命令提示符 8.certmgr.msc:

Ubuntu系统常用操作指令说明

使用U盘拷贝压缩文件 文件的压缩方法详见:3.6文件归档压缩及其释放 U盘直接插入机器USB接口,等待自动弹出窗口,在弹出窗口选择"文件->打开终端",打开的终端当前目录默认为U盘所在的目录,直接在当前目录进行拷贝的操作即可.该窗口不要关闭. 例:>cp /home/cps/package.tar . 或者>cp /home/cps/package.tar.gz . 在弹出窗口选择"文件->卸载文件卷",或者在桌面上找到U盘图标,并选中,点击