0


开局掉马,逃荒前我还在学Spark

Hadoop 概述

1.1Hadoop定义

Hadoop是目前应用最为广泛的分布式大数据处理框架,其具备可靠、高效、可伸缩等特点。Hadoop的核心组件是HDFS、MapReduce。随着处理任务不同,各种组件相继出现,丰富Hadoop生态圈,目前生态圈结构大致如图所示:

1.2Hadoop生态圈组件介绍

1)HDFS(分布式文件系统):HDFS是整个hadoop体系的基础,它是Hadoop生态系统中的核心项目之一,是分布式计算中数据存储管理基础。

2)MapReduce(分布式计算框架):是一种基于磁盘的分布式并行批处理计算模型,用于大规模数据集(大于1TB)的并行运算

3)Yarn(资源管理框架):是Hadoop2.0中的资源管理器,它可为上层应用提供统一的资源管理和调度,主要是为了解决原始Hadoop扩展性较差,不支持多计算框架而提出的。

4)Sqoop(数据迁移工具):sqoop是一款开源的数据导入导出工具,主要用于在Hadoop与传统的数据库间进行数据的转化,数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。

5)Mahout(数据挖掘算法库):开源项目,它提供了一些可扩展的机器的机器学习领域经典算法的实现,在帮助开发人员方便快捷地创建智能应用程序。

6)Hbase(分布式存储系统):是HBase是Google Bigtable克隆版,它是一个针对对结构化数据的可伸缩,高可靠,高性能,分布式和面向列的动态模式数据库。

7)Zookeeper(分布式协作服务):是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和HBase的重要组件。

8)Hive(基于Hadoop的数据仓库):Hive是基于Hadoop的一个分布式数据仓库工具,可以将结构化的数据文件映射为一张数据库表,将SQL语句转换为MapReduce任务进行运行。

9)Flume(日志收集工具):Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

Mapreduce概述

1.1 MapReduce定义

MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。
MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并行运行在一个Hadoop集群上。

1.2 MapReduce优缺点

1.2.1 优点

1)MapReduce 易于编程
它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点使得MapReduce编程变得非常流行。

2)良好的扩展性
当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。

3)高容错性
MapReduce设计的初衷就是使程序能够部署在廉价的PC机器上,这就要求它具有很高的容错性。比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于这个任务运行失败,而且这个过程不需要人工参与,而完全是由Hadoop内部完成的。

4)适合PB级以上海量数据的离线处理
可以实现上千台服务器集群并发工作,提供数据处理能力。

1.2.2 缺点

1)不擅长实时计算
MapReduce无法像MySQL一样,在毫秒或者秒级内返回结果。

2)不擅长流式计算
流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化。这是因为MapReduce自身的设计特点决定了数据源必须是静态的。

3)不擅长DAG(有向无环图)计算
多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。

1.3MapReduce核心思想

Spark技术特点和概述

1.1spark介绍

Spark于2000年诞生于美国加州大学伯克利分校的AMP实验室,它是一个可应用于大规模数据处理的统一分析引擎。它是基于内存计算的大数据并行计算框架。

Spark 是一个专门用来对那些分布式存储的大数据进行处理的工具,没有提供文件管理系统,自身不会进行数据的存储。它必须和其他的分布式文件系统进行集成才能运作。可以选择Hadoop的HDFS,也可以选择其他平台。

作为一个开源的数据处理框架,Spark 是如何做到如此迅速地处理数据的呢?秘密就在于它是运行在集群的内存上的,而且不受限于 MapReduce 的二阶段范式。这大大加快了重复访问同一数据的速度。

1.2Spark生态系统

Spark生态系统主要包含Spark Core. Spark SQL. Spark Streaming MI lib GraphX以及独立调度器:

1)Spark Core:Spark核心组件,它实现了Spark的基本功能。
2)Spark SQL:用来操作结构化数据的核心组件:通过Spork sqL可以直接在查询Hive.HBase 等多种外部数据源中的数据。Spark SQL的重要特点是能够统一处理关系表和RDD.在处理结构化数据时,开发人员无须编写MapReduce程序.直接使用SQL命令就能完成更加复杂的数据查询操作。
3)Spurtk Streamng: Spark提供的流式计算框架,支持高吞吐量、可容错处理的实时流式数据处理。SparkStreaming支持多种数据源,如Kafka、Flume以及TCP套接字等。
3)MLlib: Spark提供的关于机器学习功能的算法程序库,包括分类、回归、聚类、协同过滤算法等。
4)GraphX、Spark提供的分布式图处理框架.拥有图计算和图挖掘算法的API接口以及丰高的功能和运算符。
5)独立调度器、Yarn、Mesos: Spark支持在各种集群管理器(Cluster Manager)上运行,Hadoop Yarn、 Apache Mesos以及Spark 自带的独立调度器都被称为集群管理器。

1.3Spark生态系统优势

Spork生态系统各个组件关系密切,并且可以相互调用,这样设计具存以下是著优势:

Spark生态系统包含的所有程序库和高级组件都可以从Spark核心引擎的改进中获益不需要运行多套独立的软件系统,能够大大减少运行整个系统的资源代价。能够无缝整合各个系统,构建不同处理模型的应用。
Spark框架对大数据的支持从内存计算、实时处理到交互式查询,进而发展 到图计算和机器学习模块。

1.4Spark的特点

Spark计算框架在处理数据时,所有的中间数据都保存在内存中。同时Spark还兼容HDFS.Hive,可以很好地与Hadop系统融合.

1)速度快基于内泛计算
与Hadoop相比.Spark基于内存的运算效事要快100倍以上,基于硬盘的运算效率也要快10倍以上。

2)易用性
Spark编程支持Java、Python、Scala及R语言,并且还拥有超过80种高级算法.除此之外:Spark还支持交互式的Shell操作.

3)通用性
Spark提供了统一的解决方案,适用于批处理、交互式查询(Spark SQL)、 实时流处理 (Spark Streaming)、机器学习(Spark MEhb和图计算(GraphX)。

4)兼容性
Spark可以运行在Hadoop模式、Mesos模式、Standalone独立模式或Cloud中,并且还可以访问各种数据源包括本地文件系统、HDFS.Cassandra、HBase和Hive等。

Mapreduce和Spark的区别

首先大数据涉及两个方面:分布式存储系统分布式计算框架。前者的理论基础是GFS。后者的理论基础为MapReduce

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark 是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark 拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

1.1内存计算

Spark 将数据存储在内存中进行计算;MapReduce 将数据存储在磁盘上。由于内存访问速度更快,spark 在处理迭代计算和交互式查询等工作负载时通常比 MapReduce 更高效。

1.1.1Spark 基于内存的计算

Spark中我们有一种优化策略:移动计算、不移动数据。旨在减少数据传输的开销,提高计算效率。其核心思想是将计算任务尽可能的放在数据所在的节点上执行,而不是将数据传输到计算节点。具体来说,包括下面两个方面:

1)数据本地性:

Spark 会尽量将计算任务分配到存储有数据的节点上,以利用数据的本地性。这样可以减少数据传输的开销。通过在数据所在节点上执行计算任务,可以避免将数据传输到其他节点,从而提高计算性能。

2)任务调度:

Spark 不会移动实际的数据。数据仍然保留在存储节点上,只有计算任务被分发到存储数据的节点上执行。

1.1.2MapReduce基于磁盘的计算

1)数据读取:

输入数据从磁盘读取到内存中进行处理。也就是说,每次需要处理数据时,都需要从磁盘读取相应的数据块到内存中进行计算操作。

2)中间结果存储:

MapReduce 框架会将 Map 和 Reduce 阶段的中间结果存储在磁盘上。在 Map 阶段,将 Map 任务的输出写入磁盘中的临时文件。在 Reduce 阶段,Reduce 任务会从磁盘上读取中间结果,并根据键值对进行合并和排序。

3)数据持久性:

将数据存储在持久化的磁盘介质上,及时在节点故障或计算过程中断的情况下,数据也能够持久保存。这样可以确保数据的可靠性和容错性。

1.2执行速度

Spark 的内存计算特性 和 基于DAG有向无环图 的执行模型,通常比 MapReduce 更快。Spark可以在内存中保留数据和计算结果,并通过多个任务合并为更少的阶段来减少磁盘的读写开销。

1.3API 和编程模型

Spark提供了丰富的API,包括 scala、Java、Python等。开发起来更加灵活、表达能力更强。而 MapReduce 使用 Java 编程语言来编写 Map 和 Reduce 函数,需要手动编写更多的代码来实现处理逻辑。

1.4扩展性

Spark 有更好的扩展性,可以方便的与其他数据处理框架和工具集成。如:Spark Streaming用于流处理、Spark SQL 用于查询和结构化数据处理、Spark MLlib用于机器学习等。

1.5容错性

Spark提供了弹性式分布数据集RDD,具有自动容错和数据恢复机制。能够在节点故障时重新计算丢失的数据。

MapReduce 需要在每个任务的开始和结束时将数据写入磁盘,因此在故障情况下需要重新启动整个计算。

结构化数据与非结构化数据

1.1结构化数据

结构化数据是指按照一定的规则和格式进行组织和存储的数据。它具有明确的数据类型和关系,可以通过预定义的模式或模型进行描述和解释。常见的结构化数据包括关系型数据库中的表格数据、电子表格中的数据、XML文件中的数据等。结构化数据通常可以通过查询和分析工具进行处理和分析,从中提取有用的信息和洞察。与结构化数据相对的是非结构化数据,如文本、图像、音频和视频等,它们没有明确的结构和格式,处理和分析起来更加困难。

1.2非结构化数据

非结构化数据是指没有明确的结构和格式的数据,它不符合传统的表格、行列或关系型数据库的组织形式。非结构化数据的特点是多样性、复杂性和不规则性,常见的非结构化数据包括文本文档、电子邮件、社交媒体帖子、音频和视频文件、图像、日志文件等。

与结构化数据不同,非结构化数据没有明确的数据模型或模式,因此处理和分析非结构化数据更具挑战性。传统的关系型数据库和查询语言无法直接处理非结构化数据,需要使用特定的技术和工具进行处理,如自然语言处理、文本挖掘、图像识别、语音识别等。

非结构化数据在现实生活中广泛存在,例如社交媒体上的用户评论、新闻文章、音频和视频文件中的内容、传感器数据等。对非结构化数据的分析和挖掘可以帮助企业和组织发现隐藏的信息、洞察用户需求、进行情感分析、进行风险评估等。

1.3结构化数据和非结构化数据的区别

1.3.1数据组织形式

结构化数据按照预定义的模式和格式进行组织,具有明确的数据类型和关系,通常以表格、行列或关系型数据库的形式存储。非结构化数据没有明确的结构和格式,多样性、复杂性和不规则性较高,以文本、图像、音频、视频等形式存在。

1.3.2数据处理方式

结构化数据可以通过传统的查询语言(如SQL)进行处理和分析,可以进行数据的筛选、排序、聚合等操作。非结构化数据的处理需要使用特定的技术和工具,如自然语言处理、图像识别、语音识别等,以提取有用的信息和洞察。

1.3.3数据分析能力

结构化数据由于有明确的结构和格式,可以进行较为精确的数据分析和建模,可以进行统计分析、预测建模等。非结构化数据的分析相对更具挑战性,需要使用更复杂的技术和算法,如文本挖掘、情感分析、图像识别等。

1.3.4数据应用领域

结构化数据常用于企业的业务数据管理、报表生成、决策支持等方面。非结构化数据常用于社交媒体分析、舆情监测、情感分析、图像识别、语音识别等领域。

Linux简单操作命令实训练习

1.1实验任务一:文件与目录操作

1.1.1步骤一:pwd 命令

1.1.2步骤二:ls 命令

1.1.3步骤三:cd 命令

1.1.4步骤四:mkdir 命令

1.1.5步骤五:rm 命令

1.1.6步骤六:cp 命令

1.1.7步骤七:mv 命令

1.1.8步骤八:cat 命令

1.1.9步骤九:tar 命令

1.2实验任务二:用户操作

1.2.1步骤一:useradd 命令

1.2.2步骤二:passwd 命令

1.2.3步骤三:chown 命令

1.2.4步骤四:chmod 命令

1.2.5步骤五:su 命令

标签: spark hadoop

本文转载自: https://blog.csdn.net/m0_66939712/article/details/136537255
版权归原作者 YYTQX 所有, 如有侵权,请联系我们删除。

“开局掉马,逃荒前我还在学Spark”的评论:

还没有评论