如果每个人的心中都有一把青冥剑,那么每个人的眼中有自己大数据。这是一个所谓大数据的年代,但是从应用架构的层面看,大数据应用一般都是数据密集型的应用,可以从分层的角度来看数据密集型应用的架构。
该架构可以被分成5层: • 基础设施层 • 持久化层 • 集成层 • 分析层 • 参与层
从下往上,遍历一下各层的主要用途.
基础设施层主要关注虚拟化,扩展性和持续集成。在实践中, 虚拟化一词这里指的是开发环境 的VirtualBox以及Spark 和Anaconda 的虚拟机环境。 如果扩展它,可以在云端创建类似的环境。创建一个隔离的开发环境,然后迁移到测试环境,通过DevOps 工具,还可以作为持续集成的一部分被部署到生产环境,例如 Vagrant, Chef, Puppet, 和Docker。Docker 是一个非常流行的开源项目,可以轻松的实现新环境的部署和安装。
持久化层管理了适应于数据需要和形态的各种仓库。它保证了多元数据存储的建立和管理。 这包括关系型数据库如 MySQL和 PostgreSQL;key-value数据存储 Hadoop, Riak, 和 Redis ;列存储数据库如HBase 和 Cassandra; 文档型数据库 MongoDB 和 Couchbase; 图谱数据库如 Neo4j. 持久化层还管理了各种各样的文件系统,如 Hadoop’s HDFS. 它与各种各样的存储系统交互,从原始硬盘到 Amazon S3. 它还管理了各种各样的文件存储格式 如 csv, json, 和parquet(这是一个面向列的格式).
集成层专注于数据的获取、转移、质量、持久化、消费和控制。基本上由以下的5C来驱动: connect, collect, correct, compose和consume.这五个步骤描述了数据的生命周期。它们聚焦于如何获取有兴趣的数据集、探索数据、反复提炼使采集的信息更丰富,为数据消费做好准备。因此, 这些步骤执行如下的操作:
分析层是处理数据的地方, 通过各种模型, 算法和机器学习管道从而得出有用的见解。简而言之,使它足够强大以致于在单个同一平台完成多种范式的分析处理,允许批处理, 流处理和交互式分析。在大数据集上的批处理尽管有较长的时延,但同时能够提取模式和见解,也可以在流模式中处理实时事件。交互和迭代分析更适合数据探索。 Spark 提供了Python 和R语言的绑定API,通过SparkSQL 模块和Spark Dataframe, 它提供了非常熟悉的分析接口.
参与层完成与用户的交互,提供了 Dashboards,交互的可视化和告警,可以在使用PyData 生态系统提供的工具如Matplotlib, Seaborn, 和Bokeh.