从零开始的spark学习

spark学习笔记

一.Linux简单操作命令介绍

学习Spark的第一步就是学会liunx的简单命令,以下是关于liunx的简单操作命令的学习:

1.pwd命令

功能:显示当前所在目录(即工作目录)
在这里插入图片描述

2.ls命令

功能:显示指定目录中的文件或子目录信息。当不指定文件或目录时,显示
当前工作目录中的文件或子目录信息。
在这里插入图片描述

3.cd 命令

功能:用于切换当前用户所在的工作目录,其中路径可以是绝对路径也可以
是相对路径。
在这里插入图片描述

4.mkdir 命令

功能:用于创建目录。创建目录前需保证当前用户对当前路径有修改的权
限。参数 -p 用于创建多级文件夹。
在这里插入图片描述

5.rm 命令

功能:用于删除文件或目录,常用选项-r -f,-r 表示删除目录,也可以用于
删除文件,-f 表示强制删除,不需要确认。删除文件前需保证当前用户对当
前路径有修改的权限。
在这里插入图片描述

6.cp 命令

功能:复制文件或目录。
在这里插入图片描述

7.mv 命令

功能:移动文件或对其改名。常用选项-i -f -b,-i 表示若存在同名文件,则向用户
询问是否覆盖;-f 直接覆盖已有文件,不进行任何提示;-b 当文件存在时,覆盖
前为其创建一个备份。
在这里插入图片描述

8.cat 命令

功能:查看文件内容。常用选项:-n 显示行号(空行也编号)。
在这里插入图片描述

9 .tar 命令

功能:为文件和目录创建档案。利用 tar 命令,可以把一大堆的文件和目录
全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便
于网络传输是非常有用的。该命令还可以反过来,将档案文件中的文件和目
录释放出来。
在这里插入图片描述

二.Hadoop 生态圈组件介绍

学习spark之前先了解hadoop是什么东西,以下是我收集的一些关于hadoop的资料

1、简介

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

2、HDFS

Hadoop Distributed File System,简称HDFS,是个分布式文件系统,是hadoop的一个核心部分。HDFS有这高容错性(fault-tolerent)的特点,并且设计用来部署在低廉价的(low-cost)的硬件上,提供了高吞吐量(high-throughout)来访问应用程序的数据,适合那些有着超大数据集(largedata set)的应用程序。HDFS开始是为开源的apache项目nutch的基础结构而创建的。

3、MapReduce

Mapreduce是一个编程模型,一个处理和生成超大数据集算法模型的实现,简单概括就是“数据分解、并行计算、结果合并“。Mapreduce最大的优点是它简单的编程模型,程序猿只需根据该模型框架设计map和reduce函数,剩下的任务,如:分布式存储、节点任务调度、节点通讯、容错处理和故障处理都由mapreudce框架来完成,程序的设计有很高的扩展性。
在这里插入图片描述
Pig:Hadoop上的数据流执行引擎,由Yahoo开源,基于HDFS和MapReduce,使用Pig Latin语言表达数据流,目的在于让MapReduce用起来更简单。

Sqoop:主要用于在Hadoop和传统数据库进行数据互导。

ZooKeeper:分布式的,开放源码的分布式应用程序协调服务。

Flume:分布式、可靠、高可用的服务,它能够将不同数据源的海量日志数据进行高效收集、汇聚、移动,最后存储到一个中心化数据存储系统中,它是一个轻量级的工具,简单、灵活、容易部署,适应各种方式日志收集并支持failover和负载均衡。

Hive:构建在Hadoop之上的数据仓库,用于解决海量结构化的日志数据统计,定义了一种类SQL查询语言。

YARN:资源协调者、Hadoop 资源管理器,提供统一的资源管理和调度。

Impala:基于Hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata。

Solr:基于Lucene的全文检索引擎。

Hue:开源的Apache Hadoop UI系统,基于Python Web框架Django实现的。通过使用Hue可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据。

Oozie:基于工作流引擎的服务器,可以在上面运行Hadoop任务,是管理Hadoop作业的工作流调度系统。

Storm:分布式实时大数据处理系统,用于流计算。

Hbase:构建在HDFS上的分布式列存储系统,海量非结构化数据仓库。

Spark:海量数据处理的内存计算引擎,Spark框架包含Spark Streaming、Spark SQL、MLlib、GraphX四部分。

Mahout:Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现。

Drill:低延迟的分布式海量数据(涵盖结构化、半结构化以及嵌套数据)交互式查询引擎,使用ANSI SQL兼容语法,支持本地文件、HDFS、HBase、MongoDB等后端存储,支持Parquet、JSON、CSV、TSV、PSV等数据格式。

Tez:有向无环图的执行引擎,DAG作业的开源计算框架。

Shark:SQL on Spark,可以近似认为仅将物理执行计划从MR作业替换成了Spark作业。

三.spark技术特点和概述

1.Spark的概述

在这里插入图片描述
Spark主要由五部分组成:

Spark Core
Spark Core 中提供了 Spark 最基础与最核心的功能,Spark 其他的功能如:Spark SQL,
Spark Streaming,GraphX, MLlib 都是在 Spark Core 的基础上进行扩展的
Spark SQL
Spark SQL 是 Spark 用来操作结构化数据的组件。通过 Spark SQL,用户可以使用 SQL
或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据。
Spark Streaming
Spark Streaming 是 Spark 平台上针对实时数据进行流式计算的组件,提供了丰富的处理
数据流的 API。
Spark MLlib
MLlib 是 Spark 提供的一个机器学习算法库。MLlib 不仅提供了模型评估、数据导入等
额外的功能,还提供了一些更底层的机器学习原语。
Spark GraphX
GraphX 是 Spark 面向图计算提供的框架与算法库。
————————————————

2.Spark的特点

1.运行速度快
使用DAG执行引擎以支持循环数据流与内存计算,与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概述

MapReduce是一个分布式计算框架,起源于Google,它将大型数据操作作业分解为可以跨服务器集群并行执行的单个任务,适用于大规模数据处理场景。

MapReduce的设计思想为“分而治之”,它简化了并行计算的编程模型,并构建了抽象的Map和Reduce函数123。开发人员可以专注于实现Mapper和Reduce函数,而无需关注系统层的细节。

MapReduce的核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运行程序,并发运行在一个Hadoop集群上2。

MapReduce的输入数据格式为<K,V>键值对形式,其中Map负责将复杂的任务分解为若干个简单的任务来并行处理,而Reduce则对Map阶段的结果进行全局汇总12。

总的来说,MapReduce具有易于编程、可扩展性、高容错性、高吞吐量等优点,但不适合实时计算、流式计算和DGA计算

五.mapreduce和spark的区别

MapReduce和Spark是两种不同的分布式处理系统,它们在易用性、功能性、执行效率、编程语言支持、数据处理类型、容错性和扩展性等方面有显著的区别。以下是相关介绍:1234567

易用性和编程模型。MapReduce基于Map和Reduce函数,编程模型较为简单,但实现这些功能需要编写大量的代码;Spark基于RDD(弹性分布式数据集)和DStream(分布式流数据),提供了更高级的编程模型,如Spark SQL和MLlib,易于使用。124567
功能性。MapReduce仅提供批处理功能;Spark支持批处理、流处理、机器学习、图计算等多种处理方式。
执行效率。Spark基于内存计算,数据可以缓存起来,减少了磁盘读写,提高了计算效率;MapReduce将数据写入磁盘,每次执行都需要读取数据,效率较低。134567
编程语言支持。MapReduce主要支持Java;Spark支持Java、Scala、Python、R等多种编程语言。2456
数据处理类型。MapReduce主要用于处理结构化数据;Spark支持处理结构化数据、半结构化数据和非结构化数据。4
容错性。Spark具有较高的容错性,支持DAG图分布式计算,并通过RDD的弹性分布式数据集和检查点机制保证数据的高可用性;MapReduce依赖于HDFS分布式存储框架来实现数据的容错性。256
扩展性。Spark可以与其他数据处理框架和工具集成,具有更好的扩展性。6
总的来说,Spark在易用性、功能性、执行效率、编程语言支持、数据处理类型、容错性和扩展性等方面优于MapReduce,但MapReduce仍然在一些特定的应用场景中发挥作用。

六.结构化数据与非结构化数据的区别

1、定义不同
结构化数据:结构化数据也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。

非结构化数据:非结构化数据是数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。包括所有格式的办公文档、文本、图片、XML, HTML、各类报表、图像和音频/视频信息等等。

2、来源不同
结构化数据:结构化数据源来自 GPS 传感器、在线表单、网络日志、Web 服务器日志、OLTP 系统等。

非结构化数据:非结构化数据源包括电子邮件、文字处理文档、PDF 文件等。

3、形式不同
结构化数据:结构化数据由数字和值组成。

非结构化数据:非结构化数据由传感器、文本文件、音频和视频文件等组成。

4、模型不同
结构化数据:结构化数据具有预定义的数据模型,并且在放入数据存储(例如,写入时模式)之前被格式化为设定的数据结构。

非结构化数据:非结构化数据则以其本机格式存储,并且在使用之前不会进行处理(例如,读取时模式)。

5、存储不同
结构化数据:结构化数据以表格格式(例如,Excel 工作表或 SQL 数据库)存储,需要较少的存储空间。它可以存储在数据仓库中,这使其具有高度的可扩展性。

非结构化数据:非结构化数据存储为媒体文件或NoSQL数据库,这需要更多的空间。它可以存储在数据湖中,这使得它难以扩展。

6、使用不同
结构化数据:结构化数据用于机器学习(ML)并驱动其算法。

非结构化数据:非结构化数据用于自然语言处理(NLP)和文本挖掘。

拓展阅读
结构化数据工具
OLAP:从统一、集中的数据存储执行高速、多维的数据分析。
SQLite:实现一个独立的、无服务器的、零配置的事务性关系数据库引擎。
MySQL:将数据嵌入到大规模部署的软件中,特别是任务关键型重负载生产系统。
后交语法:支持 SQL 和 JSON 查询以及高级编程语言(C/C+、Java、python等)。
非结构化数据工具
MongoDB:使用灵活的文档来处理跨平台应用程序和服务的数据。
DynamoDB:通过内置安全性、内存中缓存以及备份和还原,在任何规模下均可提供个位数的毫秒级性能。
Hadoop:使用简单的编程模型提供大型数据集的分布式处理,并且没有格式化要求。
Azure:支持敏捷的云计算,以便通过微软的数据中心创建和管理应用。

此文章仅供自己学习,有多处转载,如有侵权请联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值