Apache Storm源码阅读笔记&OLAP在大数据时代的挑战

 <一>Apache Storm源码阅读笔记

楔子

自从建了Spark交流的QQ群之后,热情加入的同学不少,大家不仅对Spark很热衷对于Storm也是充满好奇。大家都提到一个问题就是有关storm内部实现机理的资料比较少,理解起来非常费劲。

尽管自己也陆续对storm的源码走读发表了一些博文,当时写的时候比较匆忙,有时候衔接的不是太好,此番做了一些整理,主要是针对TridentTopology部分,修改过的内容采用pdf格式发布,方便打印。

文章中有些内容的理解得益于徐明明和fxjwind两位的指点,非常感谢。

storm.pd...[许鹏].1473672493.pdf 

<二>OLAP在大数据时代的挑战

数据的价值

在涉及具体的技术前,先想一想为什么需要OLAP这样的系统,它有什么价值或者说在公司或部门这是不可取代的么? 可以带来哪些价值,是直接变现还是间接变现。 如果不能回答或回答不了,那么就是一个很大的问题,这其实意味着数据的质量存在问题。没有质量的数据,体量再大也毫无价值。

数据存储

假设已经有很好的oltp系统,那么oltp系统在数据量不大的情况下,继续扮演olap角色也还可以。一旦业务红火,那么oltp中的analyze部分势必会分离出来,也就是olap和oltp相互单独存在。

olap中存储大量历史数据,数据存储成了olap中要解决的第一个也是首要问题,这个需求的解决方案有多种,可以是HDFS,也可以是NoSQL数据库,也可以是Distributed RDBMS,当中的取舍要视具体情况而定。后面会涉及具体的考虑维度。

数据同步和ETL

如何将数据从oltp迁移到olap,这个同步机制需要考虑数据一致性,zero data-loss, 实时性要求等等。

数据查询

在大量甚至是海量的历史数据中如何快速定位到所要符合条件的记录? 数据量如果在TB级以上,就需要考虑使用solr或是elasticsearch

数据分析

花了好多代价保存下来的海量数据,只是用了做简单明细查询,任何老板都不能容忍,一定要在历史的数据进行复杂的分析才行。这时候有一个好的分布式计算引擎就很有必要了。如spark/presto/impala

数据挖掘

数据挖掘是一种比数据分析更为复杂的数据分析,呵呵,个人理解,有些绕。这个时候什么算法啦,什么机器学习啦,可以上场了。

big data or fast data

数据分析中还需要考虑到另一个重要约束就是时间,如果希望分析结果愈快愈好,那么就需要采用如druid这样的系统。

结果

如果数据规模在10TB以下,数据包含结构化和半结构化数据,明细查询中条件比较固定,不存在全文搜索。需要在比较短的时间内如秒级得到复杂分析结果,可以考虑使用distributed rdbms.

如果数据规模远远超过10TB,那么就需要将数据存储/数据查询/数据分析交由不同的系统来处理,这个时候就需要组成一个技术栈来解决总量。如HDFS/solr or elasticsearch/Spark or Presto or Impala. 为了提升分析的效率,除了从distributed computing engine侧进行优化之外,还需要从存储侧进行优化,采用先进的存储格式如parquet/orc/carbondata将会极大的提升分析性能。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/60519

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。