- 浏览: 281798 次
- 性别:
- 来自: 厦门
文章分类
最新评论
-
chenxliang:
2016年10月26、27日,上海浦东,Postgres中国用 ...
用JDBC连接Postgres(Postgres学习笔记1) -
cuiran:
不错,讲的很详细。
web.xml 中的listener、 filter、servlet 加载顺序及其详解 -
i_am_birdman:
PostgreSQL的管理启动服务pg_ctl -D /pat ...
PostgreSql 数据库备份恢复 删除 建立 -
i_am_birdman:
songshuang 写道现在觉悟也不晚!加油!
加油呵呵
人生规划啊 -
songshuang:
现在觉悟也不晚!加油!
人生规划啊
http://cloud.csdn.net/a/20110815/303101.html
随着互联网、移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海量数据的时代,数据调查公司IDC预计2011年的数据总量将达到1.8万亿GB,对这些海量数据的分析已经成为一个非常重要且紧迫的需求。
谢超 Admaster数据挖掘总监,云计算实践者,10年数据仓库和数据挖掘咨询经验,现专注于分布式平台上的海量数据挖掘和机器学习。 |
作为一家互联网数据分析公司,我们在海量数据的分析领域那真是被“逼上梁山”。多年来在严苛的业务需求和数据压力下,我们几乎尝试了所有可能的大数据分析方法,最终落地于Hadoop平台之上。
Hadoop在可伸缩性、健壮性、计算性能和成本上具有无可替代的优势,事实上已成为当前互联网企业主流的大数据分析平台。本文主要介绍一种基于Hadoop平台的多维分析和数据挖掘平台架构。
大数据分析的分类
Hadoop平台对业务的针对性较强,为了让你明确它是否符合你的业务,现粗略地从几个角度将大数据分析的业务需求分类,针对不同的具体需求,应采用不同的数据分析架构。
- 按照数据分析的实时性,分为实时数据分析和离线数据分析两种。
实时数据分析一般用于金融、移动和互联网B2C等产品,往往要求在数秒内返回上亿行数据的分析,从而达到不影响用户体验的目的。要满足这样的需求,可以采用精心设计的传统关系型数据库组成并行处理集群,或者采用一些内存计算平台,或者采用HDD的架构,这些无疑都需要比较高的软硬件成本。目前比较新的海量数据实时分析工具有EMC的Greenplum、SAP的HANA等。
对于大多数反馈时间要求不是那么严苛的应用,比如离线统计分析、机器学习、搜索引擎的反向索引计算、推荐引擎的计算等,应采用离线分析的方式,通过数据采集工具将日志数据导入专用的分析平台。但面对海量数据,传统的ETL工具往往彻底失效,主要原因是数据格式转换的开销太大,在性能上无法满足海量数据的采集需求。互联网企业的海量数据采集工具,有Facebook开源的Scribe、LinkedIn开源的Kafka、淘宝开源的Timetunnel、Hadoop的Chukwa等,均可以满足每秒数百MB的日志数据采集和传输需求,并将这些数据上载到Hadoop中央系统上。
- 按照大数据的数据量,分为内存级别、BI级别、海量级别三种。
这里的内存级别指的是数据量不超过集群的内存最大值。不要小看今天内存的容量,Facebook缓存在内存的Memcached中的数据高达320TB,而目前的PC服务器,内存也可以超过百GB。因此可以采用一些内存数据库,将热点数据常驻内存之中,从而取得非常快速的分析能力,非常适合实时分析业务。图1是一种实际可行的MongoDB分析架构。
MongoDB大集群目前存在一些稳定性问题,会发生周期性的写堵塞和主从同步失效,但仍不失为一种潜力十足的可以用于高速数据分析的NoSQL。
此外,目前大多数服务厂商都已经推出了带4GB以上SSD的解决方案,利用内存+SSD,也可以轻易达到内存分析的性能。随着SSD的发展,内存数据分析必然能得到更加广泛的
应用。
BI级别指的是那些对于内存来说太大的数据量,但一般可以将其放入传统的BI产品和专门设计的BI数据库之中进行分析。目前主流的BI产品都有支持TB级以上的数据分析方案。种类繁多,就不具体列举了。
海量级别指的是对于数据库和BI产品已经完全失效或者成本过高的数据量。海量数据级别的优秀企业级产品也有很多,但基于软硬件的成本原因,目前大多数互联网企业采用Hadoop的HDFS分布式文件系统来存储数据,并使用MapReduce进行分析。本文稍后将主要介绍Hadoop上基于MapReduce的一个多维数据分析平台。
- 数据分析的算法复杂度
根据不同的业务需求,数据分析的算法也差异巨大,而数据分析的算法复杂度和架构是紧密关联的。举个例子,Redis是一个性能非常高的内存Key-Value NoSQL,它支持List和Set、SortedSet等简单集合,如果你的数据分析需求简单地通过排序,链表就可以解决,同时总的数据量不大于内存(准确地说是内存加上虚拟内存再除以2),那么无疑使用Redis会达到非常惊人的分析性能。
还有很多易并行问题(Embarrassingly Parallel),计算可以分解成完全独立的部分,或者很简单地就能改造出分布式算法,比如大规模脸部识别、图形渲染等,这样的问题自然是使用并行处理集群比较适合。
而大多数统计分析,机器学习问题可以用MapReduce算法改写。MapReduce目前最擅长的计算领域有流量统计、推荐引擎、趋势分析、用户行为分析、数据挖掘分类器、分布式索引等。
面对大数据OLAP分析的一些问题
OLAP分析需要进行大量的数据分组和表间关联,而这些显然不是NoSQL和传统数据库的强项,往往必须使用特定的针对BI优化的数据库。比如绝大多数针对BI优化的数据库采用了列存储或混合存储、压缩、延迟加载、对存储数据块的预统计、分片索引等技术。
Hadoop平台上的OLAP分析,同样存在这个问题,Facebook针对Hive开发的RCFile数据格式,就是采用了上述的一些优化技术,从而达到了较好的数据分析性能。如图2所示。
然而,对于Hadoop平台来说,单单通过使用Hive模仿出SQL,对于数据分析来说远远不够,首先Hive虽然将HiveQL翻译MapReduce的时候进行了优化,但依然效率低下。多维分析时依然要做事实表和维度表的关联,维度一多性能必然大幅下降。其次,RCFile的行列混合存储模式,事实上限制死了数据格式,也就是说数据格式是针对特定分析预先设计好的,一旦分析的业务模型有所改动,海量数据转换格式的代价是极其巨大的。最后,HiveQL对OLAP业务分析人员依然是非常不友善的,维度和度量才是直接针对业务人员的分析语言。
而且目前OLAP存在的最大问题是:业务灵活多变,必然导致业务模型随之经常发生变化,而业务维度和度量一旦发生变化,技术人员需要把整个Cube(多维立方体)重新定义并重新生成,业务人员只能在此Cube上进行多维分析,这样就限制了业务人员快速改变问题分析的角度,从而使所谓的BI系统成为死板的日常报表系统。
使用Hadoop进行多维分析,首先能解决上述维度难以改变的问题,利用Hadoop中数据非结构化的特征,采集来的数据本身就是包含大量冗余信息的。同时也可以将大量冗余的维度信息整合到事实表中,这样可以在冗余维度下灵活地改变问题分析的角度。其次利用Hadoop MapReduce强大的并行化处理能力,无论OLAP分析中的维度增加多少,开销并不显著增长。换言之,Hadoop可以支持一个巨大无比的Cube,包含了无数你想到或者想不到的维度,而且每次多维分析,都可以支持成千上百个维度,并不会显著影响分析的性能。
因此,我们的大数据分析架构在这个巨大Cube的支持下,直接把维度和度量的生成交给业务人员,由业务人员自己定义好维度和度量之后,将业务的维度和度量直接翻译成MapReduce运行,并最终生成报表。可以简单理解为用户快速自定义的“MDX”(多维表达式,或者多维立方体查询)语言→MapReduce的转换工具。同时OLAP分析和报表结果的展示,依然兼容传统的BI和报表产品。如图3所示。
图3可以看出,在年收入上,用户可以自己定义子维度。另外,用户也可以在列上自定义维度,比如将性别和学历合并为一个维度。由于Hadoop数据的非结构化特征,维度可以根据业务需求任意地划分和重组。
一种Hadoop多维分析平台的架构
整个架构由四大部分组成:数据采集模块、数据冗余模块、维度定义模块、并行分析模块。如图4所示。
数据采集模块采用了Cloudera的Flume,将海量的小日志文件进行高速传输和合并,并能够确保数据的传输安全性。单个collector宕机之后,数据也不会丢失,并能将agent数据自动转移到其他的colllecter处理,不会影响整个采集系统的运行。如图5所示。
数据冗余模块不是必须的,但如果日志数据中没有足够的维度信息,或者需要比较频繁地增加维度,则需要定义数据冗余模块。通过冗余维度定义器定义需要冗余的维度信息和来源(数据库、文件、内存等),并指定扩展方式,将信息写入数据日志中。在海量数据下,数据冗余模块往往成为整个系统的瓶颈,建议使用一些比较快的内存NoSQL来冗余原始数据,并采用尽可能多的节点进行并行冗余;或者也完全可以在Hadoop中执行批量Map,进行数据格式的转化。
维度定义模块是面向业务用户的前端模块,用户通过可视化的定义器从数据日志中定义维度和度量,并能自动生成一种多维分析语言,同时可以使用可视化的分析器通过GUI执行刚刚定义好的多维分析命令。
并行分析模块接受用户提交的多维分析命令,并将通过核心模块将该命令解析为Map-Reduce,提交给Hadoop集群之后,生成报表供报表中心展示。
核心模块是将多维分析语言转化为MapReduce的解析器,读取用户定义的维度和度量,将用户的多维分析命令翻译成MapReduce程序。核心模块的具体逻辑如图6所示。
图6中根据JobConf参数进行Map和Reduce类的拼装并不复杂,难点是很多实际问题很难通过一个MapReduce Job解决,必须通过多个MapReduce Job组成工作流(WorkFlow),这里是最需要根据业务进行定制的部分。图7是一个简单的MapReduce工作流的例子。
MapReduce的输出一般是统计分析的结果,数据量相较于输入的海量数据会小很多,这样就可以导入传统的数据报表产品中进行展现。
结束语
当然,这样的多维分析架构也不是没有缺点。由于MapReduce本身就是以蛮力去扫描大部分数据进行计算,因此无法像传统BI产品一样对条件查询做优化,也没有缓存的概念。往往很多很小的查询需要“兴师动众”。尽管如此,开源的Hadoop还是解决了很多人在大数据下的分析问题,真可谓是“功德无量”。
Hadoop集群软硬件的花费极低,每GB存储和计算的成本是其他企业级产品的百分之一甚至千分之一,性能却非常出色。我们可以轻松地进行千亿乃至万亿数据级别的多维统计分析和机器学习。
6月29日的Hadoop Summit 2011上,Yahoo!剥离出一家专门负责Hadoop开发和运维的公司Hortonworks。Cloudera带来了大量的辅助工具,MapR带来了号称三倍于Hadoop MapReduce速度的并行计算平台。Hadoop必将很快迎来下一代产品,届时其必然拥有更强大的分析能力和更便捷的使用方式,从而真正轻松面对未来海量数据的挑战。
发表评论
-
Mark20151225
2015-12-25 15:30 505SELECT review.* FROM `xx_revi ... -
Batch update returned unexpected row count from update [0]; actual row count
2015-11-12 10:27 656Batch update returned unexpecte ... -
查看oracle版本
2015-01-15 11:18 6191 查看oracle的版本信息 (1)用客户端连接到数据库 ... -
oracle主键自增
2014-11-26 16:37 733CREATE SEQUENCE TEST_TA ... -
查看表空间下用户表的大小(GB)
2014-07-21 14:31 674所占空间由大到小的前三十的数据表: select * ... -
查看表空间(oracle)占用情况
2014-06-24 11:03 969select total.tablespace_name, ... -
ORA-28000: the account is locked-的解决办法
2014-05-19 21:58 964进入sqlplus conn /as sysdba ... -
oracle 表空间不足
2014-05-09 18:02 0### Error updating database. C ... -
WAL
2013-08-05 17:39 743WAL: Write-Ahead Logging[1] 预写日 ... -
psql 常用命令
2013-06-05 19:37 831http://wenku.baidu.com/view/27e ... -
postgresql:pg_restore: [archiver] input file does not appear to be a valid archi
2013-03-03 17:43 2064[root@ShadowFiend Gogo_yueyue ... -
postgreSql千万级的数据量怎么备份
2012-03-13 10:26 2105Postgresql提供了3种备份方式。 1.pg_dump. ... -
postgresql :vacuum full
2012-01-06 14:30 1646http://wiki.postgresql.org/wiki ... -
删除pg_xlog导致Pg无法启动
2011-12-29 09:41 3899前几天由于做9.1PIRT,postgresql.conf中的 ... -
pgpool_II并行模式配置
2011-12-26 14:03 1710pgpool_II并行模式配置(parallel_mode) ... -
PostgreSQL9.1Warm and Hot Standby Using Point-In-Time Recovery (PITR)配置
2011-12-07 10:38 2080配了快一个星期吧。看的英文文档。不停的google。英文真是我 ... -
PostgreSql 版本迁移(9.0-9.1)
2011-11-29 20:27 1941为了传说中9.1的hot_standy ... -
linux下利用PostgreSQLpgpool-II搭建集群(视频,资料)
2011-11-24 21:58 1131http://www.youku.com/playlist_s ... -
pg_dump 备份恢复单个表单数据
2011-11-22 10:01 4670/opt/PostgreSQL/9.0/bin/pg_ ... -
SQLite入门与分析(一)---简介
2011-10-09 11:07 855写在前面:出于项目 ...
相关推荐
大数据可视化分析平台架构与分析总体解决方案
标题中的“大数据下的数据分析平台架构”指的是在大数据背景下,如何构建和运用数据分析平台来处理和分析海量数据。描述中提到的“Hadoop 平台”是大数据分析领域的一个关键组件,因其在可扩展性、健壮性、计算性能...
* 市场分析:AI大数据平台架构图可以用于市场分析,例如市场预测、市场分析等。 * recommendation system:AI大数据平台架构图可以用于推荐系统,例如产品推荐、服务推荐等。 AI大数据平台架构图是基于AI技术和...
【大数据下的数据分析平台架构】 大数据时代的到来,伴随着互联网、移动互联网和物联网的快速发展,使得数据量呈现爆炸式增长。据IDC预测,2021年全球数据总量将达到18万亿GB,这使得对海量数据的分析变得至关重要...
【大数据下的数据分析平台架构】 大数据时代的到来,伴随着互联网、移动互联网和物联网的快速发展,使得数据量呈现爆炸式增长。据IDC预测,2021年全球数据总量将达到18万亿GB,这使得对大数据的分析成为企业和组织...
电商企业大数据可视化分析平台总体架构方案是解决电商企业大数据分析和应用问题的解决方案,旨在建立一个统一的大数据共享和分析平台,提供一个统一的数据视图,支撑电商企业日常业务运转的风险评估体系,实现电商...
大数据平台架构 大数据平台架构是指利用大数据技术构建的一种平台架构,旨在帮助企业和组织更好地管理和分析大量数据,提高业务能力和决策效率。该平台架构通常包括数据源层、数据接口层、平台架构层、分析工具层和...
* 提供离线&实时开发平台、调度系统、管理平台和数据分析平台 * 服务所有滴滴对内数据业务 二、技术架构: * MySQL * log-agent * app-sdk * Kafka * DSink * binlog * SparkStreaming * Flink * Druid * 实时计算...
大数据平台架构包括数据采集、数据存储、数据处理、数据分析、数据挖掘和数据可视化等几个组成部分,这些部分相互关联,形成一个完整的系统,支持企业从海量数据中获取洞察和价值。 大数据平台架构的设计思路是指在...
这一方案的核心目标是确保数据的质量、一致性和安全性,以便在大数据平台上高效、有效地进行数据分析和决策支持。 1. **范围** 该数据治理体系适用于中国移动内部的大数据平台,涵盖了数据的收集、存储、处理、...
动力电池故障预测分析大数据平台架构知识点 一、业务分析 * 动力电池故障预测分析大数据平台架构是为充电汽车和电池数据提供的,具有数据接入、存储、分析和安全监控等功能的。 * 该平台收集充电车大量实时数据,...
本解决方案针对大数据可视化分析平台的架构和整体设计进行了详尽阐述,旨在解决企业在数据利用上的痛点,实现数据共享、加强业务协作、提升建设效率、改善数据质量和促进业务创新。 首先,当前的管理分析类应用存在...
本文将深入分析滴滴大数据平台的架构,探讨其离线和实时平台架构体系,以及HBase平台架构体系,并且介绍数据治理体系和数据全链路建设,以展现滴滴如何通过这些技术构建为其线上业务提供有力支持。 首先,滴滴的...
系统功能框架包括数据接入、数据处理、数据存储、数据分析、数据报表等模块。系统模块流程包括数据输入、数据处理、数据输出等过程。 大数据平台数据治理架构方案是指一个完整的数据治理系统,旨在确保大数据平台中...
集合了125份一线互联网大厂大数据、数据分析、数据仓库、数据中台方案与落地实践, 小米用户画像实战 腾讯 clickhouse实践 贝壳OLAP平台架构演进之路 快手大数据存储管理的落地实践 数据中台行业解决方案及案例 快手...
大数据平台架构组件包括数据采集组件、数据处理组件、数据存储组件、数据分析组件、数据服务组件等。每个组件都有其特定的功能和作用。 四、大数据平台业务方案 大数据平台业务方案是指基于大数据平台架构的业务...