加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数据架构的分析应用

发布时间:2018-10-19 11:40:32 所属栏目:大数据 来源:51CTO技术栈
导读:数据管理比以往更加复杂,到处都是大数据,包括每个人的想法以及不同的形式:广告 、 社交图谱、信息流 、推荐 、市

Figure 1-5 展示了HDFS, YARN, 和处理模型是如何组织的.

6

Figure 1-5. YARN structure

我们无法审视所有的语言和处理模型; 专注于 Hive 和Spark, 它们覆盖了我们所用的用例,长时间数据处理和流处理。

使用Hive的批处理

当决定写第一个批处理job的时候, 使用所喜欢语言实现它,例如Java或 Python,但如果真的要做,最好舒服地使用mapping 和reducing 设计模式, 但这需要开发的时间和复杂的编码,有时候很难去维护。

作为一个替代方式, 可以使用例如Hive这样的高级语言, 以类SQL方式简单而又强大地从HDFS中查询数据. 在用Java写了10行代码的MapReduce地方,在Hive中, 只需要一条 SQL 查询语句.

当使用其他语言而不是原生MapReduce, 其主要的缺陷是性能.在 Hive 和 MapReduce之间有着天然的时延; 另外, SQL查询也与关系型数据库中的查询截然不同。详情参见 hive.apache.org.

Hive 不是一个实时或准实时的处理语言,被用作批处理,例如一个低优先级的长时间处理任务. 处理流式数据,需要使用Spark Streaming.

使用Spark Streaming的流处理

Spark Streaming 可以通过Java, Scale, 或者Python来写批处理任务, 但是可以处理流数据. 这非常适合处理高吞吐量的数据源T例如社交网络(Twitter), 点击流日志, 或者 web 访问日志.

Spark Streaming 是Spark的一个扩展, 它充分利用了分布式数据处理架构,把流式计算作为 一系列不确定的小时间间隔的微型批处理计算。详情参见 spark.apache.org.

Spark Streaming 可以从各种源获得数据,通过与如Apache Kafka这样工具的结合, Spark Streaming 成为强容错和高性能系统的基础。

面向消息的中间件Apache Kafka

7

Figure 1-6. Kafka partitioned topic example

使用 Kafka在我们架构中的引导点 ,主要用于接受数据并推送到Spark

Streaming. 详情参见 kafka.apache.org.

机器学习

当我们以无限收敛模型处理小数据采样时,在架构中讨论机器学习还为时尚早。我们是充分利用现有的分层或特殊语言来使用机器学习,例如 

Spark中的 Spark MLlib。

Spark MLlib

MLlib是Spark上的机器学习库, 充分利用了 Spark Direct Acyclic Graph (DAG) 执行引擎, 所提供的API 集合方便地集成到Spark中. 它由各种的算法组成 :基本统计, 逻辑回归, k-means 聚类, 从混合高斯到奇异值分解以及多维朴素贝叶斯。

通过 Spark MLlib 这些开箱即用算法,可以用几行代码就能过简单地训练数据并构建预测模型a 详情参见 spark.apache.org/mllib.

NoSQL 存储

NoSQL 存储是数据架构的基础组件,因为它们可以摄取大量数据,提供弹性伸缩,高可用性以及开箱即用。Couchbase 和 ElasticSearch是两种我们聚焦的技术,先做简单讨论,稍后使用它们。

Couchbase

Couchbase是一个面向文档的NoSQL数据库,提供了一个灵活的模型轻松缩放,以及一致性的高性能。使用 Couchbase作为文档数据存储,基本上重定向从前端来的所有查询 到 Couchbase 防止了关系型数据库的高吞吐量读操作。详情参见 couchbase.com.

ElasticSearch

ElasticSearch 是一种非常流行的 NoSQL 技术,拥有可伸缩分布式索引引擎和搜索特性,相当于一般架构中Apache Lucene 加上实时数据分析和全文搜索. 

ElasticSearch是ELK平台的一部分( ElasticSearch + Logstash + Kibana,),是由Elastic公司发布的。三个产品结合在一起提供了数据采集,存储和可视化最好的端到端平台:

Logstash 从各种数据源采集数据,例如社交数据,日志,消息队列,或者传感器,支持数据的丰富性和转换,然后传输到一个索引系统例如ElasticSearch.

ElasticSearch 在一个弹性伸缩的分布式系统中索引数据,无缝提供了多语言库,很容易在应用中实现实时搜索和分析。

Kibana 是一个定制化的用户界面,可以构建从简单到复杂的仪表盘,来探索和可视化ElasticSearch 索引的数据。

Figure 1-7 展示了Elastic产品的结构.

8

Figure 1-7. ElasticSearch products

如前图所示, Elastic 也提供了商用产品例如Marvel,基于Kibana的一个监控控制台; Shield, 一个安全框架, 例如提供授权和认证; Watcher, 一个告警和通知系统. 但本书中不使用这些商用产品。我们主要使用ElasticSearch作为搜索引擎来持有Spark产生的产品。在处理和聚合之后,数据在ElasticSearch中被索引,使第三方系统通过ElasticSearch引擎查询数据。另一方面,我们也使用 ELK来处理日志和虚拟化分析,而不只是平台操作视角。

Apache Kafka 是一个由Linkedin开发的订阅-发布消息的分布式应用。Kafka经常与 Apache ActiveMQ 或者RabbitMQ对比, 但根本不同是Kafka 没有实现JMS (Java Message Service). 然而, Kafka是一个持久化消息的高吞吐量系统 , 支持队列和话题语意, 使用 ZooKeeper形成集群节点。

Kafka 实现了订阅-发布的企业级集成,支持并行化,以及性能和容错的企业级特性。

Figure 1-6 给出了订阅-发布架构的高层视角,消息在broker传输,服务于分区的话题。

创建有长远规划的大数据架构

记住所有这些大数据技术,现在来构建我们的架构。

架构概览

从高层视角来看, 我们的架构看起来象另一个电子商务应用架构,需要如下: 

+ 一个web应用,访客可以用它导航一个产品目录 

+ 一个日志摄取应用:拉取日志并处理它们 

+ 一个机器学习应用:为访客触发推荐 

+ 一个处理引擎:作为该架构的中央处理集群 

+ 一个搜索引擎:拉取处理数据的分析

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读