海量 数据分析架构
提纲 传统的BI数据分析系统介绍 米国互联网企业的工具和架构 AdMaster的业务特性和数据分析架构 -- 中小企业快速搭建一个海量数据分析平台
传统BI产品的组成 Data Warehousing Tool ETL Tool OLAP Server Reporting Tool Data Mining Tool 权限, 图形化, 调度器 电子产品 日用品 书籍 江苏 上海 浙江 2010一季度 2010一季度 2010一季度
商业 OLAP Server Oracle Hyperion Essbase IBM Cognos Enterprise Server(MOLAP) SAP BO Analysis SAS DW MicroStrategy Intelligence Server Microsoft Analysis Service
开源的 BI 工具:Pentaho Solution & Action ETL:Kettle OLAP:Mondrian JFreeReport R / RapidMiner Solution & Action
向左?向右? 软硬结合 -高性能并行计算 -硬件DSM 分布式系统 -hadoop
海量数据分析的问题和挑战 健壮性 Failover and Recovery 成本 扩展性 消除单点 低延迟
分布式数据仓库 技术: MPP+ 行列混合存储+Mapreduce EMC Greenplum Teradata Asterdata Hive(RCFile)
Google 数据分析技术列表 MapReduce GFS Bigtable Chubby Sawzall Percolator (Oceanbase) Tenzing
Facebook 数据分析技术列表 Hadoop HBase(Bigtable) Hive(HiveQL) Zookeeper(Chubby) Pig(Sawzall) Scribe Cassandra Data Freeway(Scalable Data Stream Framework) Puma(Stream Aggregation Engine) PTail Puma3 HBase Serving
Twitter 数据分析技术列表 Hadoop Storm Kestrel ElephantDB Cassandra
Admaster 业务特性 海量数据集,多个 数百个的非常常用的维度—数万种维度组合 频繁的ad hoc即席查询 数据集的数据质量差 数据集格式各样(半格式化,非格式化)
我们需要 流式计算: 并行计数 , 增量统计算法, 报警, 块计算: 全局计算 : 大部分的统计分析算法 日志采集, ETL 适用范围 流式计算: 并行计数 , 增量统计算法, 报警, 日志采集, ETL 块计算: 适用范围 Memory Complex Aggregations and Iteration 比如 unique user count, most frequent elements, ML 全局计算 : 大部分的统计分析算法
老系统的问题 ETL 的难度 汇总到HDFS需要较长时间 Hadoop poor latency
建立分析系统 Redis 做join和Column Family Store系统 (HBase Cassandra)做join的区 别 Storm -日志汇总+ETL Storm -DRPC Hadoop Redis –关联多个大数据集 Redis 做join和Column Family Store系统 (HBase Cassandra)做join的区 别 1234 choky Cookie 1 15 10001 25 Cookie 1 Page1 12-02-24 http://w 不错 8989 Cookie 2 Cookie 2 15 10001 25 page2 http://w 1234 blade 50$ Cookie 3 Cookie 3 15 10001 25 Page1 12-02-25 30001 http://w 差评 招商银
AdMaster Infrastructure 采集数据 Redis Cookie Service Storm ETL Storm+RamFS Hadoop 实时报警 MySQL MySQL 用户 实时复杂分析 MongoDB offline分析结果
遇到的坑 Hadoop Job中, Map和Reduce的个数的动态分配 Storm内存泄漏Bug Redis 数据结构要设计的尽可能节省内存 优化计算瓶颈,消除短板
一些建议 使用Hadoop 1.0之后的版本,性能大大提升 先尝试Pig , 然后Cascading, 最后Java MapReduce 使用 Lzo 压缩, 公平调度器 使用Storm 0.70之后的版本,解决了重要Bug 更好的JVM:Zing or JRocket, 选用正确的GC,并监控 根据业务正确选用NoSQL