操作系统基础1
第 1 章 计算机系统概述1.1 操作系统的基本概念1.1.1 操作系统的概念、功能和目标(系统资源的管理者、提供接口、作为扩充机器、虚拟机)1.熟悉的操作系统举例
2.操作系统的层次结构
3.操作系统的概念
是系统最基本最核心的软件,属于系统软件
控制和管理整个计算机的硬件和软件资源
合理的组织、调度计算机的工作与资源的分配
为用户和其它软件提供方便的接口和环境
4.操作系统的功能和目标
先放一张思维导图,大致知道操作系统的具体功能和目标,然后再一一展开叙述。
用一个直观的例子来理解上述图中操作系统的功能:
我们假设:用户是雇主,操作系统是工人(用来操作机器),计算机是机器(由处理机(CPU)、存储器、设备、文件几个部件构成)
工人有熟练的技能去控制和协调各个部件的工作,这就是操作系统对资源的管理
同时,工人必须接受雇主的命令,这就是“接口”
有了工人,机器就能发挥更大的作用,因此工人就成了“扩充机器”
工人操作机器、机器有了更大的作用比如GUI界面,于是工人便成了扩充机器,去扩充GUI界面等功能
(1)作为计算机系统资源的管理者
管理软硬件资源、合理的组织、调度计算 ...
大数据栈简介
HadoopHadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。
HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;
它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。
HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
HDFSHadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。 但同时,它和其他的分布式文件系统的区别也是很明显的。
HDFS是一个高度容错性的系统,适合部署在 ...
zookeeper基础
Zookeeper 入门概述Zookeeper 是一个开源的分布式的,为分布式框架提供协调服务的 Apache 项目。
Zookeeper工作机制
Zookeeper从设计模式角度来理解:是一个基 于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就 将负责通知已经在Zookeeper上注册的那些观察 者做出相应的反应。
特点
Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。
集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。所 以Zookeeper适合安装奇数台服务器。
全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。
更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行。
数据更新原子性,一次数据更新要么成功,要么失败。
实时性,在一定时间范围内,Client能读到最新数据。
数据结构ZooKeeper 数据模型的结构与 Unix 文件系统很类似 ...
操作系统常见面试题
操作系统常见面试题说一下什么事进程、线程、协程进程
程序的一次执行过程
一个程序及其数据在处理和顺序执行时所发生的活动
独立的功能的程序在一个数据集合上所运行的过程,他是系统进行资源分配和调度的一个独立单位
线程
操作系统调度的最小单位
一个进程可以包含多个线程、是进程中的实际运行单位
一个线程指的事进程中一个单一顺序的控制流
协程
用户态内执行,并不是在操作系统内执行的
一个线程可以包括多个协程
在java中没有实习协程、但是在python、lua等一些语言中使用协程
线程中哪些资源是共享,哪些资源不共享线程共享资源
堆
由于堆是在进程空间中开辟出来的,所以它是被该进程中的线程所共享的;
堆中主要存放对象实例,栈中主要存放各种基本数据类型、对象的引用指针
全局变量
它是与某一函数无关的,与特定线程无关的,因此也是共享的
静态变量
虽然对局部变量来说,他在代码中是在函数中的,但是其存放位置和全部变量一样,存于堆中开辟的位置
文件等公用资源
这个是共享的,使用这些公共资源的线程必须同步。win32提供了几种同步资源的方式,包括信号、临界区、事件和互斥体
线程 ...
协程
进程和线程的痛点
线程之间的通讯要设计到同步锁
涉及到线程上下文切换
涉及到阻塞状态和运行状态切换
协程协程,英文Coroutines,是一种比线程更加轻量级的存在。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。
最重要的是,协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。
这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源。
由于Java的原生语法中并没有实现协程(某些开源框架实现了协程,但是很少被使用),比较多的是python、lua中使用协程
具体了解推荐:
https://blog.csdn.net/zheng199172/article/details/88800275
https://www.liaoxuefeng.com/wiki/897692888725344/923057403198272
无题
Spark基础-1SparkCoreSpark 概述Spark 是什么
Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。
Spark and Hadoop在之前的学习中,Hadoop 的 MapReduce 是大家广为熟知的计算框架,那为什么咱们还要学习新的计算框架 Spark 呢,这里就不得不提到Spark 和Hadoop 的关系。
首先从时间节点上来看:
Hadoop
2006 年 1 月,Doug Cutting 加入Yahoo,领导Hadoop 的开发
2008 年 1 月,Hadoop 成为 Apache 顶级项目
2011 年 1.0 正式发布
2012 年 3 月稳定版发布
2013 年 10 月发布 2.X (Yarn)版本
Spark
2009 年,Spark 诞生于伯克利大学的AMPLab 实验室
2010 年,伯克利大学正式开源了 Spark 项目
2013 年 6 月,Spark 成为了 Apache 基金会下的项目
2014 年 2 月,Spark 以飞快的速度成为了 Apache 的顶级项目
2015 年至今,Spar ...
hadoop高级-2源码分析
hadoop高级-2源码分析视频资料和笔记资料来自尚硅谷:https://www.bilibili.com/video/BV1Qp4y1n7EN?p=1
RPC通信原理解析回顾HDFS、YARN、MapReduce三者关系
需求:模拟RPC的客户端、服务端、通信协议三者如何工作的
代码编写
在HDFSClient项目基础上创建包名top.lvxiaoyi.rpc
创建RPC协议
123456789101112package top.lvxiaoyi.rpc;/** * @author lvxiaoyi * @date 2021/11/13 9:20 */public interface RPCProtocol { long versionID = 666; void mkdirs(String path);}
创建RPC服务端
12345678910111213141516171819202122232425262728293031323334package top.lvxiaoyi.rpc;import org.apache.hadoop.c ...
hadoop基础-3Yarn
hadoop基础-3Yarn视频资料和笔记资料来自尚硅谷:https://www.bilibili.com/video/BV1Qp4y1n7EN?p=1
Yarn资源调度器思考:
1)如何管理集群资源?
2)如何给任务合理分配资源?
Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。
Yarn基础架构YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。
ResourceManager (RM)主要作用如下
处理客户端请求
监控NodeManager
启动或监控ApplicationMaster
资源的分配与调度
NodeManager (NM)主要作用如下
管理单个节点上的资源
处理来自ResourceManager的命令
处理来自ApplicationMaster的命令
ApplicationMast er (AM)作用如下
为应用程序申请资源并分配给内部的任务
任务的监控 ...
hadoop高级-1生产调优
hadoop高级-1生产调优视频资料和笔记资料来自尚硅谷:https://www.bilibili.com/video/BV1Qp4y1n7EN?p=1
HDFS—核心参数NameNode内存生产配置
NameNode内存计算
每个文件块大概占用150byte,一台服务器128G内存为例,能存储多少文件块呢?
123128 * 1024 * 1024 * 1024 / 150Byte ≈ 9.1亿G MB KB Byte
Hadoop2.x系列,配置NameNode内存
NameNode内存默认2000m,如果服务器内存4G,NameNode内存可以配置3g。在hadoop-env.sh文件中配置如下。
HADOOP_NAMENODE_OPTS=-Xmx3072m
Hadoop3.x系列,配置NameNode内存
hadoop-env.sh中描述Hadoop的内存是动态分配的
1234567891011121314# The maximum amount of heap to use (Java -Xmx). If no unit# i ...
hadoop基础-1
hadoop基础-1视频资料和笔记资料来自尚硅谷:https://www.bilibili.com/video/BV1Qp4y1n7EN?p=1
资料:https://pan.baidu.com/s/1P5JAtWlGDKMAPWmHAAcbyA,提取码:5h60
概述发展是什么
Hadoop是一个由Apache基金会所开发的分布式系统基础架构
主要解决,海量数据的存储和海量数据的分析计算问题。
广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈。
发展历史
Hadoop创始人DougCutting,为了实现与Google类似的全文搜索功能,他在Lucene框架基础上进行优
化升级,查询引擎和索引引擎。
2001年年底Lucene成为Apache基金会的一个子项目。
对于海量数据的场景,Lucene框架面对与Google同样的困难,存储海量数据困难,检索海量速度慢。
学习和模仿Google解决这些问题的办法:微型版Nutch。
可以说Google是Hadoop的思想之源(Google在大数据方面的三篇论文)
2003-2004年,Google公开 ...
hadoop基础-2HDFS
hadoop基础-2HDFS视频资料和笔记资料来自尚硅谷:https://www.bilibili.com/video/BV1Qp4y1n7EN?p=1
HDFS概述HDFS产出背景及意义HDFS产生背景随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。
HDFS定义HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。
HDFS优缺点优点
高容错性
数据自动保存多个副本。它通过增加副本的形式,提高容错性。
某一个副本丢失以后,它可以自动恢复。
适合处理大数据
数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据;
文件规模:能够处理百万规模以上的文件数量。数 ...
hadoop基础-2MapReduce
hadoop基础-2MapReduce视频资料和笔记资料来自尚硅谷:https://www.bilibili.com/video/BV1Qp4y1n7EN?p=67
MapReduce概述MapReduce定义MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。
MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。
MapReduce优缺点优点
MapReduce易于编程
它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点使得MapReduce编程变得非常流行。
良好的扩展性
当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。
高容错性
MapReduce设计的初衷就是使程序能够部署在廉价的PC机器上,这就要求它具有很高的容错性。比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行 ...
Spark基础-4Spark核心
Spark基础-4Spark核心Spark 内核概述Spark 内核泛指 Spark 的核心运行机制,包括 Spark 核心组件的运行机制、Spark 任务调度机制、Spark 内存管理机制、Spark 核心功能的运行原理等,熟练掌握 Spark 内核原理,能够帮助我们更好地完成 Spark 代码设计,并能够帮助我们准确锁定项目运行过程中出现的问题的症结所在。
Spark 核心组件回顾DriverSpark 驱动器节点,用于执行 Spark 任务中的 main 方法,负责实际代码的执行工作。Driver 在 Spark 作业执行时主要负责:
将用户程序转化为作业(Job);
在 Executor 之间调度任务(Task);
跟踪 Executor 的执行情况;
通过 UI 展示查询运行情况;
ExecutorSpark Executor 对象是负责在 Spark 作业中运行具体任务,任务彼此之间相互独立。Spark 应用启动时,ExecutorBackend 节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有 ExecutorBackend 节点发 ...
Spark基础-3SparkStreaming
Spark基础-3SparkStreamingSparkStreaming 概述Spark Streaming 是什么
Spark 流使得构建可扩展的容错流应用程序变得更加容易。
Spark Streaming 用于流式数据的处理。Spark Streaming 支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ 和简单的 TCP 套接字等等。数据输入后可以用 Spark 的高度抽象原语如:map、reduce、join、window 等进行运算。而结果也能保存在很多地方,如 HDFS,数据库等。
和 Spark 基于 RDD 的概念很相似,Spark Streaming 使用离散化流(discretized stream)作为抽象表示,叫作DStream。DStream 是随时间推移而收到的数据的序列。在内部,每个时间区间收到的数据都作为 RDD 存在,而 DStream 是由这些RDD 所组成的序列(因此得名“离散化”)。所以简单来将,DStream 就是对 RDD 在实时数据处理场景的一种封装。
Spark Streaming 的特点
易用
容错
...
Spark基础-5Spark优化
Spark基础-5Spark优化Spark 性能调优常规性能调优常规性能调优一:最优资源配置Spark 性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行后面论述的性能调优策略。
资源的分配在使用脚本提交 Spark 任务时进行指定,标准的 Spark 任务提交脚本如下所示:
123456789bin/spark-submit \--class com.atguigu.spark.Analysis \--master yarn--deploy-mode cluster--num-executors 80 \--driver-memory 6g \--executor-memory 6g \--executor-cores 3 \/usr/opt/modules/spark/jar/spark.jar \
可以进行分配的资源如表所示:
名称
说明
–num-executors
配置 Executor 的数量
–driver-memory
配置 Driver 内存( 影响不大)
...