为了分析海量元数据和信息,除了部署Cascading架构以简化MapReduce部署外,Twitter还选择了Hadoop。
由于Twitter的数百万用户能够彼此间实时分享***新闻、想法、意见,Twitter成为了目前***的通信平台。所有这些活动都为Twitter带来了海量的元数据,而这些元数据对于Twitter来说是一笔宝贵财富。为了分析这些包含了1.75亿多条日常推文和广告活动的拍字节级数据,Twitter的分析团队选择了一个大型的Hadoop商店。这些分析工作的目标是,提升企业为终端用户和广告商所提供服务的品质。
开发人员利用Hadoop将MapReduce工作定义为允许一个详细规定的任务,尤其是分析任务,能够在跨服务器环境下对大量数据进行分析。对于Twitter而言,他们所面临的一个重大挑战是,MapReduce编程需要一些除Java之外的特殊技能。开发人员要重新考虑他们的编码方式,而这正是Hadoop的优势所在。此外,Twitter的团队需要能够执行更为复杂的计算、机器学习和线性代数。对于普通的开发者来说,不经过必要的培训根本无法在MapReduce上进行编程。
驾驭Hadoop
对于任何开发人员来说,他们都希望复杂的统计功能能够变得更为易用,为此Twitter选择了Current的Cascading架构,因为该架构专门考虑到了创建大数据应用这一问题。
Cascading提供了一个针对Hadoop的更高级的抽象层,允许开发人员用不同的语言迅捷地创建可在Ruby、Scala等JVM上运行的复杂任务。这实际上打破了技术壁垒,因此让Twitter的开发人员能够更为广泛地使用Hadoop。
目前,Cascading已经能够让Twitter的开发人员用他们自己喜欢的编程语言创建复杂的数据处理工作流,并且能够很方便地升级以处理数以拍计的数据。Twitter已经与Concurrent签署了一份捐赠协议。这样一来,Twitter的开源贡献内容可以很方便地应用在Cascading的项目中。
深度使用
目前Twitter的三个团队正在结合编程语言使用Cascading。具体的分工是,营收团队使用的是Scala,发布者分析团队使用的是Clojure,分析团队使用的是Jython。营收团队可以通过分析广告内容和Twitter话题等因素帮助广告商决定哪些广告收效***,以帮助增加客户转化率。他们编写了针对Cascading的开源Scala应用程序接口Scalding,因此开发人员能够在Scala上编程并在Hadoop上运行它们。
发布者分析团队可以帮助网站管理员搞清楚Twitter用户是如何处理涉及品牌、网站和网络公众人物的信息。他们创建并公布了以Clojure为基础的语言——Cascalog的源代码。Cascalog能够将Cascading作为任务执行引擎。
分析团队的任务则是理解Twitter用户的活动。他们需要一种方法,以便更容易地对跟在其他用户之后的用户、或是跟在同类用户之后的用户进行精密而复杂地分析。他们为此创建了PyCascading,以控制来自Python的所有数据处理工作流。
在这些案例中,Cascading能够让开发人员避开编写、优化和执行MapReduce任务的烦扰。同时,它们还允许每个团队高效而迅捷地传输他们所需的复杂信息与功能。这些结果能够提供重要的洞察力,帮助Twitter持续提升自己的服务品质。