大数据技术层面
English version: Technical Aspects of Big Data
本讲涵盖大数据的跨行业应用场景以及用于存储、处理和分析的核心 Hadoop 生态系统。
大数据应用
各行各业的企业都已从大数据解决方案中受益。
跨行业用例
| 行业 | 应用 |
|---|---|
| 银行与证券 | 信用卡/借记卡欺诈检测、证券欺诈预警、信用风险报告、客户数据分析 |
| 医疗健康 | 存储患者数据并分析以在早期发现各种疾病 |
| 市场营销 | 分析客户购买历史,精准触达适合新产品的客户 |
| 网络分析 | 分析社交媒体和搜索引擎数据,根据用户兴趣投放广告 |
| 呼叫中心 | 通过捕获和处理通话内容,识别重复问题和员工行为模式 |
| 农业 | 生物技术公司使用传感器优化作物效率;大数据分析传感器数据 |
| 智能手机 | 面部识别用于解锁手机并检索关于某人的已存储信息 |
制造业
- 机器诊断与预测:通过分析当前运行状态与正常状态的偏差来预测机器性能。传感器监控温度和振动水平。诊断系统与基于云存储和大数据分析后端集成。
- 工业运营风险分析:使用气体传感器(CO、NO、NO₂)监控室内空气质量。大数据分析风险并识别危险区域。
- 生产计划与控制:系统测量各种生产工艺参数并实时控制整个流程。大数据用于生产计划和识别潜在问题。
民用基础设施
- 结构健康监测:传感器网络监测桥梁和建筑物的振动水平。分析这些数据可检测裂缝、定位损伤、计算剩余寿命,并对即将发生的故障提供预警。
交通与智慧城市
- 智能道路:传感器提供驾驶条件信息、行程时间估计以及恶劣天气、交通拥堵和事故的预警。信息通过互联网传送到基于云的分析应用,并分发给驾驶员。
医疗健康行业
- 流行病学监测:研究人群中健康相关状态的分布和决定因素。电子健康记录(EHR)系统包括实验室结果、诊断、治疗和人口统计数据。大数据框架整合多个 EHR 系统,用于预测疫情暴发、人群健康监测、疾病检测和公共卫生地图绘制。
金融行业
- 信用风险建模:为信贷申请评分并预测借款人未来是否违约。模型基于信用评分、信用历史、账户余额、交易和消费模式构建。大数据系统定期为大量客户计算信用风险评分。
- 欺诈检测:检测信用卡欺诈、洗钱和保险理赔欺诈。实时分析框架实时标记交易。机器学习模型检测异常。批处理分析搜索历史数据中的欺诈模式。
数字营销
- 内容推荐:应用收集用户搜索模式、浏览历史、消费内容和评分。大数据系统基于用户偏好和兴趣推荐新内容。
环境
- 气象监测:传感器收集温度、湿度和压力数据并发送到基于云的应用。数据被分析和可视化以监测天气并生成预警。
大数据技术
大数据技术是旨在存储、处理和分析传统 RDBMS 无法处理的极其复杂和海量数据集的软件工具。关键技术包括:
- Hadoop
- Hadoop 分布式文件系统(HDFS)
- MapReduce
- YARN
Apache Hadoop
一个用 Java 编写的开源框架,支持在分布式计算环境中跨集群处理大规模数据集。它可以在分布式文件系统(DFS)中存储结构化、半结构化和非结构化数据,并并行处理它们。
Hadoop 生态系统包含四层:
| 层次 | 组件 |
|---|---|
| 数据存储 | HDFS、HBase |
| 数据处理 | MapReduce、YARN |
| 数据访问 | Hive、Pig、Mahout、SQOOP、Avro |
| 数据管理 | Flume、Oozie、Chukwa |
HDFS(Hadoop 分布式文件系统)
- 设计用于在低成本商用硬件上运行并存储大型数据集
- 不需要高可靠性的昂贵硬件
- 数据以写一次、读多次的模式存储
- 不适合需要低延迟访问的应用
- HBase 是低延迟应用的合适替代方案
HBase
- 构建在 HDFS 之上的列式 NoSQL 数据库
- 水平可扩展、开源、分布式
- 不需要预定义模式
- 支持结构化和非结构化数据
- 提供对 HDFS 中数据的实时访问
- 支持多次读写
MapReduce
采用分治原则的批处理编程模型。
- 在并行和分布式计算环境中处理数据
- 仅支持批处理工作负载
- Map 任务:拆分和映射数据
- Reduce 任务:对数据进行混洗和归约
- 不适合实时处理和小数据
MapReduce 架构:
| 阶段 | 说明 |
|---|---|
| 输入分片 | 输入被划分为固定大小的片段 |
| 映射 | 统计出现次数并准备 <单词, 频次> 列表 |
| 混洗与排序 | 整合映射阶段的相关记录 |
| 归约 | 将混洗输出值聚合为单个输出值 |
YARN(Yet Another Resource Negotiator)
为克服 MapReduce 架构缺陷而开发。允许使用各种数据处理引擎进行批处理、交互式和实时流处理。
核心组件:
| 组件 | 作用 |
|---|---|
| ResourceManager | 使用调度器和 ApplicationManager 分配集群资源 |
| ApplicationMaster | 通过指导 NodeManager 创建/销毁容器来管理作业生命周期 |
| NodeManager | 通过创建/销毁容器来管理特定节点中的作业 |
Hive
在 Hadoop 环境中处理结构化数据的工具。提供类似 SQL 的脚本开发平台来执行 MapReduce 操作。
- 查询语言:HQL(Hibernate 查询语言)
- 具有类似 SQL DDL 的数据定义语言,用于创建、删除或更改模式对象
- 数据组织为:表、分区和桶
- 分区通过避免全表扫描来加速查询性能
- 桶进一步基于列的哈希值划分分区
Pig
用于分析大型数据集的高级编程语言。两个组件:Pig Latin(语言)和执行环境。
- 可处理结构化、半结构化和非结构化数据
- 不具备 Java 知识的程序员也可执行 MapReduce 任务
- 内部将 Pig Latin 脚本转换为 MapReduce 作业
内部处理流程:
- 解析器检查语法
- 优化器进行逻辑优化
- 编译器将逻辑优化后的代码编译为 MapReduce 作业
- 执行引擎将作业提交给 Hadoop
SQOOP(SQL to Hadoop)
- 当 RDBMS 无法支持海量数据时,将结构化数据传输到 HDFS
- 也可将数据从关系型数据库移动到 HBase
- 最终分析结果可导出回数据库
Avro
开源数据序列化框架。
- 将内存中的数据转换为二进制或文本格式以进行传输或存储
- 旨在克服 Hadoop 缺乏可移植性的问题
- 数据格式可被多种语言处理
- 模式以 JSON 定义
Flume
用于从多个来源收集大量流数据的分布式可靠工具。
- 将流数据(传感器、社交媒体、日志文件)摄取到 HDFS
- 与 SQOOP 的区别:SQOOP 处理结构化数据;Flume 处理流数据
Oozie
Hadoop 的开源工作流管理引擎和调度器。
三种作业类型:
| 类型 | 说明 |
|---|---|
| Workflow | 以 DAG 表示,按需运行 |
| Coordinator | 基于频率或数据可用性定期调度执行 |
| Bundle | 作为单个作业管理和运行的协调器作业集合 |
Chukwa
用于监控大型分布式系统的开源数据收集系统。
四个组件:
- Agents:在每台机器上运行并发出数据
- Collectors:从代理接收数据并写入稳定存储
- MapReduce 作业:解析和归档数据
- HICC(Hadoop Infrastructure Care Center):用于展示数据的 Web 门户界面
大数据分析技术
MATLAB
用于技术计算的高性能语言,集成计算、可视化和编程。
典型用途:数学与计算、算法开发、建模/仿真/原型设计、数据分析/可视化、科学/工程图形、应用开发。
R
针对统计分析和数据可视化优化的开源编程语言。通常在 RStudio IDE 中使用。
用于:数据清洗与准备、创建可视化、训练/评估机器学习和深度学习算法。
Python
开源多用途编程语言,几乎可用于任何使用数据的场景。数据分析与 Python 是不可分割的术语。
关键库:
| 库 | 用途 |
|---|---|
| Pandas | 数据处理与分析 |
| NumPy | 数值计算 |
| SciPy | 科学计算 |
| Matplotlib | 可视化 |
| Scikit Learn | 机器学习 |
| TensorFlow | 深度学习 |
| Theano | 数值计算 |
| Keras | 神经网络 |
| PyTorch | 深度学习 |
大数据可视化技术
大数据可视化将信息转换为视觉上下文(地图、图表),使数据更易于理解,并识别模式、趋势和异常值。
| 工具 | 说明 |
|---|---|
| Power BI | 微软的商业分析服务,用于分析、可视化、提取洞察并在组织内共享 |
| Tableau | 管理数据流并将数据转化为可操作信息的商业智能工具;创建交互式可视化 |
要点总结
- 制造、金融、环境、智慧城市、医疗和数字营销等领域的具体应用
- Hadoop 生态系统:HDFS、YARN、MapReduce、HBase、Hive、Pig、SQOOP、Avro、Flume、Oozie、Chukwa
- 分析语言:MATLAB、R、Python
- 可视化工具:Tableau、Power BI
相关概念
- Hadoop 生态系统 — 存储、处理和管理层深入解析
- MapReduce — 批处理模型与架构
- YARN — 资源协商与作业调度
- HDFS — 分布式文件系统设计