大规模数据处理

flyzhang 发表于 2008-05-28 12:08:19

根据我的经验和对US某大型网站的资料阅读,认为大规模数据处理主要可以分为两部分:
  1. 基于任务的数据文件处理
  2. 基于流的数据文件处理
  • 基于任务的数据文件处理

1.      关系型数据库群

– Share Everything
• Oracle RAC
目前广泛的应用在各大网站Web数据流分析体系中
个人观点
该模型适合性能要求非常高的OLAP操作
– Share Nothing
• PostgreSQL+PL/Proxy+PGBouncer
• Skype的应用
优点:
应用和数据库服务器结构独立。
负载均衡,失败恢复对于程序是透明的
缺点:
不能在数据分区间进行join和其它数据库操作
个人观点

该模型适合性能要求非常高的OLTP操作

2.      Map-Reduce模型

计算模型
– “分”而“治”之
先把数据分成独立互不干涉的原子单元,独立对其进行处理,从而可以让计算能够高度并行
根据处理结果,按照“key”聚类后进行“规约”计算
– Functor编程类比
• STL (C++)或者Java中对容器进行排序或者查找,在调用sort或者search算法的时候,需要实现的Comparator()就是一个 Functor,编程人员可以不用关心排序、查找的具体逻辑和算法,只需要根据自己要求定义好Comparator就可以完成排序、查找的任务了
– Map,Reduce/Combine
数据存储模型
分布式文件系统
构建于现有单机操作系统的文件系统上
通过对大文件的二次切分,然后将切分后的文件分布到系统节点上
将切分和分布的meta信息管理起来,实现一个文件读写的代理接口来提供分布式的文件服务
 
• Hadoop实现
– HDFS
– Map/Reduce
向SQL的语义融合
– Pig
– HBASE
模型的局限性
不能提供实时的操作
• Hadoop实现还不能提供分布式的流服务,只能通过独立任务提交的方式完成
 
  • 基于流的数据文件处理
生产流水线
数据的前期处理(主要是ETL和简单聚集操作)和生产流水线操作非常类似:
数据单元间的处理是独立的
对于处理的每一阶段,都是一个独立且固定的生产工序
基于流的数据收集

    Apache+Spread 基于广播的实时收集方式

StreamDB
流数据库的目的
近实时的进行大量数据的聚集操作,并展现
一个实现

基于PG 7.4 的Stream Database :TelegraphCQ(from 伯克利大学)

  • 我们面临的问题
缺乏大吞吐量、高扩展性的“单元数据块流”的并行独立处理框架,个人认为可以和OLTP需求类比
缺乏大吞吐量的OLAP工具
 
个人观点
大规模的数据处理可以分为三个阶段:
上下文无关的单元数据块处理+简单聚集汇总处理
复杂的数据块间的关联分析和关系抽取
对抽样数据集进行复杂的数据挖掘
可选择的工具:
• Hadoop或pgCluster
• RDB(Oracle RAC, postgreSQL……)
专业的数据挖掘工具(SPSS、SAS等)
核心:
数据仓库模型和计算在不同技术间的合理分布:
通用的分布式处理框架完成计算繁重但相对固定的算法,关系型数据库完成计算量适中但逻辑复杂并更新频繁的算法
关键词(Tag): map reduce hadoop pgcluster


收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定