大数据在线分析处理
大数据离线处理
OLAP 和 OLTP 处理
1.实时流式处理
(1)问题的特点
--》数据源源不断的到来;
--》数据需要尽快的得到处理,不能产生积压;
--》处理之后的数据量依然巨大,仍然后TB级甚至PB级的数据量;
--》处理的结果能够尽快的展现;
以上四个特点可以总结为
数据的收集->数据的传输->数据的处理->数据的展现
其中数据的处理一般涉及数据的聚合,数据的处理和展现能够在秒级或者毫秒级得到响应。
针对这些问题目前形成了 **Flume + kafka + Storm / Spark + Hbase / Redis **的技术架构
(2)Flume
Flume 专注于大数据的收集和传输,用来解决在线分析处理特点,数据源源不断的到来的问题。类似的大数据开源系统有 Logstash 和 Fluentd 。
flume的架构图
架构图中 Source 用来连接输出源,Sink 用来连接输出源,Channel 是 Flume 内部数据传输通道(主要包括 Memory Channel 和 File Channel)。
其中 Source 连接的输入源可以但不限于:
Avro
Thrift
Exec(unix command output)
JMS (Java Message Service)
Kafka
NetCat (可以使用 nc –lk port 测试)
Syslog
Custom
其中 Sink 连接的输出源可以但不限于:
Hdfs
Hive
Avro
Thrift
File Roll
Hbase
ElasticSearch (提供的功能和 Logstash 一样,但是不如Logstash 丰富,大多数时候需要自己构造 ElasticSearch 文档和索引)
Kafka
Custom
(2)**kafka **负责数据的缓冲,和解耦作用
(3)spark 负责实时处理计算
(4)Hbase和redis负责存储处理后的数据供外部查询。
2.大数据离线处理(批处理)和常用工具
特点
--》数据量巨大且保存时间长;
--》在大量数据上进行复杂的批量运算;
--》数据在计算之前已经完全到位,不会发生变化;
--》能够方便的查询批量计算的结果;
离线处理目前技术上已经成熟,大家使用的均是: 使用 Hdfs 存储数据,使用 MapReduce 做批量计算,计算完成的数据如需数据仓库的存储,直接存入 Hive , 然后从Hive 进行展现。
3.交互式处理(hive,spark sql)
OLAP (联机分析处理) 和 OLTP (联机事务处理)
三个主要的工具
Elasticsearch 介绍
Impala 介绍
Kylin 介绍
OLTP 单次查询返回数据量小,但是经常会涉及服务器端简单的聚合操作,要求查询响应速度快,一般应用于在线处理;
OLAP(hive大批量) 单次查询返回数据量巨大,服务器端进行的处理复杂,经常包含上卷(从细粒度数据向高层的聚合)、下钻(将汇总数据拆分到更细节的数据)类似的操作;
(1)Elasticsearch lucence查询工具
是一种基于 文档 的 底层使用 Lucene 进行检索的分布式NoSql 集群。Elasticsearch 检索大量文档类数据响应速度很快,更够为 在线 OLTP 提供支持。类似的大数据开源系统有 Solr。
两者的区别如下
--》Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication” 并且完全支持 Apache Lucene 的接近实时的搜索;
--》建立索引时,搜索效率下降,实时索引搜索效率不高;
--》随着数据量的增加,Solr的搜索效率会变得更低,而Elasticsearch却不会有明显变化
所以, Solr的架构不适合实时搜索的应用,也就不适合 OLTP 处理
(2)Impala
Impala 是 Cloudera 公司主导开发的新型查询系统,它提供 SQL 语义,能查询存储在** Hadoop 的 Hdfs 和 Hbase 中的 PB 级大数据**。已有 的 Hive 系统虽然也提供了 SQL 语义,但由于 Hive 底层执行使用的是 MapReduce 引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之 下,Impala 的最大特点就是它的快速。
所以, Impala 使得在 TB 甚至 PB 级数据上进行 OLTP 分析成为可能。
(3)Kylin
Kylin 是由国人作为主要贡献者的一个旨在对 Hadoop 环境下分析流程进行加速、且能够与 SQL 兼容性工具顺利协作的解决方案,目前 Kylin 已经成功将SQL接口与多维分析机制(OLAP)引入** Hadoop,**旨在对规模极为庞大的数据集加以支持。
Kylin 能够在大数据分析领域实现以下各项特性:
--》规模化环境下的极速 OLAP 引擎: 削减 Hadoop 环境中处理超过百亿行数据时的查询延迟时间;
--》Hadoop上的 ANSI SQL 接口: Kylin 能够在 Hadoop 之上提供 ANSI SQL 并支持大部分 ANSI SQL查询功能;
--》利用 OLAP cube(立方体)对数百亿行数据进行查询;