01-黑马程序员大数据开发

一.  Hadoop概述

1. 什么是大数据

  • 狭义上:对海量数据进行处理的软件技术体系
  • 广义上:数字化、信息化时代的基础支撑,以数据为生活赋

2. 大数据的核心工作:

  • 存储:妥善保存海量待处理数据;Apache KUDU、云平台存储:阿里云OSS、UCloud的US3、AWS的S3、金山云的KS3等等
  • 计算:完成海量数据的价值挖掘;Apache Hadoop - MapReduce;ApacheHive是一款以SQL为要开发语言的分布式计算框架;Apache Spark;ApacheFlink
  • 传输:协助各个环节的数据传输;Apache Kafka是一款分布式的消息系统,可以完成海量规模的数据传输工作;Apache PULSAR; Apache Flume是一款流失数据采集工具;Apache Sqoop是一款ETL工具,可以协助大数据体系和关系型数据库之间进行数据传输。

3.  Hadoop是Apache软件基金会下的顶级开源项目,用以提供:

  • 分布式数据存储
  • 分布式数据计算
  • 分布式资源调度

为一体的整体解决方案。是典型的分布式软件框架,可以部署在1台乃至成千上万台服务器节点上协同工作。Hadoop是开源的技术框架,提供分布式存储、计算、资源调度的解决方案。个人或企业可以借助Hadoop构建大规模服务器集群,完成海量数据的存储和计算。

4. Hadoop是一个整体,其内部还会细分为三个功能组件,分别是:
        HDFS组件:HDFS是Hadoop内的分布式存储组件,可以构建分布式文件系统用于数据存储
        MapReduce组件:NapReduce是Hadoop内分布式计算组件,提供编程接口供用户开发分布式计算程序
        YARN组件:YARN是Hadoop内分布式资源调度组件。 可供用户整体调度大规模集群的资源使用。

二.  HDFS组件

2.1 为什么需要分布式存储

  • 数据量太大,单机存储能力有上限,需要靠数量来解决问题
  • 数量的提升带来的是网络传输、磁密读写(多倍的网络传输效率、多倍的磁盘写入效率)、CPU、内存等各方面的综合提升。分布式组合在一起可以达到1+1>2的效果

2.2 分布式的基础架构分析

1.  分布式系统常见的组织形式?大数据体系中,分布式的调度主要有2类架构模式:

  • 去中心化模式:没有明确的中心,众多服务器之间基于特定规则进行同步协调;如区块链
  • 中心化模式:以一个节点(1台服务器)作为中心,去统一调度其他的节点

2. 大数据框架,大多数的基础架构上,都是符合:中心化模式的(一主多从模式,简称主从模式(MasterAndSlaves))
即:有一个中心节点(服务器)来统筹其它服务器的工作,统一指挥,统一调派,避免混乱。在现实生活中很常见:公司企业管理、组织管理、行政管理

3.  Hadoop是哪种模式?
        主从模式(中心化模式)的架构

2.3 HDFS的基础架构

1.  HDFS是Hadoop三大组件(HDFS、MapReduce、YARN)之一

  • 全称是:Hadoop Distributed File System (Hadoop分布式文件系统)
  • 是Hadoop技术栈内提供的分布式数据存储解决方案
  • 功能:可以在多台服务器上构建存储集群,存储海量的数据

 2.   HDFS中的架构角色有哪些?

  • NameNode:主角色,管理HDFS集群和DataNode角色
  • DataNode:从角色,负责数据的存储
  • SecondaryNameNode:辅助角色,协助NameNode整理元数据

3. HDFS的基础架构


2.4 HDFS集群环境部署

2.4.1 VMware虚拟机中的部署

第二章-04-[实操]VMware虚拟机部署HDFS集群_哔哩哔哩_bilibili

1. 上传和解压到/export/server,配置软链接

hadoop安装包目录结构

2.  修改4份配置文件,应用自定义设置:找到etc配置文件中的以下4个文件,对其进行修改。

四个文件配置完成。继续:分发到node2、node3,并设置环境变量

4. 创建数据目录,并修改文件权限归属hadoop账户。此时三台机器就配置完成了。还剩下至关重要的一步:授权hadoop用户。也就是将\data和\export文件的root用户变成hadoop用户。

前置准备工作全部完成,下一步开始去执行相关的命令并启动它。首先格式化整个文件系统

5. 启动,并查看WEB UI

回收站的配置:
        vim core-site.xml

集群部署常见问题解决:

1. 千辛万苦部署好了Hadoop的HDFS集群,如果中间出现误操作导致集群出现问题了怎么办?有没有什么方便的办法保存刚刚部署好的状态?
答:在虚拟机里面部署好hadoop之后,记得打(虚拟机)快照,当出现问题之后,可以恢复到快照即可。

打快照之前要将hdfs集群关闭【在hadoop权限下操作,不能在root权限下】—— 关闭整个服务器—— 退回root账户 —— init 0 关机(node1、node2、node3都关机) —— 打快照。

  • 是否遗漏了前置准备章节的相关操作?
    包括服务器的创建、SSH免密、Hadoop用户的创建、防火墙的关闭、固定IP主机名映射、JDK部署等。
  • 是否遗漏的将文件夹(Hadoop安装文件夹、/data数据文件夹)chown授权到hadoop用户这一操作。
    从root授权到hadoop用户,将导致hadoop用户没有权限,此时集群无法启动成功。 
  • 是否遗忘了格式化hadoop这一步 (hadoop namenode -format)
  • 是否是以root用户格式化的hadoop。
    此时再以hadoop用户去启动集群时会遇到没有权限的问题。
  • 是否以root启动过hadoop,后续以hadoop用户启动出错。
    只要以root操作过一次,那么相关的一些目录权限都归root了,后续再以hadoop启动,就会没有权限。
  • 是否确认workers文件内,配置了node1、node2、node3三个节点
    如果没有配置三个节点,后续在执行start dfs.sh这个脚本文件启动脚本文件时,只有node1启动了,node2和node3没有反应。
  • 是否在/etc /profile内配置了HADOOP_ HOME环境变量,并将$HADOOP_HOME/bin和$HADOOP_HOME/sbin加入PATH变量
    如果没有配置,后续在执行start dfs.sh脚本或stop dfs.sh脚本时,会出现“命令不存在”;或者hadoop namenode -format时,也会出现hadoop命令不存在,因为hadoop命令来自bin文件夹相关脚本,start 来自sbin文件夹中的相关脚本。
  • 是否遗忘了软链接,但环境变量的配置的HADOOP_HOME却是:/export/server/hadoop
    环境配置时用的是简写hadoop,如果没有软链接,就会出现问题
  • 是否确认配置文件内容的准确(一个字符都不错),并确保三台机器的配置文件都OK。
详细细节版:第二章-06-[了解]集群部署常见问题-2_哔哩哔哩_bilibili

常见出错点:权限未正确设置、配置文件错误、未格式化。要细心,查日志看出错原因。

2.4.2 云服务器中的部署:阿里云、Ucloud两种,操作步骤一样。

第二章-07-[可选]云服务器上部署hdfs集群_哔哩哔哩_bilibili

1. 云服务器如何保存服务器状态、或者说出错了怎么快速恢复状态呢?

  • 云服务器快照服务(可能收费,不推荐)
  • 打包配置好的Hadoop安装包留存(推荐)

2.5 HDFS的Shell操作

2.5.1 HDFS相关进程的启停管理命令

1. Hadoop HDFS组件内置了HDFS集群的一键启停脚本。

  • $HADOOP_HOME/sbin/ start-dfs.sh ,一键启动HDF
  • $HADOOP_HOME/sbin/stop-dfs.sh ,一键关闭HD

2. 除了一键启停外,也可以单独控制进程的启停。

  • $HADOOP_HOME/sbin/hadoop-daemon.sh,此脚本可以单独控制所在机器(node1 or node2)的进程的启停;
  • $HADOOP_HOME/bin/hdfs,此程序也可以用以单独控制所在机器的进程的启停
hadoop -daemon.sh(start|status|stop)(namenode|secondarynamenode|datanode);
hdfs --daemon(start|status|stop)(namenode|secondarynamenode|datanode)
2.5.2 HDFS文件系统的基础操作命令

1.  HDFS作为分布式存储的文件系统,有其对数据的路径表达方式
•   HDFS同Linux系统一样,均是以/作为根目录的组织形式,例如:
        Linux:         /usr/local/hello.txt,如路径:file:///usr/local/hello.txt
        HDFS:        /usr/local/hello.txt,如路径:hdfs://node1:8020/usr/local/hello.txt
那么怎么区分命令操作的事Linux还是HDFS? 可以通过协议头file:// 或者hdfs://namenode:port(可以省略,需要提供LinuX路径的参数,会自动识别为file://,需要提供HDFS路径的也会自动识别)。

2. 关于HDFS文件系统的操作命令,Hadoop提供了2套命令体系:用法完全一致
​​​​​​​        • 老版本:hadoop fs [generic options]
        • 新版本:hdfs dfs [generic options]

# 1. 创建文件夹
# hadoop fs -mkdir [-p] <path> ...
# hdfs dfs -mkdir [-p] <path> ...
hadoop fs -mkdir -p /itcast/bigdata  #创建在hadoop文件系统里
hdfs dfs -ls /            #查看hadoop文件系统根目录下的文件:有itcast文件夹
hdfs dfs -ls /itcast      #查看hadoop文件系统根目录下的文件:有bigdata文件夹
# 2. 查看置顶目录下内容
# hdfs dfs -ls [-h] [-R] <path> ...  

# 3. 从本地Linux向HDFS上传文件,到HDFS指定目录下
# pdfs dfs -put [-f] [-p] <localsrc> ... <dst> 
# -f:强制覆盖目标文件;-p:保留文件信息、访问和修改时间、所有权和权限; localscr:Linux本地的文件; dst:上传到HDFS的位置
vim test.txt #在Linux中新建一个文件
vim test2.txt
hadoop fs -put file:///home/hadoop/test.txt hdfs://node1:8020/  #上传到hdfs文件体统的根目录
hdfs dfs -put /home/hadoop/test2.txt /

# 4.查看HDFS文件内容
# hdfs dfs -cat <src> ... 
hadoop fs -cat /test.txt
# hdfs dfs -cat <src> | more 
# 读取大文件时,防止可以使用 管道符配合more 进行翻页查看。
hadoop fs -cat /test2.txt | more

# 5.从HDFS中向Linux中下载文件
# hdfs dfs -get [-f] [-p] <src> ... <localdst>
hdfs dfs -get /test.txt .  #.代表Linux的当前目录,将test文件下载到Linux当前目录
hdfs dfs -get -f /test.txt .

# 6. 拷贝HDFS文件/改名
# hdfs dfs -cp [-f] <src> ... <dst> #两个路径都是HDFS文件系统中的路径
# <src>是被复制的路径。<dst>是目标路径
hdfs dfs -cp /test.txt /home/
hdfs dfs -cp /test.txt /home/abc.txt

# 7. 追加数据到HDFS文件中:HDFS文件系统中文件的修改仅支持 删除文件 和 追加内容 两种,不能修改其中的内容。
vim append.txt  #在Linux本地创建文件append.txt
hadoop fs -appendToFile append.txt /test.txt  #将本地的文件追加到HDFS文件系统的test文件末尾
 
# 8. HDFS数据移动操作/重命名
hadoop fs -mv /test.txt /itheima/  #将test文件移动到itheima文件夹下
hadoop fs -mv /test2.txt /itheima/abc.txt. #完成移动文件的同时对文件进行改名

# 9. HDFS数据删除操作:删除文件-rm or文件夹-rm -r
# hadoop fs -rm -r [-skipTrash] URI [URI ...]
# -skipTrash 跳过回收站,直接删除;回收站默认是关闭的,如果要开启需要在core-site.xml内配置(在那个机器里配置,那个机器即时生效,不需要重启集群)
hadoop fs -rm -r /home
hadoop fs -rm /test.txt

 命令官方指导文档
Hadoop文档

除了写命令,也可以在HDFS WEBUI网页端上进行操作(有些操作没有权限,但是可以授予权限,进行以下配置)。

mkdir创建文件夹
ls、cat列出内容、查看内容

cp、mv、rm

复制、移动、删除
put、get上传、下载
appendToFile向文件追加内容

Permission denied:遇到这种体型,其实是因为在HDFS之上没有权限。在整个HDFS文件系统中,也是有文件的权限控制的,它的逻辑和Linux文件系统完全一致。既然有权限控制,那么就存在超级用户,HDFS与Linux之间的不同之处在于超级用户的不同,Linux的超级用户是root,HDFS文件系统的超级用户是(也就是课程的hadoop用户)。因此,如果在遇到这个问题,大概率是因为操作HDFS时没有以Hadoop用户执行,而是以root用户执行。

# 在HDFS中,可以使用和Linux一样的授权语句,即:chown和chmod
# 修改所属用户和组:
hadoop fs -chown [-R] root:root /xxx.txt
hdfs dfs -chown [-R] root:root /xxx.txt
hdfs dfs -chown root:supergroup /test.txt
# 修改权限
hadoop fs -chmod [-R] 777 /xxx.txt
hdfs dfs -chmod [-R] 777 /xxx.txt
hdfs dfs -chmod -R 777 /data
# -R:对子目录也会生效,将文件xxx.txt的权限改成777
# 课后练习
hadoop fs -mkdir -p /itcast/itheima
hadoop fs -put /etc/hosts /itcast/itheima/
hadoop fs -ls /itcast/itheima
hadoop fs -cat /itcast/itheima/hosts

vim append.txt  #(要追加的内容:itheima)
hadoop fs -appendToFile append.txt /itcast/itheima/hosts
hadoop fs -cat /itcast/itheima/hosts
hadoop fs -get /itcast/itheima/hosts .

hadoop fs -mkdir /itcast/bigdata
hadoop fs -cp /itcast/itheima/hosts /itcast/bigdata/
hadoop fs -ls /itcast/bigdata
hadoop fs -cat /itcast/bigdata/hosts

hadoop fs -mv /itcast/itheima/hosts /itcast/itheima/myhost
hodoop fs -ls /itcast/itheima/
hadoop fs -rm -r /itcast
2.5.3 HDFS客户端 - Jetbrians产品插件

了解在JetBrains产品中(IntelliJ IDEA、PyCharm、DataGrip)安装使用Big Data Tools插件,去对HDFS的文件系统进行相关的操作。以DataGrip为例。
设置 -> Plugins(插件) -> Marketplace(市场)-> 搜索Big Data Tools,点击Install安装即可。完整配置过程见视频:windows

第二章-11-[实操]HDFS客户端-Big Data Tools插件_哔哩哔哩_bilibili


2.5.4 HDFS客户端-NFS

目标:使用NFS网关功能将HDFS文件系统挂载到我们windows本地系统中。

将HDFS挂载到类似于C盘D盘的位置。

配置NFS:
1. core-site.xml,新增配置项;hdfs-site.xml,新增配置项;
2. 开启portmap、nfs3两个进程。

课程设置的允许192.168.88.1以rw链接(这个IP是电脑虚拟网卡VMnet8的IP,连接虚拟机就走这个网卡) 

cd /export/server/hadoop/etc/hadoop/
vim core-site.xml
# 配置相应内容
vim hdfs-site.xml

配置好这些功能之后,启用NFS功能:

# 1.将配置好的core-site.xml和hdfs-site.xml分发到node2和node3
scp core-site.xml hdfs-site.xml node2:'pwd'/
scp core-site.xml hdfs-site.xml node3:'pwd'/
# 2.重启HadoopHDFS集群(先stop-dfs.sh,后start-afs.sh)
stop-dfs.sh

# 3.停止系统的NFS相关进程(hadoop没有权限,需要退回root用户)
#    a.systemctl stop nfs;systemctl disable nfs关闭系统nfs并关闭其开机自启
#    b.yum remove-y rpcbind卸载系统自带rpcbind
exit
systemctl stop nfs
systemctl disable nfs
yum remove-y rpcbind(我们需要用hdfs系统自带的portmap)
# 4.启动portmap(HDFS自带的rpcbind功能)(必须以root执行):
hdfs--daemon start portmap
# 5.启动nfs(HDFS自带的nfs功能)(必须以hadoop用户执行):
hdfs--daemon start nfs3

检查NFS是否正常:
 1. 在node-2和node-3中执行:rpcinfo -p node1,正常输出有mountd和nfs出现。
2. 执行 showmount -e node1,可以看到 /192.168.88.1

在windows挂载HDFS文件系统
第二章-12-[可选]HDFS客户端-NFS挂载到Windows本地_哔哩哔哩_bilibili

2.6 HDFS的存储原理 

2.6.1 存储原理  

目标:了解数据是如何在HDFS中进行存储的;了解数据在HDFS中是如何保证安全的
        1. 设定统一的管理单位——block块:是HDFS最小存储单位,每个256MB(可以修改)。
        2. 通过多个副本(备份)解决,每个副本都复制到其他服务器1份,安全性极大提高

总结:数据存入HDFS是分布式存储,即每一个服务器节点,负责数据的一部分;数据在HDFS上是划分为一个个Block块进行存储;在HDFS上,数据Block块都可以有多个副本,副本也会分发到其他服务器上,提高数据安全性。

2.6.2 fsck命令

目标:了解如何配置HDFS数据块的副本数量;掌握fsck命令查看文件系统状态及验证文件的副本数量
方法1:  默认是3副本数

方法2:  除了配置文件外,我们还可以在上传文件的时候,临时决定被上传文件以多少个副本存储。只针对本次生效
方法3:  对于已经存在HDFS的文件,修改dis.replication屆性不会生效,如果要修政已存在文件可以通过命令

使用fsck命令去检查文件的副本数、blocks数、位置:

hadoop fs -D dfs.replication=2 -put test.txt /tmp/  #方法2
hadoop fs -setrep [-R] 2 path    #方法3
# hdfs fsck path [-files [-blocks [-locations]]]   #检查副本数
hdfs fsck /test.txt -files -blocks -locations
2.6.3 NameNode元数据

目标:掌握NameNode是如何管理Block块的
        edits文件:是一个流水账文件,记录了hdfs中的每一次操作,以及本次操作影响的文件其对应的block
        fsimage文件:將全部的edits文件,合并为最终结果,即可得到一个FSimage文件

NameNode基于edits和FSimage的配合,完成整个文件系统文件的管理(维护整个文件系统元数据)

  • edits记录每次操作
  • fsimage,记录某一个时间节点的当前文件系统全部文件的状态和信息

        1.每次对HDFS的操作,均被edits文件记录
        2.edits达到大小上线后,开启新的edits记录
        3. 定期进行edits的合并操作(元数据合并参数可以修改)
                a. 如当前没有fsimage文件,将全部edits合并为第一个fsimase
                b. 如当前己存在fsimage文件,将全部edits和己存在的fsimage进行合并,形成新的fsimage

⚠️:NameNode是写edits文件,合并操作是又SecondaryNameNode做的,合并完成再提供给NameNode文件使用。

​​​​​​​2.6.4 HDFS数据的读写流程

目标:理解客户端在HDFS上读、写数据的流程
写入流程:

1. NameNode不接收数据,不负责数据写入,只负责元数据记录和权限审批
2. 客户端直接向1台DataNode写数据。这个DataNode一般是离客户端最近(网络距离)的那个
3. 数据块副本的复制工作,由DataNode之间自行完成(构成一个PipLine,按顺序复制分发,如图1给2,2给3和4)

读取流程:
​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/264001.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Http---HTTP 请求报文

1. HTTP 请求报文介绍 HTTP最常见的请求报文有两种: GET 方式的请求报文POST 方式的请求报文 说明: GET: 获取web服务器数据POST: 向web服务器提交数据 2. HTTP GET 请求报文分析 HTTP GET 请求报文效果图: GET 请求报文说明: ---- 请求行 ---- GET / HTTP/1.1 # GET请…

Qt WebAssembly开发环境配置

目录 前言1、下载Emscripten SDK2、 安装3、环境变量配置4、QtCreator配置5、运行示例程序总结 前言 本文主要介绍 Qt WebAssembly 开发环境的配置。Qt for Webassembly 可以使Qt应用程序在Web上运行。WebAssembly&#xff08;简称Wasm&#xff09;是一种能够在虚拟机中执行的…

内存管理学习

内存管理 在计算系统中&#xff0c;通常存储空间分为两种&#xff1a;内部存储空间和外部存储空间。 内部存储空间通常访问速度比较快&#xff0c;能够按照变量地址随机访问&#xff0c;也就是我们通常所说的RAM&#xff08;随机存储器&#xff09;&#xff0c;可以把它理解为…

【原理图PCB专题】原理图图纸锁定/解锁与PCB文件加密方式

在工作中我们会遇到需要冻结原理图进行评审和加密图纸防止被他人盗用的需求。那么在OrCAD Capture中如何对图纸进行锁定与解锁,如何在Allegro中对PCB工程进行加密呢? 原理图锁定与解锁 打开原理图,在图纸中单击右键,选择lock/unlock就可以进行锁定与解锁。 锁定时图纸图…

PostGIS学习教程十四:更多的空间连接

PostGIS学习教程十四&#xff1a;更多的空间连接 在上一节中&#xff0c;我们看到了ST_Centroid(geometry)和ST_Union([geometry])函数&#xff0c;以及一些简单的示例。在本节中&#xff0c;我们将用它们做一些更详细的事情。 提示&#xff1a;写完文章后&#xff0c;目录可以…

OCC:第一个程序,对话框中显示一个BOX

1. OCC库的获取 从github上获取 gitgithub.com:tpaviot/oce.git&#xff0c;自己编译官网获取二进制包&#xff08;获取下来的只有release 版本的&#xff0c;而且VS版本不一定适合自己&#xff09;官网源码&#xff0c;然后自己编译&#xff08;稍微折腾点&#xff0c;建议按…

带大家做一个,易上手的家常辣椒炒肉

先拿一块猪肉泡水解冻 然后 拿四个螺丝椒 螺丝椒切片 放入四个干辣椒 猪肉切片 三瓣左右蒜 如下图大小的一块姜 姜蒜切小块 将辣椒单独倒入锅中 翻炒出辣味 闻到辣味后将辣椒捞出 这里千万不要洗锅不然就把辣味洗掉了 直接起锅烧油 下入肉片翻炒 猪肉变色后 下入姜蒜…

UG阵列面、阵列集合特征和阵列特征的区别

阵列面 对面进行阵列&#xff0c;当实体中被切除特征的时候可以使用阵列面&#xff0c;当这个命令去阵列一个实体的时候&#xff0c;阵列的是一个片体&#xff0c;优点是速度快&#xff0c;缺点是功能较简单&#xff1b; 阵列几何特征 对实体进行阵列&#xff0c;可以一次性选…

Linux 一键部署二进制Gitea

gitea 前言 Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来…

数据结构 | 东北大学厦门大学期末试卷查漏补缺

Prim变型算法&#xff08;不会&#xff09; 有人给出求解最小生成树的另外一种算法&#xff1a;将连通图中的边按其权值从大到小顺序逐个删除直至不可再删&#xff0c;删除要遵循的原则是&#xff1a;保证在删除该边后各个顶点之间应该是连通的。请问该算法是正确的吗&#xf…

ElasticSearch 的基础概念与入门使用

ElasticSearch 的基础概念与入门使用 前言 elasticsearch 是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大的功能&#xff0c;可以帮助我们从海量的数据中快速找到需要的内容。 例如&#xff1a; 在 Github 中搜索代码 在电商网站搜索商品 在 Google 搜索答案 …

过采样技术基本原理

本文介绍过采样技术基本原理。 过采样技术在ADC信号采集过程中使用还是比较多的。某些使用场景下&#xff0c;对采样速度要求并不是那么高&#xff08;或ADC采样速度过剩&#xff09;&#xff0c;但是想要获取较高的分辨率&#xff0c;就会用到这种技术&#xff0c;如针对温度…

设计模式:循序渐进走入工厂模式

文章目录 前言一、引入二、简单工厂模式1.实现2.优缺点3.扩展 三、工厂方法模式1.实现2.优缺点 四、抽象工厂模式1.实现2.优缺点3.使用场景 五、模式扩展六、JDK源码解析总结 前言 软件设计模式之工厂模式。 一、引入 需求&#xff1a;设计一个咖啡店点餐系统。 设计一个咖啡类…

在MongoDB中使用数组字段和子文档字段进行索引

本文主要介绍在MongoDB使用数组字段和子文档字段进行索引。 目录 MongoDB的高级索引一、索引数组字段二、索引子文档字段 MongoDB的高级索引 MongoDB是一个面向文档的NoSQL数据库&#xff0c;它提供了丰富的索引功能来加快查询性能。除了常规的单字段索引之外&#xff0c;Mong…

只更新软件,座椅为何能获得加热功能?——一文读懂OTA

2020年&#xff0c;特斯拉发布过一次OTA更新&#xff0c;车主可以通过这次系统更新获得座椅加热功能。当时&#xff0c;这则新闻震惊了车圈和所有车主&#xff0c;彼时的大家还没有把汽车当作可以“升级”的智能设备。 如今3年过去了&#xff0c;车主对各家车企的OTA升级早已见…

华为OD机试真题-园区参观路径-2023年OD统一考试(C卷)

题目描述:园区某部门举办了Family Day,邀请员工及其家属参加;将公司园区视为一个矩形,起始园区设置在左上角,终点园区设置在右下角;家属参观园区时,只能向右和向下园区前进;求从起始园区到终点园区会有多少条不同的参观路径; 输入描述:第一行为园区长和宽;后面每一行…

【ITK库学习】使用itk库进行图像配准:内插器(插值)

目录 1、itkNearestNeighborInterpolateImageFunction 最近点插值2、itkLinearInterpolateImageFunction 线性插值3、itkBSplineInterpolateImageFunction B样条插值4、itkWindowedSincInterpolateImageFunction 窗口化Sinc插值5、itkRayCastInterpolateImageFunction 投射插值…

充电桩MOS如何选型

• 充电桩是大功率 AC-DC 转换电源&#xff0c;用于给新能源电动汽车快速充电。 • 目前非 800V系统充电桩采用三相维也纳整流 LLC 电路&#xff0c;其中 PFC 整流可以采用二 极管&#xff0c;PFC 升压可以采用650V IGBT 或者 SJ MOSFET&#xff0c; LLC 采用 650V SJ MOSFET。…

Megatron模型并行研究

Megatron模型并行研究 1. 技术调研 a. Megatron-LM Megatron-LM针对的是特别大的语言模型&#xff0c;使用的是模型并行的训练方式。但和普通的模型并行不同&#xff0c;他采用的其实是张量并行的形式&#xff0c;具体来说就是将一个层切开放到不同的GPU上&#xff0c;属于层…

阿里云赵大川:弹性计算推理解决方案拯救 AIGC 算力危机

云布道师 本篇文章围绕弹性计算推理解决方案 DeepGPU 实例如何支持 Stable Diffusion 文生图推理、Stable Diffusion 推理演示示例等相关话题展开。 赵大川 阿里云弹性计算高级技术专家 GPU 云服务器推理解决方案的提出背景 随着 AIGC 时代的到来&#xff0c;两个重要应用应…