当前位置: 首页 > news >正文

hadoop 集群常用命令(学习笔记) —— 筑梦之路

概念介绍

#HDFS 概述Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。(1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。 (2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。 (3)Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份。#YARN 概述Yet Another Resource Negotiator 简称YARN ,另一种资源协调者,是Hadoop 的资源管理器。ResourceManager(RM):整个集群资源(内存、CPU等)的管理者 NodeManager(NM):单个节点服务器资源的管理者。ApplicationMaster(AM):单个任务运行的管理者。Container:容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等。#MapReduce 概述MapReduce 将计算过程分为两个阶段:Map 和 Reduce(1)Map 阶段并行处理输入数据 (2)Reduce 阶段对Map 结果进行汇总

各组件和对应服务名

组件名服务名进程名
NameNodehadoop-hdfs-namenodeNameNode
DataNodehadoop-hdfs-datanodeDataNode
ResourceManagerhadoop-yarn-resourcemanagerResourceManager
NodeManagerhadoop-yarn-nodemanagerNodeManager
JobHistoryhadoop-mapreduce-historyserverJobHistoryServer
JournalNodehadoop-hdfs-journalnodeJournalNode
zkfchadoop-hdfs-zfkcDFSZKFailoverController

hadoop服务启停流程

#启动过程1、启动所有zookeeper2、启动所有的JournalNode3、启动两台NameNode及zkfc ,---这里可以通过查看namenode的web页面,查看两台机器的状态---一台为active ,另一台为standby4、启动所有的DataNode5、启动两台ResourceManager ,这里可以通过查看resourceManager的web页面6、启动所有的NodeManager7、启动JobHistory-------------------------------------------------------------------------------# 关闭过程1、停止JobHistory2、停止所有的NodeManager3、停止两台ResourceManager4、停止所有的DataNode5、停止两台NameNode及ZKFC6、停止所有的JournalNode7、停止所有的zookeeper

 整合为脚本

#启停脚步包含hdfs、yarn、historyserver#!/bin/bash
#启停脚本if [ $# -lt 1 ]
thenecho "No Args Input..."exit ;
ficase $1 in
"start")echo " =================== 启动 hadoop集群 ==================="echo " --------------- 启动 hdfs ---------------"ssh hadoop101 "/opt/module/hadoop-3.3.3/sbin/start-dfs.sh"echo " --------------- 启动 yarn ---------------"ssh hadoop102 "/opt/module/hadoop-3.3.3/sbin/start-yarn.sh"echo " --------------- 启动 historyserver ---------------"ssh hadoop103 "/opt/module/hadoop-3.3.3/bin/mapred --daemon start historyserver"
;;
"stop")echo " =================== 关闭 hadoop集群 ==================="echo " --------------- 关闭 historyserver ---------------"ssh hadoop103 "/opt/module/hadoop-3.3.3/bin/mapred --daemon stop historyserver"echo " --------------- 关闭 yarn ---------------"ssh hadoop102 "/opt/module/hadoop-3.3.3/sbin/stop-yarn.sh"echo " --------------- 关闭 hdfs ---------------"ssh hadoop101 "/opt/module/hadoop-3.3.3/sbin/stop-dfs.sh"
;;
*)echo "Input Args Error..."
;;
esac

启停验证

>web端查看HDFS的NameNode
http://hadoop101:9870>web端查看yarn的ResourceManager
http://hadoop102:8088>历史服务器地址
http://hadoop103:19888/jobhisto

hadoop服务单独启停

#命令启动hdfs ---namenode节点上执行cd /opt/module/hadoop-3.3.3/sbin/
./start-dfs.sh#命令停止hdfs ---namenode节点上执行cd /opt/module/hadoop-3.3.3/sbin/
./stop-dfs.sh#验证web端查看HDFS的NameNodehttp://hadoop101:9870

yarn启停

#在resourcemanager节点上执行,先启动hdfs,再启动yarncd /opt/module/hadoop-3.3.3/sbin/
./start-yarn.sh#yarn停止---在resourcemanager节点上执行cd /opt/module/hadoop-3.3.3/sbin/
./stop-yarn.sh#验证web端查看yarn的ResourceManagerhttp://hadoop102:8088
# 启动hdfs、yarncd /opt/module/hadoop-3.3.3/sbin/
./start-all.sh#停止hdfs、yarncd /opt/module/hadoop-3.3.3/sbin/
./stop-all.sh

单独启停某个服务进程

# hdfs --daemon start 单独启动⼀个进程
hdfs --daemon start namenode # 只开启NameNode
hdfs --daemon start datanode # 只开启DataNode
hdfs --daemon start secondarynamenode # 只开启SecondaryNameNode# hdfs --daemon stop 单独停⽌⼀个进程
hdfs --daemon stop namenode # 只停⽌NameNode
hdfs --daemon stop datanode # 只停⽌DataNode
hdfs --daemon stop secondarynamenode # 只停⽌SecondaryNameNode# hdfs --workers --daemon start 启动所有的指定进程
hdfs --workers --daemon start namenode
hdfs --workers --daemon start datanode # 开启所有节点上的DataNode
hdfs --workers --daemon start secondarynamenode # hdfs --workers --daemon stop 停止所有的指定进程
hdfs --workers --daemon stop namenode
hdfs --workers --daemon stop datanode # 停⽌所有节点上的DataNode
hdfs --workers --daemon stop secondarynamenode
常用命令# 修改hdfs文件的备份数hdfs  dfs -setrep  -R 副本数  dir备注:dfs.replication 这个参数其实只在文件被写入dfs时起作用
虽然更改了配置文件,但是不会改变之前写入的文件的备份数# 检查hdfs block健康状态hdfs fsck /# 删除坏的block块hdfs fsck / -delete 坏块路径(hdfs上的文件路径)---
若出现坏块,即报告中Missing Blocks有值,
尝试重启hdfs服务   ./stop-dfs.sh   ./start-dfs.sh  
重启后观察(重启时间较长,10-20分钟之后再去查看)是否还有坏块若重启HDFS服务不能修复,可通过手动检查坏块并删除坏块
hdfs  fsck  /  --扫描坏块
hdfs  fsck  -delete   坏块地址 
#扫描坏块后查看,坏块地址为”:MISSING“之前的地址再重新检查坏块情况和坏块告警情况
---启动负载均衡datanode之间出现数据存储大小不均衡时,比如磁盘损坏或者新增加,需要做负载均衡。尽量不要在namenode节点使用cd /opt/module/hadoop-3.3.3/sbin/
./start-balancer.sh -t 10%
datanode存储使用率/集群总存储使用率>10%就触发负载均衡格式化文件系统
注意:格式化namenode后集群的数据会全部丢失,格式化之前需做好数据备份工作1、格式化之前,首先需删除Hadoop系统日志,默认路径为${HADOOP_HOME}/logs。2、然后删除主节点目录以及数据节点目录,默认路径分别为${hadoop.tmp.dir}/dfs/name
和${hadoop.tmp.dir}/dfs/data。hadoop.tmp.dir默认值是/tmp/hadoop-${user.name},
可以在core-site.xml配置文件中的hadoop.tmp.dir属性设置。而上面的主节点目录和数据节点目录也可以在hdfs-site.xml配置文件中的dfs.namenode.name.dir和dfs.namenode.data.dir属性中设置。(在dfs/name/current目录下的VERSION文件中记录集群的版本信息,其中clusterID是集群版本标识,每次format都会生成不同的ID。在dfs/data/current目录下的VERSION文件中记录datanode的版本相关信息,其中clusterID标识它是属于哪个集群的,namenode 和 datanode的这两个值一致时,才会认为是同一个集群。格式化后,namenode的clusterID会改变,但datanode节点目录dfs/data/current如果在格式化时仍存在,则datanode的clusterID不会变化。这种情况下,启动集群,datanode进程虽然也会启动,但与namenode确认clusterID后,发现不一致,就会自动退出了。)
格式化NameNode,命令为hdfs namenode -format。3、格式化NameNode,命令为hdfs namenode -format。
----------------------------------------------------------------------升级、回滚、持久化、checkpoint#分发新的hdfs版本之后,namenode应以upgrade 选项启动hdfs namenode -upgrade#将namenode回滚到前一版本,这个选项要在停止集群,分发老的hdfs版本之后执行hdfs namenode -rollback#finalize 会删除文件系统的前一状态。最近的升级会被持久化,rollback选项将不再可用,升级终结操作之后,它会停掉namenode,分发老的hdfs版本后使用hdfs namenode -finalize#从检查点目录装载镜像并保存到当前检查点目录,检查点目录由fs.checkpoint.dir 指定hdfs namenode importCheckpoint
hdfs 系统检查#移动受损文件到/lost+found
hdfs  fsck <path> -move #删除受损文件 
hdfs  fsck <path> -delete #打印出写打开的文件
hdfs  fsck <path> -openforwrite #打印出正被检查的文件
hdfs  fsck <path> -files #打印出块信息报告
hdfs  fsck <path> -blocks#打印出每个块的位置信息 
hdfs  fsck <path> -locations #打印出datanode的网络拓扑结构
hdfs  fsck <path> -racks
yarn常用命令在集群部署中,yarn的各个组件是和hadoop集群中的其他组件进行同一部署的。yarn中的容器(动态资源分配单位)代表了cpu、内存、磁盘、网络等计算资源,可限定每个应用程序使用的资源量yarn 组件ResourceManager处理客户端请求、启动、监控ApplicationMaster、监控NodeManager、资源分配与调度ApplicationMaster为应用程序申请资源,并分配给内部任务、任务的调度监控与容错NodeManager单个节点上的资源管理、处理ResourceManager的命令、处理来自ApplicationMaster 的命令yarn工作流程在yarn中执行1个MapReduce程序,从提交到完成需要经历8个步骤①用户编写客户端应用程序, 向YARN提交应用程序,提交的内容包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。②YARN 中的ResourceManager负责接收和处理来自客户端的请求。接到客户端应用程序请求后,ResourceManager里面的调度器会为应用程序分配一个容器。同时, ResourceManager的应用程序管理器会与该容器所在NodeManager 通信,为该应用程序在该容器中启动一个ApplicationMaster。③ApplicationMaster 被创建后会首先向ResourceManager 注册,从而使得用户可以通过ResourceManager来直接查看应用程序的运行状态。接下来的步骤4~7是具体的应用程序执行步骤。④ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请资源。⑤ResourceManager 以“容器”的形式向提出申请的ApplicationMaster 分配资源,一旦ApplicationMaster申请到资源后,就会与该容器所在的NodeManager 进行通信,要求它启动任务。⑥当ApplicationMaster要求容器启动任务时,它会为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)然后将任务启动命令写到一个脚本中, 最后通过在容器中运行该脚本来启动任务。⑦各个任务通过某个RPC 协议向ApplicationMaster汇报自己的状态和进度,让ApplicationMaster可以随时掌握各 个任务的运行状态,从而可以在任务失败时重新启动任务。⑧应用程序运行完成后,ApplicationMaster向ResourceManager的应用程序管理器注销并关闭自己,若ApplicationMaster因故失败,ResourceManager中的应用程序管理器会监测到失败的情形,然后将其重新启动,直到所有的任务执行完毕。yarn调度算法三种调度算法#1、先进先出 (FIFO Scheduler)优点:简单易懂缺点:不支持多队列,生产环境很少使用#2、容量调度器(capacity scheduler)Capacity Scheduler是Yahoo开发的多用户调度器。 特点: (1)多队列:每个队列配置一定资源量,每个队列采用FIFO调度策略 (2)容量保证:管理员可为队列设置资源最低保证和资源使用上限 (3)灵活性:如果一个队列资源有余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列 (4)多租户:支持多用户共享集群和多应用程序同时运行。      为了防止同一个用户的作业独占队列中的资源,**该调度器会对同一用户提交的作业所占资源量进行限定。1、队列资源分配从root开始,使用深度优先算法,优先选择“资源占用率最低”的队列分配资源2、作业资源分配默认按照提交作业的优先级和提交时间顺序分配资源3、容器资源分配按照容器的优先级 分配资源按照优先级相同,按照数据的本地性原则 :(1)任务和数据在同一节点(2)任务和数据在同一机架(3)任务和数据不在同一节点,也不在同一机架3、公平调度器(Fair Scheduler)Fair Scheduler 是 Facebook开发的多用户调度器同队列所有任务共享资源,在时间尺度上获得公平的资源与容量调度器相同点:(1) 多队列:支持(2)容量保证:管理员可为队列设置资源最低保证和资源使用上限(3)灵活性:如果一个队列资源有余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列 (4)多租户:支持多用户共享集群和多应用程序同时运行。      为了防止同一个用户的作业独占队列中的资源,**该调度器会对同一用户提交的作业所占资源量进行限定。与容量调度器不同点:(1) 核心调度策略不同容量调度器:优先选择 资源利用率低的队列公平调度器:优先选择对资源的缺额比较大的(2)每个队列可以单独设置资源分配方式容量调度器:FIFO、DRF公平调度器:FIFO、FAIR、DRF#分配方式(1)FIFO策略公平调度器每个队列资源分配策略如果选择FIFO的话,此时公平调度器相当于上面讲过的容量调度器。(2)Fair策略公平的策略(默认)是一种基于最大最小公平算法实现的资源多路复用方式,默认情况下,每个队列内部采用该方式分配资源。这意味着,如果一个队列中有两个应用程序同时运行,则每个应用程序可得到1/2的资源;如果三个应用程序同时运行,则每个应用程序可得到1/3的资源。   具体资源分配流程和容量调度器一致;(1)选择队列 (2)选择作业 (3)选择容器。此三步,每一步都是按照公平策略分配资源实际最小资源份额:mindshare = Min(资源需求量,配置的最小资源)是否饥饿:isNeedy = 资源使用量 < mindshare(实际最小资源份额)   资源分配比:minShareRatio = 资源使用量 / Max (minshare,1)   资源使用权重比:useToWeightRatio = 资源使用量 / 权重DRF策略  DRF(Doninant Resouree Fairmess),我们之前说的资源,都是单一标准,例如只考虑内存(也是Yarn默认的情况)。但是很多时候我们资源有很多种,例如内存,CPU,网络带宽等,这样我们很难衡量两个应用应该分配的资源比例。  DRF调度:假设集群一共有100 CPU和10T内存,而应用A需要(2CPU,300GB),应用B需要(6 CPU,100GB )。则两个应用分别需要A(2%CPU,3%内存)和B(6%CPU,1%内存)的资源,这就意味着A是内存主导的,B是CPU主导的,针对这种情况,我们可以选择DRF策略对不同应用进行不同资源(CPU和内存)的一个不同比例的限制。yarn常用命令和核心参数yarn application查看任务#列出所有的applicationyarn application -list#根据application状态过滤yarn application -list -appStates XXX(XXX - ALL、NEW、NEW_SAVING、SUBMITTED、ACCEPTED、RUNNING、FINISHED、FAILED、KILLED)#杀死程序yarn application  -kill application-idyarn logs查看日志#查询application日志yarn logs -applicationId <ApplicationId>#查询container 日志yarn logs -applicationId <ApplicationId> -containerId <ContainerId>yarn applicationattempt查看尝试运行的任务#列出所有Application尝试的列表yarn applicationattempt -list <ApplicationId>#打印ApplicationAttemp状态yarn applicationattempt -status <ApplicationAttemptId>yarn container查看容器#列出所有Containeryarn container -list <ApplicationAttemptId>#打印Container状态yarn container -status <ContainerId>
备注:只有在任务跑的途中才能看到container的状态yarn node查看节点状态#列出所有节点yarn node -list -allyarn rmadmin更新配置#加载队列配置yarn rmadmin -refreshQueuesyarn queue查看队列#打印队列信息yarn queue -status <QueueName>#yarn核心参数配置1、ResourceManager相关#配置调度器,默认容量yarn.resourcemanager.scheduler.class#ResourceManager处理器请求的线程数量,默认50yarn.resourcemanager.scheduler.clinent.thread-count2、NodeManager相关#是否让yarn自己检测硬件进行配置,默认falseyarn.nodemanager.resource.detect-hardware-capabilities#是否将虚拟核数当做cpu核数,默认falseyarn.nodemanager.resource.count-logical-processors-as-cores#虚拟核数和物理核数乘数,默认为1.0yarn.nodemanager.resource.pcores-vcores-multiplier#NodeManager使用内存,默认8Gyarn.nodemanager.resource.memory-mb#NodeManager 为系统保留多少内存yarn.nodemanager.resource.system-reserved-memory-mb备注:改参数和上个参数有一定的关系#NodeManager 使用cpu核数,默认8个yarn.nodemanager.resource.cpu-vcores#是否开启物理内存检查限制container,默认打开yarn.nodemanager.pmem-check-enabled#是否开启虚拟内存检查限制container,默认打开yarn.nodemanager.vmem-check-enabled#虚拟内存和真实物理内存的比率,默认2.1yarn.nodemanager.vmem-pmem-ratio3、Container相关#容器最小内存,默认1Gyarn.scheduler.minimum-allocation-mb
#容器最大内存,默认8Gyarn.scheduler.maximum-allocation-mb#容器最小CPU核数,默认1个yarn.scheduler.minimum-allocation-vcores#容器最大CPU核数,默认4个yarn.scheduler.maximum-allocation-vcores按照上边的参数进行配置下我们的yarn-site.xml文件#设置参考意见container:内存和cpu的虚拟概念内存cpu资源预留20%给系统一个计算任务至少需要1core 。core越多,计算的并发就越多内存:计算时所需的空间oom-killer机制cpu:决定并发任务cloudera公司经过生产实践,推荐1个container的vcore最好不要超过5,就设置4个4.3、mapreduce常用命令4.3.1、mapreduce相关参数
资源相关参数以下参数是在用户自己的 MapReduce 应用程序中配置就可以生效:mapreduce.map.memory.mb:一个MapTask可使用的资源上限(单位:MB),默认为1024。如果MapTask实际使用的资源量超过该值,则会被强制杀死。mapreduce.reduce.memory.mb:一个ReduceTask可使用的资源上限(单位:MB),默认为1024。如果ReduceTask实际使用的资源量超过该值,则会被强制杀死。mapreduce.map.cpu.vcores:每个MapTask可使用的最多cpu core数目,默认值: 1mapreduce.reduce.cpu.vcores:每个ReduceTask可使用的最多cpu core数目,默认值: 1mapreduce.map.java.opts: MapTask的JVM参数,你可以在此配置默认的java heap size等参数, 比如:"-Xmx2048m -verbose:gc -Xloggc:/tmp/@taskid@.gc",默认值是:""mapreduce.reduce.java.opts: ReduceTask的JVM参数,你可以在此配置默认的java heap size等参数以下参数应该在yarn启动之前就配置在服务器的配置文件中才能生效:yarn.scheduler.minimum-allocation-mb=1024 给应用程序container分配的最小内存yarn.scheduler.maximum-allocation-mb=8192 给应用程序container分配的最大内存yarn.scheduler.minimum-allocation-vcores=1 yarn.scheduler.maximum-allocation-vcores=32 yarn.nodemanager.resource.memory-mb=8192 mapreduce.task.io.sort.mb=256 (HDFSv3.0) shuffle的环形缓冲区大小,默认256m mapreduce.map.sort.spill.percent=0.8 环形缓冲区溢出的阈值,默认80% MapReduce程序进行flush操作的阀值,默认0.80。mapreduce.reduce.shuffle.parallelcopies MapReduce程序reducer copy数据的线程数,默认10 (HDFSv3.0)。mapreduce.reduce.shuffle.input.buffer.percent reduce复制map数据的时候指定的内存堆大小百分比,默认为0.70 适当的增加该值可以减少map数据的磁盘溢出,能够提高系统能。mapreduce.reduce.shuffle.merge.percentreduce reduce进行shuffle的时候,用于启动合并输出和磁盘溢写的过程的阀值,默认为0.66。如果允许,适当增大其比例能够减少磁盘溢写次数,提高系统性能。同mapreduce.reduce.shuffle.input.buffer.percent一起使用 mapreduce.task.timeout mr程序的task执行情况汇报过期时间,默认600000(10分钟) 设置为0表示不进行该值的判断。容错相关参数mapreduce.map.maxattempts=4 每个MapTask最大重试次数,一旦重试参数超过该值,则认为MapTask运行失败 mapreduce.reduce.maxattempts=4:每个ReduceTask最大重试次数,一旦重试参数超过该值,则认为MapTask运行失败 mapreduce.task.timeout=600000:Task超时时间,经常需要设置的一个参数,该参数表达的意思为:如果一个task在一定时间内没有任何进入,即不会读取新的数据,也没有输出数据,则认为该task处于block状态,可能是卡住了,也许永远会卡住,为了防止因为用户程序永远block住不退出,则强制设置了一个该超时时间(单位毫秒),老版本默认是300000。如果你的程序对每条输入数据的处理时间过长(比如会访问数据库,通过网络拉取数据等),建议将该参数调大=====================================================================================
mapreduce常用命令#执行jar包程序
hdfs jar file.jar  #杀死正在执行的jar包程序
hdfs job -kill  job_202222xxxx#提交作业
hdfs job -submit <job-file>#打印map和reduce完成百分比和所有计数器
hdfs job -status <job-id>#打印计数器的值
hdfs job -counter <job-id> <group-name> <counter-name>#杀死指定作业
hdfs job -kill  <job-id>#打印给定范围内jobtracker接收到的事件细节
hdfs job -events <job-id> <from-event-#><#-of-events>#打印作业的细节、失败及被杀死原因的细节。
更多的关于一个作业的细节比如成功的任务,做过的任务尝试等信息可以通过 
all选项查看。
hdfs job -history  [all] <jobOutputDir>
hdfs job -history        <jobOutputDir>#显示所有的作业。-list 只显示将要完成的作业
hdfs job -list [all]#杀死任务,被杀死的任务不会不利于失败尝试
hdfs job -kill -task <task-id>#使任务失败。被失败的任务会对失败尝试不利
hdfs job -fail -task <task-id>

相关文章:

hadoop 集群常用命令(学习笔记) —— 筑梦之路

概念介绍 #HDFS 概述Hadoop Distributed File System&#xff0c;简称HDFS&#xff0c;是一个分布式文件系统。&#xff08;1&#xff09;NameNode&#xff08;nn&#xff09;&#xff1a;存储文件的元数据&#xff0c;如文件名&#xff0c;文件目录结构&#xff0c;文件属性&…...

ARC142D Deterministic Placing

ARC142D Deterministic Placing 题目大意 有一棵nnn个顶点的树&#xff0c;每个点上最多放一张卡片&#xff0c;你可以做如下操作&#xff1a; 同时将所有的卡片移到它所在顶点的相邻的一个顶点上 一个操作我们说它是好的&#xff0c;当下列条件满足&#xff1a; 每条边最…...

阶段八:服务框架高级(第二章:分布式事务)

阶段八&#xff1a;服务框架高级&#xff08;第二章&#xff1a;分布式事务&#xff09;Day-分布式事务0.学习目标1.分布式事务问题1.1.本地事务1.2.分布式事务1.3.演示分布式事务问题2.理论基础2.1.CAP定理2.1.1.一致性2.1.2.可用性2.1.3.分区容错2.1.4.矛盾2.2.BASE理论2.3.解…...

RPC异步化原理

深入RPC&#xff0c;更好使用RPC&#xff0c;须从RPC框架整体性能考虑问题。得知道如何提升RPC框架的性能、稳定性、安全性、吞吐量及如何在分布式下快速定位问题。RPC框架如何压榨单机吞吐量&#xff1f; 1 前言 TPS一直上不去&#xff0c;压测时CPU压到40%&#xff5e;50%就…...

C# 多窗口切换的实现

1、目的在主窗口中根据不同的按钮选择不同的子窗口显示。2、实现&#xff08;1&#xff09;、创建Winform窗体程序&#xff0c;放入SplitContainer控件splitContainer1将窗体分成左右2部分&#xff1b;&#xff08;2&#xff09;、在左侧splitContainer1.panel1中放入3个Button…...

【深度学习】RNN

1. 什么是RNN 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一类以序列&#xff08;sequence&#xff09;数据为输入&#xff0c;在序列的演进方向进行递归&#xff08;recursion&#xff09;且所有节点&#xff08;循环单元&#xff09;按链式连接的递…...

招聘岗位,机会难得

岗位需求 费话不多说&#xff0c;直接上JD&#xff1a; 嵌入式开发工程师&#xff1a; 17:411.计算机、通信等相关专业。 2.熟悉网络基础知识&#xff0c;熟悉802.11a/b/g/n/ac协议&#xff0c;能通过抓包等分析手段排查定位各种wifi相关问题。 3.熟悉路由器主要功能及实现原…...

web打印的几种方法(2023)

在工作中出现web打印的情况是非常多的&#xff0c;其实这也是一个比较烦人的问题&#xff0c;这篇博客整理一下关于Web打印的一些方法或者方式。 1. window.print() 这个方法是用来打印网页的&#xff0c;页面上的其他的元素也会被打印处理&#xff0c;在打印的时候页眉页脚是…...

代码随想录算法训练营day44 | 动态规划之完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ

day44完全背包基础知识问题描述举个栗子518. 零钱兑换 II1.确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组377. 组合总和 Ⅳ1.确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例来推导dp数组完全背包基…...

IntelliJ IDEA 实用插件推荐(包含使用教程)

IntelliJ IDEA 实用插件推荐 背景&#xff1a;电脑重装了&#xff0c;重新下载了最新版的IntelliJ IDEA&#xff0c;感觉默认模式有点枯燥&#xff0c;于是决定从网上下载一些实用美观的插件优化自己以后吃饭的工具&#xff0c;现在推荐的都是目前还能用的&#xff08;亲身实践…...

WideDeep模型

google提出的Wide&deep模型&#xff0c;将线性模型与DNN很好的结合起来&#xff0c;在提高模型泛化能力的同时&#xff0c;兼顾模型的记忆性。wide&deep这种将线性模型与DNN的并行连接模式&#xff0c;后来称为推荐领域的经典模式&#xff0c;奠定了后面深度学习模型的…...

nacos集群模式+keepalived搭建高可用服务

实际工作中如果nacos这样的核心服务停掉了或者整个服务器宕机了&#xff0c;那整个系统也就gg了&#xff0c;所以像这样的核心服务我们必须要搞个3个或者3个以上的nacos集群部署&#xff0c;实现高可用&#xff1b; 部署高可用版本之前&#xff0c;首先你要会部署单机版的naco…...

吉利「银河」负重突围

吉利控股集团最新公布的数据显示&#xff0c;2022年&#xff0c;吉利控股集团汽车总销量超230万辆&#xff0c;同比增长4.3%。其中&#xff0c;新能源汽车销量超64万辆&#xff0c;同比增长100.3%。 在中国本土市场&#xff0c;2022年吉利集团旗下品牌乘用车总交付量为135.84万…...

QT之图形视图框架概述——Graphics View Framework

QT之图形视图框架概述——Graphics View Framework1. 概述2. 核心类3. 事件传递4. Graphics View 坐标系统5. 参考1. 概述 Graphics View Framework是子Qt 4.2引入的&#xff0c;用来取代之前版本中的QCanvas。Graphics View Framework提拱了用于大量2D图形项的管理和交互的能…...

【SQL开发实战技巧】系列(二十二):数仓报表场景(上) 从分析函数效率一定快吗聊一聊结果集分页和隔行抽样实现方式

系列文章目录 【SQL开发实战技巧】系列&#xff08;一&#xff09;:关于SQL不得不说的那些事 【SQL开发实战技巧】系列&#xff08;二&#xff09;&#xff1a;简单单表查询 【SQL开发实战技巧】系列&#xff08;三&#xff09;&#xff1a;SQL排序的那些事 【SQL开发实战技巧…...

小米无线AR眼镜探索版细节汇总

在MWC 2023期间&#xff0c;小米正式发布了一款无线AR眼镜&#xff0c;虽然还没看过实机&#xff0c;但XDA提前上手体验&#xff0c;我们从中进行总结。首先我要说的是&#xff0c;小米这款眼镜和高通无线AR眼镜参考设计高度重叠&#xff0c;产品卖点几乎一致&#xff0c;只是增…...

Web3中文|Litra:简洁而优美的NFT流动性协议,能给NFT市场带来什么?

2021年&#xff0c;NFT元年2021年&#xff0c;无疑是 NFT 的“元年”。这一年推特创始人的首条推特被拍出250万美元&#xff0c;加密艺术家Beeple的数字作品“First 5000 Days”在佳士得以6900万美元价格成交&#xff0c;无聊猿最高上涨了1800倍。2021年11月&#xff0c;在Goog…...

SSL证书对虚拟主机的用处有哪些?

虚拟主机是指在同一台服务器上&#xff0c;通过不同的域名或IP地址为多个网站提供服务的一种网络主机。而SSL证书则是一种数字证书&#xff0c;它用于加密网站与用户之间的通信&#xff0c;确保数据传输的安全性和完整性。在虚拟主机上&#xff0c;SSL证书有以下几个用处&#…...

SpringCloud之MQ笔记分享

MQ异步通信 初始MQ 同步通信 优点&#xff1a;时效性较强&#xff0c;可以以及得到结果 Feign就属于同步方式–问题&#xff1a; 耦合问题性能下降&#xff08;中间的等待时间&#xff09;资源浪费级联失败 异步通信 优点 耦合度低性能提升&#xff0c;吞吐量高故障隔离…...

动态规划背包问题

背包问题的分类 拿到背包问题,最重要的是会归类到哪一种背包问题中,常见的考题里主要是01背包和完全背包,leetcode上连多重背包的题目都没有。实际完全背包问题就是01背包的一种。 对一和零这道题,很多人容易把m看成一个背包,n看成另一个背包,从而当做多重背包。然而这…...

OpenCV4.x图像处理实例-张嘴和闭嘴检测

张嘴和闭嘴检测 在活体验证中,张嘴和闭嘴检测也是一个重要的环节。本文将介绍如何通过检测人脸上唇和下唇的关键点,并计算上唇和下唇的关键点的距离来检测当前人脸状态是否处于张嘴或闭嘴。 张嘴和闭嘴检测主要步骤如下: 第一步,安装依赖库 示例中使用到OpenCV和MediaP…...

软考高级系统分析师系列论文之十二:论实时控制系统与企业信息系统集成在工业控制的常规应用

软考高级系统分析师系列论文之十二:论实时控制系统与企业信息系统集成在工业控制的常规应用 一、摘要二、正文三、总结一、摘要 本文通过“工控组态软件”项目的开发,着重讨论实时系统与信息系统的集成。近年来,国内外的组态软件取得了很大的发展,已广泛应用于企业生产。组…...

蓝桥杯入门即劝退(二十三)货物摆放问题

欢迎关注点赞评论&#xff0c;共同学习&#xff0c;共同进步&#xff01; ------持续更新蓝桥杯入门系列算法实例-------- 如果你也喜欢Java和算法&#xff0c;欢迎订阅专栏共同学习交流&#xff01; 你的点赞、关注、评论、是我创作的动力&#xff01; -------希望我的文章…...

经验之谈——指标异常了怎么办?

本文参考了数据万花筒的文章&#xff0c;结合我自己工作经验。希望给大家一些帮助。 指标异常排查&#xff0c;是数据分析师的工作重点之一&#xff0c;是各行各业数据分析师都绕不开的话题。 本文试图回答&#xff1a; 1、指标波动的影响因素有哪些&#xff1f; 2、如何快速…...

影视领域解说电影怎样做才会更加出彩?

还有没有想要做影视解说的新手朋友~给大家分享一下影视解说快速上手的软件工具&#xff01; 一、解说文案 文案是影视解说中最重要的步骤&#xff0c;如果你无法保证文案足够优秀&#xff0c;那么请务必让所有语句通顺&#xff0c;整体通篇下来让人知道你是在讲一个完整的故事…...

【Spring6】| Spring对IoC的实现(核心重点)

目录 一&#xff1a;Spring对IoC的实现 1. IoC 控制反转 2. 依赖注入 2.1 set注入 2.2 构造注入 3. set注入专题 3.1 注入外部Bean 3.2 注入内部Bean 3.3 注入简单类型 3.4 级联属性赋值&#xff08;了解&#xff09; 3.5 注入数组 3.6 注入List集合和Set集合 3.7…...

部门来了个测试工程师,听说是00后,实在是太卷了.....

都说00后躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷。 这不&#xff0c;前段时间我们部门来了个00后&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。…...

冲冲冲,力扣javascript刷题——数组总结

力扣javascript刷题——数组总结冲冲冲&#xff0c;力扣刷题——数组总结1.二分查找力扣704题:二分查找35.搜索插入位置34.在排序数组中查找元素的第一个和最后一个位置69.x 的平方根367. 有效的完全平方数2.双指针法27. 移除元素26. 删除有序数组中的重复项283.移动零844. 比较…...

使用kotlin编写html dsl框架

前排提醒&#xff0c;这个框架就是我写着玩的&#xff0c;如果您已经会使用vue或其他前端框架&#xff0c;这篇文章可能对您没有什么意义。即使您不会如上提到的框架&#xff0c;也不要对该框架报有过高的期待&#xff0c;该框架更多的是&#xff0c;我自己的自娱自乐。 这里还…...

【谷粒学院】MybatisPlus(1~17)

1.项目介绍 2.项目背景介绍 3.项目商业模式介绍 4.项目功能模块介绍 5.项目技术点介绍 6.项目技术点-MybatisPlus介绍 官网&#xff1a;http://mp.baomidou.com/ MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做…...

汽车之家网站是谁做的/公司员工培训内容有哪些

1、遇到不想回答的问题&#xff0c;直视对方的眼睛&#xff0c;微笑、沉默。- 2、走路抬头挺胸&#xff0c;心情不好时&#xff0c;不想跟人招呼&#xff0c;点头微笑&#xff0c;径直走过。- 3、请记得&#xff0c;好朋友的定义是&#xff1a;你混的好&#xff0c;他打心眼里为…...

宁波网站seo报价/软文发稿网

1 摘要 本报告是在学习斯坦福大学机器学习课程前四节加上配套的讲义后的总结与认识。前四节主要讲述了回归问题&#xff0c;回归属于有监督学习中的一种方法。该方法的核心思想是从连续型统计数据中得到数学模型&#xff0c;然后将该数学模型用于预测或者分类。该方法处理的数据…...

云南定制化网站建设/网络优化工程师证书

1.删除数组中的多个元素&#xff0c;也就是去掉数组中不符合条件的选项 分析&#xff1a;用for或者forEach遍历数组的话在方法体内部 splice后数组长度发生了变化&#xff0c;最后得不到正确的结果。 filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。…...

批发网站建设/合肥做网络推广的公司

三星发布Galaxy Note 10.1平板之前曾经推出过一款采用5.3英寸屏幕的Galaxy Note手机&#xff0c;现在它的升级版采用5.5英寸屏幕的Galaxy Note 2也已经问世有几个月的时间了&#xff0c;那么自从Galaxy Note这条产品线诞生之日起它就超越了自家的Galaxy S系列手机产品线&#x…...

专业微网站建设公司/seo优化大公司排名

为了保证程序的执行高效与安全&#xff0c;现代编译器并不会将程序员的代码直接翻译成相应地机器码&#xff0c;它需要做一系列的检查与优化。Go编译器默认做了很多相关工作&#xff0c;例如未使用的引用包检查、未使用的声明变量检查、有效的括号检查、逃逸分析、内联优化、删…...

电子政务建设与政府网站建设/百度seo推广怎么做

static与非static成员&#xff08;函数&#xff09; 《C Primer》第4版399页&#xff1a;对于特定类类型的全体对象而言&#xff0c;访问一个全局变量有时是必要的。然而&#xff0c;全局变量会破坏封装&#xff1a;对象需要支持特定类抽象的实现。如果对象是全局的&#xff0c…...