0


大数据生态组件学习笔记(一)

一、大数据生态系统组件

1.1 数据存储

· HDFS:Hadoop 分布式文件系统,提供高吞吐量的数据存储。

· HBase:分布式 NoSQL 数据库,适合实时读写。

· Cassandra:高可用性和可扩展性的 NoSQL 数据库,适合处理大量数据。

1.2 数据处理

· MapReduce:Hadoop 的计算模型,用于批处理。

· Apache Spark:快速的通用计算引擎,支持批处理和流处理。

· Apache Flink:流处理框架,适合实时数据处理。

  1. 3 数据分析

· Hive:数据仓库工具,提供 SQL 查询功能,适用于 Hadoop。

· Pig:用于大数据处理的脚本语言,简化 MapReduce 编程。

· Presto:分布式 SQL 查询引擎,支持多种数据源。

  1. 4 数据流处理

· Apache Kafka:分布式流处理平台,适合实时数据流的处理。

· Apache Storm:实时计算系统,处理数据流。

  1. 5 数据可视化

· Tableau:数据可视化工具,帮助用户分析和展示数据。

· Grafana:开源可视化工具,适合监控和分析数据。

  1. 6 数据管理与协调

· Apache Zookeeper:分布式协调服务,管理配置和命名。

· Apache NiFi:数据流自动化工具,支持数据的获取、转换和路由。

  1. 7 机器学习

· Apache Mahout:用于大规模机器学习的框架。

· MLlib:Spark 的机器学习库,提供多种算法和工具。

二、疑问解答

2.1 批处理和流处理的区别?

  1. 批处理:数据以批次的形式进行处理,通常在数据积累到一定量后进行处理。处理过程是离线的,适合大规模数据的定期分析。
  2. 流处理:数据以实时流的形式进行处理,数据一到达就立即处理。适合需要实时响应的应用场景。

2.2 计算引擎是什么?

   计算引擎是用于**处理和分析数据的核心组件**,负责执行数据处理任务和计算操作。它可以处理不同类型的数据(如结构化、半结构化和非结构化数据),并支持多种计算模型。

   常见的计算引擎包括: 

  1)Apache Spark:支持批处理和流处理,具有高性能和易用性。

  2)Apache Flink:专注于流处理,支持有状态计算。

  3)Hadoop MapReduce:经典的批处理模型,适用于大规模数据处理。

2.3 Apache是什么意思?

     “Apache” 的发音为 /əˈpætʃi/,可以音译为“阿帕奇”,通常表示如下含义,**Apache 软件基金会**(Apache Software Foundation,ASF)是一个**开源软件社区**,负责开发和维护多个知名的开源项目,如 Apache HTTP Server、Apache Hadoop、Apache Spark 等。

2.4 MapReduce和spark都可以批处理,两者之间有什么区别吗?

   虽然 MapReduce 和 Spark 都可以进行批处理,**但 Spark** 在性能、易用性和灵活性方面具有明显优势,**适合更广泛的应用场景**,它们之间有几个关键区别:

2.4.1 处理模型

  • MapReduce****:基于磁盘的处理模型,数据在每个 Map 和 Reduce 阶段之间会写入磁盘,通常需要多次读写磁盘。

  • Spark****:基于内存的处理模型,数据在内存中进行计算,减少了磁盘 I/O 操作,提高处理速度。

    2.4.2 性能

  • MapReduce:由于频繁的磁盘读写,性能相对较低,处理速度较慢。

  • Spark:由于内存计算,性能显著提高,通常比 MapReduce 快 10 到 100 倍。

    2.4.3 编程模型

  • MapReduce:编程模型相对复杂,开发者需要手动实现 Map 和 Reduce 函数,代码量较大。

  • Spark:提供更简单的 API,支持多种编程语言(如 Scala、Java、Python),易于使用,代码量较少

    2.4.4 使用场景

  • MapReduce:适合处理大规模静态数据,通常用于数据仓库和定期报告。

  • Spark:适合需要快速处理和分析的数据,支持批处理、流处理和交互式查询。

2.5 相同亿级的数据量,map所需的磁盘空间和spark所需的内存空间大概分别是多少?

   处理亿级数据所需的磁盘容量取决于多个因素,包括数据的结构、数据类型、压缩方式以及存储格式。
  • MapReduce:作为一个粗略的估算,处理亿级记录的数据集,假设每条记录平均占用 1 KB 的内存,那么总内存需求大约为:1 亿条记录 * 1 KB/条 = 100 GB,实际需求可能会更高,考虑到中间结果、操作的复杂性和其他因素,建议至少准备 1.5 到 2 倍的内存。

  • Spark:作为一个粗略的估算,假设每条记录平均占用 1 KB 的内存,那么处理亿级记录的数据集,压缩的总磁盘需求大约为:

    (1 亿条记录 * 1 KB/条 )/2= 50 GB
    

2.6 相同亿级的数据量,为什么Spark 所需的内存通常比 MapReduce 所需的磁盘空间大?

** Spark **所需的内存通常比 MapReduce 所需的磁盘空间大。

2.6.1 数据结构和开销

  • MapReduce:MapReduce 直接将数据写入磁盘,存储结构相对简单,通常没有额外的内存开销。
  • Spark:Spark 使用弹性分布式数据集(RDD)来表示数据,RDD 具有一定的元数据开销。

2.7 map是在内存中计算,然后数据存在磁盘中吗,从磁盘中读取数据;spark是在内存中计算,然后数据存在内存中吗,从内存中读取数据?

问题是正确的,在数据处理模型中,MapReduce 和 Spark 的计算与存储方式如下:
  • MapReduce:数据首先存储在磁盘中(如 HDFS),计算过程从磁盘读取数据,随后在内存中进行处理。处理完成后,中间结果和最终结果会被写入磁盘。

  • Spark:数据可以从磁盘读取,也可以从内存中读取。计算过程主要在内存中进行,将中间结果保留在内存中,以提高后续操作的效率。

     这种设计使得 Spark 在处理速度和性能上通常优于 MapReduce,尤其是在需要快速响应和实时分析的场景中。
    
标签: hadoop spark kafka

本文转载自: https://blog.csdn.net/qq_44990544/article/details/142492129
版权归原作者 昵称反正是不通过 所有, 如有侵权,请联系我们删除。

“大数据生态组件学习笔记(一)”的评论:

还没有评论