(1)mapreduce的运行框架
有五个步骤:(Map,Sort,Combine,Shuffle,Reduce)
map和reduce是最重要的两个步骤
- Map步骤是在不同的机器上独立且同步运行的。主要目的是要把数据转换为key-value的形式
- Reduce步骤是做聚合运算,它是在不同机器上独立且同步运行的
- Map 和 Reduce 中间夹杂着一步数据移动,也就是 shuffle,这步操作会涉及数量巨大的网络传输,需要大量的时间
- 由于 MapReduce 的框架限制,一个 MapReduce 任务只能包含一次 Map 和一次 Reduce,计算完成之后,MapReduce 会将运算结果写回到磁盘中(更准确地说是分布式存储系统)供下次计算使用。
在MapReduce 框架下,数据的格式都是key-value 形式
(2)Spark的运行框架:
由三个主要组件组成:Driver节点、Cluster Manager和Executor节点。
- Driver节点是应用程序的入口点,它负责解析用户的应用程序代码,并将任务划分成一系列的任务(stage),以及在集群上为任务安排调度。Driver节点负责管理各个任务之间的依赖关系,并将它们转换成一个可执行的物理执行计划(DAG)
- Cluster Manager负责在集群中为应用程序分配资源。它可以是Standalone,YARN或Mesos等。
- Executor节点负责在工作节点上执行任务。每个Executor都运行在自己的JVM进程中,并且为应用程序分配了一定数量的内存和CPU资源。Executor在运行过程中负责接收和执行任务。
2.MapReduce与spark的对比
- 内存计算
spark 将数据存储在内存中进行计算;MapReduce 将数据存储在磁盘上。
由于内存访问速度更快,spark 在处理迭代计算和交互式查询等工作负载时通常比 MapReduce 更高效。
Spark 基于内存的计算:
Spark中我们有一种优化策略:移动计算、不移动数据。旨在减少数据传输的开销,提高计算效率。其核心思想是将计算任务尽可能的放在数据所在的节点上执行,而不是将数据传输到计算节点。具体来说,包括下面两个方面:
- 数据本地性:
Spark 会尽量将计算任务分配到存储有数据的节点上,以利用数据的本地性。这样可以减少数据传输的开销。通过在数据所在节点上执行计算任务,可以避免将数据传输到其他节点,从而提高计算性能。
- 任务调度:
Spark 不会移动实际的数据。数据仍然保留在存储节点上,只有计算任务被分发到存储数据的节点上执行。
MapReduce基于磁盘的计算:
- 数据读取:
输入数据从磁盘读取到内存中进行处理。也就是说,每次需要处理数据时,都需要从磁盘读取相应的数据块到内存中进行计算操作。
- 中间结果存储:
MapReduce 框架会将 Map 和 Reduce 阶段的中间结果存储在磁盘上。在 Map 阶段,将 Map 任务的输出写入磁盘中的临时文件。在 Reduce 阶段,Reduce 任务会从磁盘上读取中间结果,并根据键值对进行合并和排序。
- 数据持久性:
将数据存储在持久化的磁盘介质上,及时在节点故障或计算过程中断的情况下,数据也能够持久保存。这样可以确保数据的可靠性和容错性。
- 执行速度
Spark 的内存计算特性 和 基于DAG有向无环图 的执行模型,通常比 MapReduce 更快。Spark可以在内存中保留数据和计算结果,并通过多个任务合并为更少的阶段来减少磁盘的读写开销。
- API 和编程模型
Spark提供了丰富的API,包括 scala、Java、Python等。开发起来更加灵活、表达能力更强。而 MapReduce 使用 Java 编程语言来编写 Map 和 Reduce 函数,需要手动编写更多的代码来实现处理逻辑。
- 扩展性
Spark 有更好的扩展性,可以方便的与其他数据处理框架和工具集成。如:Spark Streaming用于流处理、Spark SQL 用于查询和结构化数据处理、Spark MLlib用于机器学习等。
- 容错性
Spark提供了弹性式分布数据集RDD,具有自动容错和数据恢复机制。能够在节点故障时重新计算丢失的数据。
MapReduce 需要在每个任务的开始和结束时将数据写入磁盘,因此在故障情况下需要重新启动整个计算。
什么是容错性?
容错性是指系统在面对故障、错误或者异常情况时能够保持正常运行,并能够从故障中恢复或继续进行操作的能力。数据在处理中,由于数据规模庞大、且分布在多个计算节点上,节点故障可能导致任务中断或数据丢失。
四.Linux基础命令
1.pwd 命令
格式:pwd 功能:显示当前所在目录(即工作目录)。
[root@localhost ~]# pwd
2.ls命令
格式:ls [选项] [文件|目录]
功能:显示指定目录中的文件或子目录信息。当不指定文件或目录时,显示 当前工作目录中的文件或子目录信息。
命令常用选项如下: -a :全部的档案,连同隐藏档( 开头为 . 的档案) 一起列出来。
-l :长格式显示,包含文件和目录的详细信息。
-R :连同子目录内容一起列出来。
说明:命令“ls –l”设置了别名:ll,即输入 ll 命令,执行的是 ls –l
3.cd命令
格式:cd 路径>
功能:用于切换当前用户所在的工作目录,其中路径可以是绝对路径也可以 是相对路径。
4.mkdir命令
格式: mkdir [选项] 目录
功能:用于创建目录。
创建目录前需保证当前用户对当前路径有修改的权 限。参数 -p 用于创建多级文件夹。
5.cp命令
格式: cp [选项] 文件> 目标文件>
功能:复制文件或目录。
6.cat命令
格式:cat [选项] [文件]
功能:查看文件内容。
常用选项:-n 显示行号(空行也编号)。
7.tar命令
格式:tar [选项] [档案名] [文件或目录]
功能:为文件和目录创建档案。利用 tar 命令,可以把一大堆的文件和目录 全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便 于网络传输是非常有用的。该命令还可以反过来,将档案文件中的文件和目 录释放出来。
常用选项:
-c 建立新的备份文件。
-C 目录> 切换工作目录,先进入指定目录再执行压缩/解压缩操作,可用于 仅压缩特定目录里的内容或解压缩到特定目录。
-x 从归档文件中提取文件。
-z 通过 gzip 指令压缩/解压缩文件,文件名为*.tar.gz。
-f备份文件> 指定备份文件。 -v 显示命令执行过程。
8.useradd命令
格式:useradd 用户名
功能:创建新用户,该命令只能由 root 用户使用。
9.passwd命令
格式:passwd 用户名
功能:设置或修改指定用户的口令。
[root@localhost ~]# passwd teacher 更改用户 teacher 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
10.hostnamectl命令
格式 1:hostnamectl
功能:显示当前主机的名称和系统版本。
格式 2:hostnamectl set-hostname
功能:永久设置当前主机的名称。
为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。
本份面试集锦涵盖了
- 174 道运维工程师面试题
- 128道k8s面试题
- 108道shell脚本面试题
- 200道Linux面试题
- 51道docker面试题
- 35道Jenkis面试题
- 78道MongoDB面试题
- 17道ansible面试题
- 60道dubbo面试题
- 53道kafka面试
- 18道mysql面试题
- 40道nginx面试题
- 77道redis面试题
- 28道zookeeper
总计 1000+ 道面试题, 内容 又全含金量又高
- 174道运维工程师面试题
1、什么是运维?
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
3、现在给你三百台服务器,你怎么对他们进行管理?
4、简述raid0 raid1raid5二种工作模式的工作原理及特点
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
7、Tomcat和Resin有什么区别,工作中你怎么选择?
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码? 详情docs.qq.com/doc/DSmdCdUNwcEJDTXFK