# 离线计算

# 概述

核心是数据分析,把大数据离线计算的整套流程和框架搭建起来,后续就是不断在框架中加入新的业务、 新的需求

所谓大数据离线计算,就是利用大数据的技术栈(主要是 Hadoop),在计算开始前准备好所有输入数据,该输入 数据不会产生变化,且在解决一个问题后就要立即得到计算结果的计算模式。

离线(offline)计算也可以理解为批处理(batch)计算,与其相对应的是在线(online)计算或实时(realtime)计算

# 应用场景

  • 大数据离线计算主要用于数据分析、数据挖掘等领域。我们说这部分的技术栈主要是 Hadoop,但在 以 Hadoop 为代表的大数据技术出现之前,数据分析、数据挖掘已经经历了长足的发展。尤其以 BI 系 统为主的数据分析领域,已经有了比较成熟稳定的技术方案和生态系统。
  • BI(全称为 Business Intelligence,即商业智能)系统能够辅助业务经营决策。其需要综合利用 数据仓库(基于关系型数据库)、联机分析处理(OLAP)工具(如各种 SQL)和数据挖掘等技术。
  • 如 Oracle、IBM、Microsoft 等数据库厂商都有自己的 BI 产品,MicroStrategy、SAP 等独立 BI 厂商也 有自己的软件产品。

# 离线计算架构设计

# 架构规划

架构说明:

  • 数据采集或产生是通过各类日志、埋点、爬虫或手工整理的方式来对需要分析的数据进行收集
  • 离线数据存储处理包括了数据清洗、数据存储和数据分析。需要对其不合规的数据(空值或异常数据)进行剔除或处理,将清洗好的数据存储到HDFS系统中(可以通过Hive进行存储,其底层都为HDFS),以便进行分布式计算分析;通过MapReduce、spark进行大数据的分布式计算分析,得出分析结果
  • 离线数据应用可将分析结果可视化展示

# 技术规划

版本号以 cdh 指定版本号为主,待调整

序号 功能 技术 备注
1 流计算引擎 Storm/Spark/Flink/KafkaConsumer
2 消息队列 Kafka/RocketMQ/阿里云 DataHub/阿里云日志服务 LogHub
3 日志采集工具 Logstash/Flume/阿里云日志服务 LogTail
4 缓存 Redis/Memcache
5 数据存储 RDBMS/NOSQL 数据库/搜索引擎/分布式文件系统
6 数据查询引擎 Kylin/Impala/Presto

# 离线计算特点

  • 数据量巨大,保存时间长
  • 在大量数据上进行复杂的批量运算
  • 数据在计算之前已经完全到位,不会发生变化
  • 能够方便地查询计算结果

# 离线开发

以下为离线开发过程主要使用技术

# Hadoop

Hadoop 是一个蓬勃发展的生态,从底层调度和资源管理的 YARN/ZooKeeper 到 SQL on Hadoop 的 Hive,从 分布式的 NoSQL 数据库 HBase 到流计算 Storm 框架,从海量日志采集处理框架 Flume 到海量消息分布式订 阅-消费系统 Kafka,所有这些技术共同组成了一个完善的、彼此良性互动和补充的 Hadoop 大数据生态系统

# 优势:

  • 处理超大文件
  • 运行于廉价的商用机器集群上
  • 高容错性和高可靠性
  • 流式的访问数据(一次写入、多次读取)

# 劣势:

  • 不适合低延迟数据访问:HDFS 是为了处理大型数据集而设计的,主要是为达到高的数据吞吐量而设计的, 延迟时间通常实在分钟乃至小时级别
  • 无法高效存储大量小文件
  • 不支持多用户写入和随机文件修改

# Hive

Hive 是建立在 Hadoop 体系架构上的一层 SQL 抽象,使得数据相关人员使用他们最为熟悉的 SQL 语言就可以 进行海量数据的处理、分析和统计工作,而不是必须掌握 Java 等编程语言和具备开发 MapReduce 程序的能力。

# 维度建模

这块主要是先深入理解业务,然后根据各种方法论建模. 在大数据时代,数据量的庞大、数据来源和类型的多元化、数据价值密度低、数据增长快速等特性使 得传统的数据仓库无法承载,因此需要一个新的架构作为大数据的支撑.

# 其它