大数据开发体系

一、体系概述

大数据开发处理体系是指通过一系列技术和工具,对海量、多样化、高速产生的数据进行收集、处理、分析和应用的过程。这个体系需要高效、可靠的技术支持,以满足企业对数据价值的深度挖掘和利用。

ETL(Extract, Transform, Load)是数据仓库中的重要环节,用于从不同的数据源抽取数据、进行转换和清洗,然后加载到数据仓库中。

1.1 狭义的Hadoop

主要由三个组件构成:
存储:HDFS(分布式文件系统)
计算: MapReduce (分布式计算框架)
资源调度: YARN (资源管理组件)

1.2 广义的Hadoop

指一个更宽泛的概念一Hadoop生态圈:
Zookeeper. Hive、HBase、Sqoop、
Flume、Oozie等组件。

  • ZooKeeper:是一个分布式应用程序协调服务。主要功能:
    1.配置管理
    Zookeeper作为分布式的配置中心,通用的全局配置,让集群所有机器共享配置信息。如HBase的配置信息存储在Zookeeper中。
    2.名字服务
    在分布式系统中,通过使用命名服务,客户端应用能够根据指定名字来获取资源或服务的地址,提供者等信息。类似DNS
    3.分布式锁
    分布式锁是控制分布式系统之间共同访问共享资源的一种锁实现,如果不同的系统的不同主机之间共享了某个资源时,往往需要互斥来防止彼此干扰来保证一致性。
    4.选举机制
    为保证节点之间的协调工作,集群会选一个Leader的角色,当Leader挂了的时候,由Follower们内部投票决定的新的Leader.Hadoop高可用由Zookeeper完成

  • Flume:是Cloudera提供的一个分布式、高可靠、高可用的海量日志聚合系统,支持在系统中定制各类Source,用于收集数女孩。
    ·Flume提供对数据的简单处理,并通过Sink写到各种数据接受方的能力。

  • Oozie:是一个基于工作流引擎的开源框架,提供对Hadoop中MapReduce和Pig Jobs的任务调度与协调。

  • Apache Ambari:是一种支持Apache Hadoop集群的安装、部署、配置和管理的工具。Ambari已支持大多数Hadoop组件,包括HDFS、MapRedduce、Hive、Pig、HBase、Zookeeper、Sqoop等。

1.3 主要特点

高可靠:Hadoop底层数据存储使用副本机制(默认为3个)。
高扩展: Hadoop集群支持热插拔,在增加或删除节点时无需重新启动集群,极大提高了集群扩展性能。
高效率: Hadoop提供MapReduce组件,支持分布式的并行计算,加快任务处理速度。
高容错:能够自动将失败的任务重新分配。
低成本:Hadoop可以运行在廉价的机器上。

二、主要环节

2.1 数据采集(Flume、Sqoop、Kafka、网络爬虫)

数据采集(DAQ)又称数据获取,是使用技术手段对离线数据和实时数据采集的过程,是数据分析中的重要环节。数据来源主要包含四个:系统日志数据,企业业务数据,网络数据,传感器数据。

Kafka是一种高吞吐量的分布式发布订阅消息系统.用于在线和离线消息的处理,支持与Flume、Spark、Flink、Stornn集成,用于实时流式计算。Kafka也是一种数据采集工具,一般对日志数据和实时数据进行采集。

功能: 日志收集,异步处理, 应用解耦, 流量削峰,大数据实时计算,消息系统
组成

  • 生产者:Producer往Kafka生成数据
  • 消费者:Consumer从Kafka中获取数据,Kafka的数据是由消费者自己去拉Consumer取
  • 主题:Topic是数据记录发布和订阅的地方。不同类型或者业务各的数据,可以分为不同的主题
  • 分区:Partition默认一个Topic有一个分区(Partition),自己可设置多个分区

优点
分布式的
容错性强
解耦
持久性
削峰
支持多语言
高吞吐、低延时
易扩展
缺点
消息丢失
重复消费
消息乱序
不支持事务

它们的区别如下:
- 2.1.1 数据来源和用途
* Flume 主要用于实时收集日志数据,常用于将大量的日志数据从各种数据源(如服务器、应用程序等)传输到集中的数据存储或处理系统。
* Sqoop 侧重于在关系型数据库(如 MySQL、Oracle 等)和 Hadoop 生态系统(如 Hive、HBase、HDFS 等)之间进行数据迁移。
* Kafka 则更通用,可用于采集各种类型的数据,不仅是日志,还包括业务数据、传感器数据等,并且常用于构建实时数据处理管道。
- 2.1.2 数据传输方式
* Flume 支持多种数据传输方式,如文件、Socket 等,并可以在传输过程中对数据进行过滤和转换。
* Sqoop 主要通过执行数据库的导出和导入操作来实现数据迁移。
* Kafka 基于发布/订阅模式,数据以消息的形式在生产者和消费者之间传递。
- 2.1.3 实时性
* Flume 可以实现准实时的数据采集。
* Sqoop 更侧重于批量数据的迁移,实时性相对较弱。
* Kafka 具有出色的实时处理能力,适用于对实时性要求很高的场景。
- 2.1.4 数据处理能力
* Flume 本身侧重于数据的传输,数据处理能力相对较弱。
* Sqoop 主要用于数据迁移,基本不涉及数据处理。
* Kafka 可以与其他处理框架(如 Spark、Flink 等)结合,实现强大的数据处理。
- 2.1.5 数据存储
* Flume 通常将数据传输到其他存储系统,如 HDFS 等。
* Sqoop 主要是在不同系统之间迁移数据,不负责最终的数据存储。
* Kafka 本身可以作为数据的临时存储,也可以与其他存储系统配合使用。
- 2.1.6 架构复杂性
* Flume 的架构相对简单,配置较为直观。
* Sqoop 的使用相对较为直接,主要是配置数据库连接和迁移参数。
* Kafka 的架构相对复杂,需要配置 Broker、Topic 等多个组件。

综上所述,选择使用哪种工具取决于具体的业务需求、数据特点和技术架构。

2.2 数据存储

存储海量的数据,常见的存储系统有 Hadoop 分布式文件系统(HDFS)、NoSQL 数据库(如 MongoDB、Cassandra、HBase 等)、数据仓库(如 Hive 等)。

这里提及的海量数据通常指数据量非常大,达到传统数据处理技术和存储系统难以有效管理和处理的程度,可能是数十亿条记录、数 TB 甚至 PB 级别的数据规模。以下是常见存储系统的区别:

2.2.1 Hadoop 分布式文件系统(HDFS)

  • 设计目的:主要用于大规模数据的存储,支持数据的分布式存储和管理。
  • 数据模型:基于文件系统,以大文件为主要存储单位。
  • 主从结构:一个名字节点(NameNode)和多个数据节点(DataNode)组成。NameNode是一个管理文件命名空间和调节客户端访问文件的主服务器。数据节点(DataNode)是一个从服务器,主要完成数据的存储功能能。
  • 扩展性:具有高度可扩展性,可以通过增加节点来扩展存储容量和计算能力。
  • 高吞吐量:操作任务划分,多服务器并发执行
  • 适用场景:适合存储大规模的静态数据,如日志文件、图像、视频等。
  • 缺点: 1.高延迟:高吞吐量的设计,牺牲了低延迟.2.不适合小文件存取场景:小文件会占用更多元数据空间.3.不适合并发写入:同一个文件不能并发写操作.4.不支持随机修改:仅支持数据Append(追加)

2.2.2 NoSQL 数据库(MongoDB、Cassandra、HBase)

  • 2.2.2.1 MongoDB

    • 数据模型:文档型数据库,存储的是类似 JSON 的文档。
    • 特点:支持丰富的查询语言,灵活的模式变更,适用于需要快速开发和迭代的应用。
    • 适用场景:Web 应用、内容管理系统等。
  • 2.2.2 Cassandra:

    • 数据模型:宽列存储,强调分布式和高可用性。
    • 特点:可扩展性强,能在多个数据中心之间进行复制,适合大规模分布式系统。
    • 适用场景:实时性要求较高的大数据应用,如实时分析、社交网络等。
  • 2.2.3 HBase:
    HBase是一个分布式的、面向列的开源数据库。HBase可以存储海量数据,准实时查询。HBase适合存储半结构化与非结构化数据。

    特点
    1.单表容量大:可以存储大批量的数据,百亿行与上百万列,小于百万行不适合用HBase来存储
    2.列式存储:HBase表的数据是基于列族进行存储与权限控制,并支持列独立检索,可以动态增加列
    3.扩展性:HBase底层文件存储依赖HDFS,磁盘空间不足,只需要动态增加服务器节点
    4。稀疏性:HBase中为空的列并不占用存储空间,表的设计可以非常稀疏
    5.高性能:HBase具备非常高的写入性能,在海量数据下具备一定的随机读取性能,针对RowKey的查询能够达到毫秒级别

2.2.3 数据仓库(Hive)

Hive是一个基于Hadoop平台的数据仓库ETL工具,完成数据提取、转换与加载的功能.Hive用于解决海量结构化数据的查询与统计.

特点:

  • Hive不存储数据,数据的存储依赖Hadoop的HDFS来完成。
  • Hive提供一种映射功能将HDFS上结构化的数据文件映射为一张表,并提供类SQL的查询功能,Hive中只保存表的元数据。
  • Hive中内置了多个MapReduce模板,在Hive执行SQL查询时,利用模板将SQL转换成MapReduce任务交给Hadoop来执行。
  • Hive中是读多写少,适合存储历史(离线)数据。

总的来说,选择哪种存储系统取决于具体的应用需求,包括数据量、读写模式、数据结构、扩展性要求、查询复杂性等因素。

2.3 数据预处理

数据预处理的主要流程包含:数据清洗、数据集成、数据变换与数据归约。

2.3.1 数据清洗

主要包括:
缺失值处理:是指由于调查、编码和录入的误差,数据中可能存在一些缺失值,需要给予适当的处理。
异常值处理:根据每个变量的合理取值范围和相互关系,检查数据是否合乎要求,发现超出正常范围、逻辑上不合理或者相互矛盾的数女孩
数据类型转换: 数据类型不一致往往会影响到后续的数据处理分析环节,因此,需要明确每个字段的数据类型,并做统一处理。
重复值处理: 由于各种原因,数据中可能存在重复记录或重复字段(列),对于这些重复项目(行和列)需要做去重处理、重复值的存在会
影响数据分析和挖掘结果的准确性,所以,在数据分析和建模之前需要进行数据重复性检验,如果存在重复值,还需要进行重复值的删除。

2.3.2 数据集成:

数据集成就是将互相有关联的多个异构数据源中的数据集成到一起,在逻辑上或物理地形成一个统一的、可靠的和高质量的数据集合,为企业
提供全面的数据共享,并让用户能够以统一的方式访问这些数据。

2.3.3 数据变换:

2.3.4 数据归约:

使用分布式计算框架进行数据处理和分析,如 MapReduce、Spark,flink 等。可以进行数据清洗、转换、聚合、关联等操作。它们的区别如下:
Hadoop MapReduce

  • 设计目标:大规模数据集的并行运算,是专为离线数据处理和大规模数据分析而设计的
  • 计算模型:MapReduce
  • 内存使用:主要依赖磁盘I/O
  • 特性:
    • 成熟稳定:在大数据领域有较长的历史,经过了大量实践的检验。
    • 批处理为主:擅长处理大规模的离线批处理任务。
    • 数据存储:HDFS 提供了可靠的分布式数据存储。
  • 缺点:
    • 计算效率相对较低:MapReduce 模型的迭代计算效率不高。
    • 实时性差:不太适合对实时性要求较高的场景
  • 执行过程简介:
    • 1.数据预处理:将输入文件分为多个分片;
    • 2.任务分配:在集群中空闲的节点分配Map任务或Reduce任务;
    • 3.Map阶段:读取自己所属的文件数据,Map将每一个条输入转换成<key,value>的形式,中间处理结果写入本地磁盘,并发给Reducer;
    • 4.Reducer阶段:将同一个key所对应value的值进行合并,开彡成<key,list>,再由Reduce方法对合并的数据计算,得到最终结果,并输出到HDFS的文件中。

Spark

  • 设计目标: 高速、通用分布式计算
  • 计算模型: RDD(弹性分布式数据集),它是一个容错、并行的数据结构,可以让用户显式地将数据集分区、进行转换操作和行动操作。Spark还提供了DataFrame和Dataset等更高级别的API,以支持更丰富的数据处理和分析任务。
  • 内存使用: 强调内存计算
  • 架构组成:
    • Driver Program(驱动程序):这是控制应用程序执行的主进程,负责创建SparkContext,协调任务的执行,并将作业转换为有向无环图(DAG)。
    • Cluster Manager(集群管理器):如 Standalone、YARN、Mesos 等,负责资源的分配和管理。
    • Executor(执行器):在工作节点上运行实际的计算任务,负责存储数据、执行任务,并将结果返回给 Driver Program。
  • 执行流程:Driver Program 将用户的代码转换为一系列的 RDD 操作,并构建 DAG。然后,根据 DAG 切分成不同的阶段(Stage),每个阶段包含多个任务(Task)。这些任务被发送到集群中的 Executor 上执行, Executor进行实际的计算任务,存储数据和执行任务,并将结果返回给Driver Program。
  • 特性:
    • 内存计算: 通过RDD弹性分布式数据集方式编程,具备容错特征,能在并行计算中高效的进行数据共享,提升计算性能
    • 多样化的计算模式:支持批处理、流处理Spark Streaming、交互式查询(Spark SQL)、机器学习MLlib、图计算GraphX等多种计算模式。
    • DAG执行引擎:采用有向无环图(DAG)执行引擎,优化了任务调度和内存管理。
    • 易用性:支持多种编程语言(如Java、Python、Scala)的API,以及丰富的算法库。
  • 缺点:资源管理相对复杂, 在资源分配和调度方面需要更精细的配置。

Flink
·Flink软件是Apache基金会开发一个分布式处理引擎,用于对无界和有界数据流进行有状态计算。

  • 架构组成:
    • Client(客户端):负责将用户编写的 Flink 程序提交到集群,并与 JobManager 进行交互。
    • JobManager:协调分布式执行,负责调度任务、协调检查点、故障恢复等。
    • TaskManager:实际执行计算任务,管理内存、缓存等资源。
  • 执行流程:客户端Client将作业提交给 JobManager,JobManager 对作业进行解析和优化,生成执行图。然后,将任务分配到 TaskManager 上执行,并通过检查点机制确保数据的一致性和容错性。
  • 特性:
    • 状态管理:提供精确一次(exactly-once)的状态一致性保证,检查点机制是一种轻量级的快照技术,它定期地对系统的状态进行快照,确保在故障恢复时数据的一致性。
    • 支持事件时间:能够基于事件发生的实际时间进行处理,而不仅仅是系统处理时间。
    • 批流一体:统一了批处理和流处理的 API 和执行引擎。
    • 支持高吞吐,低延迟,高性能
  • 缺点:学习曲线较陡:相对较新,技术生态不如 Hadoop 和 Spark 成熟。

2.4 数据分析

  • 运用数据分析工具和算法,挖掘数据中的价值和洞察。
  • 例如使用统计分析、Mahout机器学习算法(如分类、聚类、回归等)进行数据建模和预测。
  • Pig: 基于Hadoop的大规模数据分析平台
    主要特点
    1.使用Pig Latin语言可以轻松实现MapReduce程序,比Java代码简洁
    2.Pig提供了更丰富运算符操作,如Join,Sort,Filter,Ordering等
    3.Pig Latin是类SQL语言,学习成本低
    4.Pig使用了多查询方法,减少代码的长度
    5.Pig中任务自动优化其执行,程序员只需要关注语言的功能
    6.Pig可以开发自定义的功能来实现数据读取、处理与写入
    7.Pig可以分析结构化与非结构的数据,结果存储在HDFS上

数据挖掘算法主要有:分类、聚类、回归分析、关联规则和协同过滤。

分类:分类就是根据数据集的特点生成一个目标函数,借助该目标函数,指将未知的数据集数据样本映射到一个预先定义的类别
中。这个类别必须是离散的(若为连续的,则属于回归算法)。属监督学习。

  • 按算法原理:
    基于统计:如贝叶斯算法
    基于神经网络:如神经网络算法
    基于规则:如决策树
    基于距离:如KNN算法

  • 按模型:
    预测性模型:直接告诉你数据应被分到哪个类
    概率性模型:不直接告诉你结果,但告诉你属于每个类的概率

聚类:聚类是将物理或抽象对象的集合分组为由类似的对象组成的
多个类的分析过程。聚类既能作为一个单独过程,用于找寻数据内部的分布结构,也可以作为分类等其他学习任务的前驱过程。属无监督学习。

回归分析:回归分析指的是确定两种或两种以上变量间相互依赖的
定量关系的一种统计分析方法。在大数据分析中,常用于预测分析,主要研究自变量与因变量的关系。属监督学习。

关联规则:关联规则是发现事物之间关联关系的分析过程,关联分析的目目的是找出数据中隐藏的关联网,挖掘发现大量数据中项集之间有趣的关联或相关联系。常见的关联规则算法有Apriori、FP-树频集算法等。
协同过滤:协同过滤简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息。分类:基于用户的协同过滤算法, 基于物品的协同过滤算法,基于模型的协同过滤算法

2.5 数据可视化

  • 将分析结果以直观的图表、图形等形式展示给用户,帮助用户更好地理解数据。
  • 常用的可视化工具包括 Tableau、PowerBI、Echarts 等。

2.6 数据治理

  • 确保数据的质量、安全性、一致性和可用性。
  • 包括数据质量管理、数据标准制定、数据安全策略等方面。

2.7 资源管理和调度

  • 管理和分配计算资源,以高效执行大数据任务。
  • 例如 YARN(Yet Another Resource Negotiator)用于 Hadoop 集群的资源管理和任务调度。

2.8 监控和优化

  • 对整个大数据处理流程进行监控,包括数据流量、任务执行情况、系统性能等。
  • 根据监控结果进行优化,如调整参数、优化算法、扩展资源等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值