楼主: wangfans

高负载低延迟:动态算法+Hadoop+AWS+NoSQL解析

[复制链接]
论坛徽章:
66
现任管理团队成员
日期:2011-05-07 01:45:08版主9段
日期:2013-04-21 02:21:02ITPUB年度最佳版主
日期:2014-02-19 10:05:27ITPUB年度最佳版主
日期:2013-01-30 17:30:25ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05优秀写手
日期:2013-12-18 09:29:15元宝章
日期:2015-02-10 19:57:54金牌徽章
日期:2015-02-10 19:59:42银牌徽章
日期:2015-02-10 19:59:42铜牌徽章
日期:2015-02-10 19:59:41
11#
 楼主| 发表于 2013-4-3 11:05 | 只看该作者
该架构具有三个主要部分:

数据存储:用户保持原始数据(信用卡交易)和得到的Voldemort商店。
数据处理:Hadoop的工作流程在EMR上运行,执行所有计算并通过Voldemort创建所需要的数据存储。
数据服务:一个Voldemort集群从数据处理层提供预先计算好的数据。

使用道具 举报

回复
论坛徽章:
66
现任管理团队成员
日期:2011-05-07 01:45:08版主9段
日期:2013-04-21 02:21:02ITPUB年度最佳版主
日期:2014-02-19 10:05:27ITPUB年度最佳版主
日期:2013-01-30 17:30:25ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05优秀写手
日期:2013-12-18 09:29:15元宝章
日期:2015-02-10 19:57:54金牌徽章
日期:2015-02-10 19:59:42银牌徽章
日期:2015-02-10 19:59:42铜牌徽章
日期:2015-02-10 19:59:41
12#
 楼主| 发表于 2013-4-3 11:05 | 只看该作者
每一天,银行上传在那一天发生的所有交易到S3上的一个文件夹中。这可以让我们保留所有的历史数据——每天所有的信用卡执行的交易。所有的这些数据都被输入处理层,所以我们每天都会重新计算一切,之后再处理这些数据,我们就能够非常灵活。如果需求变更或如果我们找到一个愚蠢的错误,我们只需要在下一批中更新项目代码和所有的固定数据就可以了。这让我们作出了一个开发的决定:

使用道具 举报

回复
论坛徽章:
66
现任管理团队成员
日期:2011-05-07 01:45:08版主9段
日期:2013-04-21 02:21:02ITPUB年度最佳版主
日期:2014-02-19 10:05:27ITPUB年度最佳版主
日期:2013-01-30 17:30:25ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05优秀写手
日期:2013-12-18 09:29:15元宝章
日期:2015-02-10 19:57:54金牌徽章
日期:2015-02-10 19:59:42银牌徽章
日期:2015-02-10 19:59:42铜牌徽章
日期:2015-02-10 19:59:41
13#
 楼主| 发表于 2013-4-3 11:05 | 只看该作者
一个简化代码的基础架构
灵活性和适应性的变化
易于操作的人为错误(刚刚修复的错误,并重新启动的过程)

使用道具 举报

回复
论坛徽章:
66
现任管理团队成员
日期:2011-05-07 01:45:08版主9段
日期:2013-04-21 02:21:02ITPUB年度最佳版主
日期:2014-02-19 10:05:27ITPUB年度最佳版主
日期:2013-01-30 17:30:25ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05优秀写手
日期:2013-12-18 09:29:15元宝章
日期:2015-02-10 19:57:54金牌徽章
日期:2015-02-10 19:59:42银牌徽章
日期:2015-02-10 19:59:42铜牌徽章
日期:2015-02-10 19:59:41
14#
 楼主| 发表于 2013-4-3 11:05 | 只看该作者
每天,控制器都会在EMR上启动一个新的Hadoop集群以及启动处理流程。这个流程由约16组MapReduce工作组成,计算各种方案。最后的一部分流程(Voldemort索引)负责构建稍后会部署到Voldemort的数据存储文件。一旦流程结束,得出的数据存储文件就会上传到S3上。控制器关闭Hadoop集群,并发送一个部署请求给Voldemort。然后,Voldemort会从S3上下载新的数据存储,并执行一个热交换,完全取代旧的数据。

使用道具 举报

回复
论坛徽章:
66
现任管理团队成员
日期:2011-05-07 01:45:08版主9段
日期:2013-04-21 02:21:02ITPUB年度最佳版主
日期:2014-02-19 10:05:27ITPUB年度最佳版主
日期:2013-01-30 17:30:25ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05优秀写手
日期:2013-12-18 09:29:15元宝章
日期:2015-02-10 19:57:54金牌徽章
日期:2015-02-10 19:59:42银牌徽章
日期:2015-02-10 19:59:42铜牌徽章
日期:2015-02-10 19:59:41
15#
 楼主| 发表于 2013-4-3 11:05 | 只看该作者
技术

Hadoop和Pangool

整个分析和处理流程使用Pangool Jobs在Hadoop基础上。这给我们带来了良好的平衡性、灵活性和敏捷性。元组的使用使我们在流程之间使用简单的数据类型(int、string)传送信息,我们可以把其他复杂对象(如柱状图)与他们自己的自定义进行序列化。

而且,因为Pangool仍然是一个低级别API,我们可以在需要时细调大量单个作业。

使用道具 举报

回复
论坛徽章:
66
现任管理团队成员
日期:2011-05-07 01:45:08版主9段
日期:2013-04-21 02:21:02ITPUB年度最佳版主
日期:2014-02-19 10:05:27ITPUB年度最佳版主
日期:2013-01-30 17:30:25ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05优秀写手
日期:2013-12-18 09:29:15元宝章
日期:2015-02-10 19:57:54金牌徽章
日期:2015-02-10 19:59:42银牌徽章
日期:2015-02-10 19:59:42铜牌徽章
日期:2015-02-10 19:59:41
16#
 楼主| 发表于 2013-4-4 15:50 | 只看该作者

使用道具 举报

回复
论坛徽章:
66
现任管理团队成员
日期:2011-05-07 01:45:08版主9段
日期:2013-04-21 02:21:02ITPUB年度最佳版主
日期:2014-02-19 10:05:27ITPUB年度最佳版主
日期:2013-01-30 17:30:25ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05优秀写手
日期:2013-12-18 09:29:15元宝章
日期:2015-02-10 19:57:54金牌徽章
日期:2015-02-10 19:59:42银牌徽章
日期:2015-02-10 19:59:42铜牌徽章
日期:2015-02-10 19:59:41
17#
 楼主| 发表于 2013-4-4 15:50 | 只看该作者
Voldemort是一个分布式键-值(Key-value)存储系统,是亚马逊Dynamo的一个开源克隆。

Voldemort背后的主要想法是在组块中分隔数据。每个组块都被复制,并担任Voldemort集群的节点。每个Voldemort守护进程都能够路由查询节点,以保持一个特定的键值。

使用道具 举报

回复
论坛徽章:
66
现任管理团队成员
日期:2011-05-07 01:45:08版主9段
日期:2013-04-21 02:21:02ITPUB年度最佳版主
日期:2014-02-19 10:05:27ITPUB年度最佳版主
日期:2013-01-30 17:30:25ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05优秀写手
日期:2013-12-18 09:29:15元宝章
日期:2015-02-10 19:57:54金牌徽章
日期:2015-02-10 19:59:42银牌徽章
日期:2015-02-10 19:59:42铜牌徽章
日期:2015-02-10 19:59:41
18#
 楼主| 发表于 2013-4-4 15:50 | 只看该作者
Voldemort支持快速读取和随机写入,但在这个项目中,我们使用Voldemort作为只读数据存储,在每个批处理过程取代所有数据组块。因为数据存储预先由Hadoop生成、查询服务不受部署过程影响。这是使用这种只读、批处理方法的优点之一。我们也改变集群拓扑结构的相当简易的方法,并可在需要的时候重新平衡数据。

使用道具 举报

回复
论坛徽章:
66
现任管理团队成员
日期:2011-05-07 01:45:08版主9段
日期:2013-04-21 02:21:02ITPUB年度最佳版主
日期:2014-02-19 10:05:27ITPUB年度最佳版主
日期:2013-01-30 17:30:25ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05优秀写手
日期:2013-12-18 09:29:15元宝章
日期:2015-02-10 19:57:54金牌徽章
日期:2015-02-10 19:59:42银牌徽章
日期:2015-02-10 19:59:42铜牌徽章
日期:2015-02-10 19:59:41
19#
 楼主| 发表于 2013-4-4 15:50 | 只看该作者
Voldemort提供了一个Hadoop的MapReduce作业,创建数据存储在一个分布式集群。每数据块仅仅是是一个Berkeley DB的B树。

Voldemort的接口是TCP,但我们想使用HTTP服务数据。VServ是一个简单的HTTP服务器,它将传入的HTTP请求转换为Voldemort TCP请求。负载均衡器负责所有VServs之间的共享查询。

使用道具 举报

回复
论坛徽章:
66
现任管理团队成员
日期:2011-05-07 01:45:08版主9段
日期:2013-04-21 02:21:02ITPUB年度最佳版主
日期:2014-02-19 10:05:27ITPUB年度最佳版主
日期:2013-01-30 17:30:25ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05优秀写手
日期:2013-12-18 09:29:15元宝章
日期:2015-02-10 19:57:54金牌徽章
日期:2015-02-10 19:59:42银牌徽章
日期:2015-02-10 19:59:42铜牌徽章
日期:2015-02-10 19:59:41
20#
 楼主| 发表于 2013-4-4 15:50 | 只看该作者
计算的数据

统计

部分分析包含计算简单的统计数据:最大值、最小值、平均值、标准偏差、独特的技术等。他们都使用众所周知的MapReduce方法来实现,但我们也计算一些柱状图。为了有效地在Hadoop实现它们,我们创建了一个自定义的柱状图,可以在一次遍历中计算。此外通过各个业务相应的柱状图,我们只需要一步MapReduce,就可以为所有的业务做任何周期的简单统计。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表