跳过正文

Spark系列 - 初识大数据

·2952 字·
大数据 Spark Hadoop 数据库
EZ
作者
EZ
Take it EZ!
目录
Spark - 这篇文章属于一个选集。
§ 1: 本文

1. 初始大数据
#

1.1. 大数据的 3V 问题
#

在处理大数据时,我们必须面对所谓的3V问题:多样性(Variety)、数据量(Volume)和速度(Velocity)。

  1. 多样性(Variety)
    • 我们需要处理结构化、半结构化、和非结构化数据:
      • 结构化数据(Structured Data):采用标准化格式(如:行列表结构)
      • 半结构化数据(Semi-Structured Data):Key / Value 结构(如:Json、XML)
      • 非结构化数据(Un-Structured Data):文本文件、PDF、图像、视频等。
    • 随着互联网、社交媒体和移动应用的发展,企业正在收集到更多的半结构化和非结构化的数据。
  2. 数据量(Volume)
    • 我们需要处理巨大体量的数据(TB、PB级别)。
    • 处理和存储海量级别的数据是一个巨大的挑战。
  3. 速度(Velocity)
    • 如今数据的产生和收集的速度很快,我们对数据处理的速度要求也很高。
    • 数据里需要实时或接近实时地进行处理和分析,以便快速做出决策。例如,在线交易系统和实时监控系统都需要高效的数据处理能力。

1.2. 大数据解决方案
#

单体架构(Monolithic Approach)

  • 单体架构是指将所有数据存储在一个单一的系统中。
  • 这种架构设计相对简单,但需要在前期仔细规划容量和性能,因为后期的扩展性较差。这意味着你需要在一开始就投入大量成本来满足未来的需求,可能会导致资源浪费。
  • 此外,当系统出现故障时,整个系统将无法使用。

分布式架构(Distributed Approach)

  • 高扩展性:
    • 通过增加节点来处理更大规模的数据,当用户增多时,可以轻松扩展系统的处理能力。
    • 前期按需配置数据节点,避免资源浪费。
  • 分布式处理:
    • 数据和计算任务分布在多个节点上并行处理,提高处理效率。
  • 容错性与高可用性:
    • 即使某个节点出现故障,整个分布式系统依然可用,不会导致系统崩溃。

2. 初始 Hadoop
#

Hadoop是一个开源的分布式计算框架,旨在解决处理大规模数据的问题。它提供了一种可靠、高效的方式来存储和处理大数据集,通过将数据分布在多台机器上,使我们在处理数据时就像在使用单台机器一样。 在Hadoop核心平台上开发了许多其他工具,如Hive、HBase、Pig、Sqoop和Oozie等。 Hadoop生态系统包括了多个组件,其中最核心的包括HDFS、YARN和MapReduce。

2.1. HDFS
#

  • HDFS(Hadoop Distributed File System)是Hadoop中用于存储大规模数据的文件系统。它设计用于运行在廉价的硬件上,并通过数据的冗余备份来提高可靠性。
  • HDFS将大文件切分成小的数据块,并将这些数据块分布式存储在集群中的多个节点上,实现了高容错性和高吞吐量的数据存储。
  • HDFS 的组件:
    • NN:Name Node(名称节点)
    • DN:Data Node(数据节点)
  • 将文件拆分为小块,并存入其中的一些节点中(DN),每一块称之为block。典型的block大小为128MB。
  • NN可以跟踪所有文件的元数据(例如:文件名、目录地址、文件大小、如何切的块、有多少块、block id、块的顺序、块的位置等)

2.2. YARN
#

  • YARN(Yet Another Resource Negotiator)是Hadoop的资源管理器,负责集群资源的管理和作业调度。
  • YARN将集群的计算资源划分为若干个容器,用于运行应用程序的任务。
  • 通过YARN,Hadoop集群可以同时运行多个不同类型的应用程序,提高了集群资源的利用率。
  • YARN 的三个主要组件:
    • RM:Resource Manager (资源管理器)
    • NM:Node Manage (节点管理器)
    • AM:Application Master(应用程序控制)
  • 主从架构(Master-Slave Architecture)
    • 其中一个机器成为主节点,其余的机器充当工作节点
    • 在主节点上会安装RM,在工作节点上会安装NM
    • NM会定期向RM发送节点状态报告

2.3. MapReduce
#

  • 是Hadoop中用于分布式计算的编程模型和处理引擎。
  • 它将计算任务分解成独立的Map和Reduce阶段,并通过将数据分布式处理在集群中的多个节点上来实现并行计算。
  • MapReduce模型简化了大规模数据的处理过程,使得用户可以轻松编写并行计算任务,适用于数据处理、分析和转换等场景。
  • Map:做并行计算或处理
  • Reduce:对Map的输出做聚合、汇总和合并
  • 一般可以用 Hive SQL、Spark SQL、Spark Scripting 作为MapReduce 的高级API进行操作

3. 初始 Spark
#

Apache Spark 是一个开源的分布式计算系统,专为大数据处理和分析设计。 它提供了一个统一的引擎,支持广泛的数据处理任务,包括批处理、实时处理、机器学习和图计算。Spark 以其速度、易用性和通用性而著称。

  • 存储: 它可以读取和处理存储在 HDFS、HBase、Cassandra、Amazon S3 等多种存储系统中的数据。
  • 计算引擎: Spark 提供了比 MapReduce 快 100 倍的内存处理和 10 倍的磁盘处理速度,适用于批处理和实时处理。
  • 资源管理: 可以运行在多种集群管理器上,包括 Hadoop YARN、Apache Mesos 和 Kubernetes,也可以在独立模式下运行。
  • 数据处理模型: Spark 提供 RDD(弹性分布式数据集)、DataFrame 和 Dataset 等,支持更复杂的数据处理任务,并且编程模型更为简洁和灵活。
  • 生态系统: Spark 虽然是一个独立的项目,但与 Hadoop 生态系统兼容,可以与 Hadoop 工具和数据源无缝集成,同时也有自己的扩展组件,如 Spark SQL、Spark Streaming、MLlib 和 GraphX。
  • 支持语言: Java、Scala、Python、R

3.1. Spark 的两种设置
#

  1. With Hadoop (Data Lake)

Spark 可与 Hadoop 生态系统集成。这意味着 Spark 在 Hadoop 分布式文件系统(HDFS)上运行,利用 Hadoop 的资源管理器(如 YARN)来管理集群资源。 这种设置通常被称为 Data Lake,因为数据通常存储在 Hadoop 的分布式文件系统中,同时利用 Spark 进行数据处理和分析。

  1. Without Hadoop (Lake House)

Spark 也可独立于 Hadoop。这意味着 Spark 在云环境(如 AWS、Azure、Google Cloud)或者私有数据中心中独立运行,而不依赖于 Hadoop 分布式文件系统或资源管理器。 这种设置通常被称为 Lake House,因为数据存储在云存储系统(如 Amazon S3、Azure Data Lake Storage)或其他存储系统中,同时利用 Spark 进行数据处理和分析。 Cloud Lake House背后的驱动是Databricks Spark平台。

3.2. Spark 架构
#

  • Cluster: Spark本身不管理集群,它只给你一个数据处理框架。需要借助其它工具,如:YARN、Kubernetes、Mesos等
  • Engine:
    • Spark 引擎负责将数据处理任务分解为更小的任务,并在集群上调度这些任务以实现并行执行。
    • 它提供了数据管理和监视功能,使得用户可以有效地管理和监控任务的执行情况。
    • 此外,Spark 引擎还具有容错能力,能够在任务失败时进行恢复,确保数据处理的连续性。
    • 它还负责与集群资源管理器和数据存储管理器进行交互,以确保任务能够在集群上顺利运行,并能够有效地访问和管理数据。
  • Spark SQL: 使用户能够使用 SQL 来查询数据。
  • DataFrames:可以使用函数式编程风格来处理和分析数据,例如:Python、Scala、Java。
  • MLlib:提供了一个机器学习库,用于在大规模数据上进行机器学习和数据挖掘任务。
  • GraphX:提供了一个图计算库,用于在大规模图数据上进行图计算任务。
  • Spark Streaming:提了一个用于实时数据处理的模块。它使得用户能够通过在小批量数据上执行 Spark 任务来处理实时数据流。

参考资料
#

https://www.intel.cn/content/www/cn/zh/developer/articles/guide/spark-tuning-guide-on-xeon-based-systems.html

Spark - 这篇文章属于一个选集。
§ 1: 本文

相关文章

SQL系列 - 查询语句
··3747 字
SQL 数据库 数据分析
本文主要描述如何对 SQL 里的数据进行查询。
SQL系列 - 操作语句(增、删、改)
·1373 字
SQL 数据库 数据分析
本文主要描述如何对 SQL 里的数据进行操作,例如:增加数据、删除数据、修改数据等等。
SQL系列 - 创建数据库与数据表
·2896 字
SQL 数据库 数据分析
本文主要描述如何创建数据库、数据表、以及相关的约束和数据类型。
AB测试系列 - AB测试里的统计学 PART 2
·2670 字
AB测试 统计 数据分析
本文主要讨论在AB测试中遇到的统计学知识点,主要包括:最小样本量计算、实验时间计算、以及一些其他相关的统计知识点。
AB测试系列 - AB测试里的统计学 PART 1
·3793 字
AB测试 统计 数据分析
本文主要讨论在AB测试中遇到的统计学知识点,主要包括:效应大小、MDE、置信区间、假设检验等等。
AB测试系列 - 理清业务问题
·3940 字
AB测试 统计 数据分析
在做AB测试前,我们必须要理清业务相关的问题。这方面会涉及到公司层面、产品层面、功能层面等相关重要的内容及指标,本文会对这方面做出详细的介绍。