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

Hdoop伪分布式集群搭建

文章目录

  • Hadoop安装部署
  • 前言
    • 1.环境
    • 2.步骤
    • 3.效果图
  • 具体步骤
    • (一)前期准备
      • (1)ping外网
      • (2)配置主机名
      • (3)配置时钟同步
      • (4)关闭防火墙
    • (二)正文
      • (1)配置hosts列表
      • (2)SSH免密钥登录配置
        • ①master虚拟机上
        • ②slave01虚拟机上
        • ③slave02虚拟机上
        • ④验证免密登录
      • (3)安装JDK
      • (4)安装部署Hadoop集群(chenqi用户)
        • 1.解压缩包
        • 2.配置文件
        • 3.创建Hadoop数据目录
        • 4.将配置好的hadoop文件夹复制到从节点
        • 5.配置Hadoop环境变量
        • 6.格式化Hadoop文件目录
        • 7.启动Hadoop集群
      • (5)测试
        • ①Web UI查看集群是否成功启动
        • ②运行PI实例检查集群是否成功


Hadoop安装部署

前言

1.环境

  • 虚拟机数量:3个 (1个master,2个slave:slave01,slave02)
  • 操作系统:Ubuntu 22.04.2

2.步骤

在这里插入图片描述

3.效果图

hadoop集群安装部署后,启动集群,效果如下:

效果图1:master虚拟机上,出现这4个进程表示主节点进程启动成功。

在这里插入图片描述

效果图2:slave01虚拟机上,出现这3个进程表示从节点进程启动成功。

在这里插入图片描述

效果图3:slave02虚拟机上,出现这3个进程表示从节点进程启动成功。

在这里插入图片描述

具体步骤

(一)前期准备

首先要确保各台虚拟机能ping通外网

(1)ping外网

在三台虚拟机中使用ping命令,确保各台虚拟机能ping通外网。

(2)配置主机名

将三台主机名分别设置为master,slave01,slave02,便于后期的操作

说明:此处以界面虚拟机master的操作为例,slave01和slave02的操作如法炮制。

不同操作系统可能操作方法不同,百度对应操作即可

  1. 以下操作需要root用户权限,所以先切换成root用户。

    chenqi@localhost:~$ sudo su
    
  2. 使用vi命令编辑主机名(或使用gedit)。

    root@localhost:~# vi /etc/hostname
    

    将hostname文件中原来内容替换为master,如果已经是master,可以直接按冒号“:“键,再输入“wq”保存退出

  3. 临时设置主机名为master。

    root@localhost:~# hostname master
    
  4. 检测主机名是否修改成功,使用bash命令让上一步操作生效。

    root@localhost:~# bash
    
  5. localhost变为master

(3)配置时钟同步

说明:此处以界面虚拟机master的操作为例,slave01和slave02的操作如法炮制。

不同操作系统可能操作方法不同,百度对应操作即可

Linux服务器运行久了,系统时间就会存在一定的误差,一般情况下可以使用date命令进行时间设置,但在做数据库集群等操作时对多台机器的时间差是有要求的,此时就需要使用ntpdate进行时间同步

  1. 使用root用户权限

  2. 执行命令同步,如果没有ntpdate需要先安装:apt-get install ntpdate

    root@master:~# sudo ntpdate cn.pool.ntp.org
    

(4)关闭防火墙

说明:此处以界面虚拟机master的操作为例,slave01和slave02的操作如法炮制。

不同操作系统可能操作方法不同,百度对应操作即可

  1. 查看防火墙状态(默认已经关闭防火墙)

    root@master:~# sudo ufw status
    
  2. 两条命令分别是打开防火墙和关闭防火墙)

    root@master:~# sudo ufw enable 
    root@master:~# sudo ufw disable
    

(二)正文

(1)配置hosts列表

说明:此处以界面虚拟机master的操作为例,slave01和slave02的操作如法炮制。

不同操作系统可能操作方法不同,百度对应操作即可

  1. 运行ifconfig命令,获得当前master虚拟机的ip地址,如图6-10所示是master的ip地址。(用相同方法获得当前slave01和slave02虚拟机的ip地址。)

    ifconfig没安装可以先安装,也可以使用ip addr

  2. 编辑主机名列表文件hosts。将下面三行添加到/etc/hosts文件中,保存退出。

    root@master:~# vi /etc/hosts
    
    "自己的maser主机地址" master
    "自己的slave01主机地址" slave01
    "自己的slave02主机地址" slave02
    
  3. 测试

    root@master:~# ping master -c 3
    root@master:~# ping slave01 -c 3
    root@master:~# ping slave02 -c 3
    

    说明:参数-c 3表示只返回三行响应就中止。ping通就代表成功

(2)SSH免密钥登录配置

①master虚拟机上

  1. 先从root用户,退回到普通用户

    root@master:~# su chenqi
    
  2. 在终端生成密钥,命令如下(一路按回车完成密钥生成)

    chenqi@master:~$ ssh-keygen -t rsa
    

    在这里插入图片描述

  3. 生成的密钥在用户根目录中的.ssh子目录中,进入.ssh目录查看

    在这里插入图片描述

  4. 执行以下命令复制公钥文件

    chenqi@master:~/.ssh$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    
  5. 修改authorized_keys文件的权限

    chenqi@master:~/.ssh$ chmod 600 ~/.ssh/authorized_keys
    
  6. 将专用密钥添加到 ssh-agent 的高速缓存中

    chenqi@master:~/.ssh$ ssh-add ~/.ssh/id_rsa
    

    Could not open a connection to your authentication agent:

    原因:未启动ssh agent

    先执行一下ssh-agent bash

  7. 将authorized_keys文件复制到slave01、slave02虚拟机的zkpk用户的根目录,

    chenqi@master:~$ scp ~/.ssh/authorized_keys zkpk@slave01:~/
    chenqi@master:~$ scp ~/.ssh/authorized_keys zkpk@slave02:~/
    

②slave01虚拟机上

  1. 生成密钥,命令如下(一路点击回车生成密钥)。

    chenqi@slave01:~$ ssh-keygen -t rsa
    
  2. 将authorized_keys文件移动到.ssh目录,

    chenqi@slave01:~$ mv authorized_keys ~/.ssh/
    

③slave02虚拟机上

  1. 生成密钥,命令如下(一路点击回车生成密钥)。

    chenqi@slave02:~$ ssh-keygen -t rsa
    
  2. 将authorized_keys文件移动到.ssh目录,

    chenqi@slave02:~$ mv authorized_keys ~/.ssh/
    

④验证免密登录

  1. 在master虚拟机上远程登录slave01

    chenqi@master:~$ ssh slave01
    

    如果出现如图所示的内容表示免密钥配置成功。

    在这里插入图片描述

  2. 退出slave01远程登录

    chenqi@slave01:~$ exit
    
  3. slave02同理

(3)安装JDK

说明:此处以界面虚拟机master的操作为例,slave01和slave02的操作如法炮制。

不同操作系统可能操作方法不同,百度对应操作即可

  1. 删除系统自带的jdk(如若出现如图6-21效果,说明系统自带java,需要先卸载)

    chenqi@master:~$ rpm -qa | grep java
    

    在这里插入图片描述

  2. 移除系统自带的jdk

    root@master:~# yum remove java-1.*
    
  3. 创建存放jdk文件目录

    root@master:~# mkdir /usr/java
    
  4. 解压JDK压缩包,将/home/chenqi/tgz下的JDK压缩包解压到/usr/java目录下

    root@master:~# tar -xzvf /home/chenqi/tar/jdk-8u371-linux-x64.tar.gz -C /usr/java
    

    hdoop和jdk的压缩包去官网上下载一个版本下来即可

    在这里插入图片描述

    slave01和02都要解压jdk

  5. 退出root用户

    root@master:~# exit
    
  6. 配置chenqi用户环境变量。

    chenqi@master:~$ vi .profile
    

    复制以下内容添加到上面打开的文件.bash_profile中,然后保存退出。

    export JAVA_HOME=/usr/java/jdk1.8.0_371/
    export PATH=$JAVA_HOME/bin:$PATH
    
  7. 使环境变量生效

    chenqi@master:~$ source /home/chenqi/.profile
    
  8. 测试是否配置成功

    chenqi@master:~$ java -version
    

(4)安装部署Hadoop集群(chenqi用户)

注意:每个虚拟机上的Hadoop配置基本相同,在master虚拟机上操作,然后复制到slave01、slave02两个虚拟机即可。

1.解压缩包

chenqi@master:~$ tar -xzvf /home/chenqi/tar/hadoop-3.3.6.tar.gz -C /home/chenqi

2.配置文件

• workers : 配置从节点( DataNode )有哪些
• hadoop-env.sh : 配置 Hadoop 的相关环境变量
• core-site.xml : Hadoop 核心配置文件
• hdfs-site.xml : HDFS 核心配置文件

①配置hadoop-env.sh文件

chenqi@master:~$ vi /home/chenqi/hadoop-3.3.6/etc/hadoop/hadoop-env.sh

复制以下内容添加到上面打开的文件hadoop-env.sh中,然后保存退出。

export JAVA_HOME=/usr/java/jdk1.8.0_371/

②配置yarn-env.sh文件。

chenqi@master:~$ vi ~/hadoop-3.3.6/etc/hadoop/yarn-env.sh

复制以下内容添加到上面打开的文件yarn-env.sh中,然后保存退出。

export JAVA_HOME=/usr/java/jdk1.8.0_371/

③配置core-site.xml 文件。

chenqi@master:~$ vi ~/hadoop-3.3.6/etc/hadoop/core-site.xml

复制以下内容替换core-site.xml中的内容,然后保存退出。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>    <property>        <name>fs.defaultFS</name>       <value>hdfs://master:9000</value>    </property>   <property>        <name>hadoop.tmp.dir</name>        <value>/home/chenqi/hadoopdata</value>    </property>
</configuration>

fs.defaultFS:HDFS的默认访问路径,也是NameNode的访问地址。

hadoop.tmp.dir:Hadoop数据文件的存放目录。该参数如果不配置默认指向/tmp目录,而/tmp目录在系统重启后会自动清空,从而导致Hadoop的文件系统数据丢失。

最后测试的时候如果没有9000端口,将master改成对应的地址

④配置hdfs-site.xml文件。

chenqi@master:~$ vi ~/hadoop-3.3.6/etc/hadoop/hdfs-site.xml

复制以下内容替换hdfs-site.xml中的内容,然后保存退出。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>     <!-- 测试环境指定HDFS副本的数量1 --><property><name>dfs.replication</name>        <value>2</value>    </property>
</configuration>

dfs.replication:文件在HDFS系统中的副本数。

dfs.permission.enabled:是否检查用户权限。

dfs.namenoder:NameNode节点数据在本地文件系统的存放位置。

dfs.datanode.data.dir:DataNode节点数据在本地文件系统的存放位置。

⑤配置yarn-site.xml文件。

chenqi@master:~$ vi ~/hadoop-3.3.6/etc/hadoop/yarn-site.xml

6.9.6.2复制以下内容替换yarn-site.xml中的内容,然后保存退出。(如果已经有这样的内容,直接退出。)

<?xml version="1.0"?>
<configuration>    <property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value>    </property>    <property>        <name>yarn.resourcemanager.address</name>        <value>master:18040</value>    </property>    <property>        <name>yarn.resourcemanager.scheduler.address</name>       <value>master:18030</value>    </property>    <property>        <name>yarn.resourcemanager.resource-tracker.address</name>        <value>master:18025</value>    </property>    <property>        <name>yarn.resourcemanager.admin.address</name>        <value>master:18141</value>    </property>    <property>        <name>yarn.resourcemanager.webapp.address</name>        <value>master:18088</value>    </property>
</configuration>

yarn.nodemanager.aux:NodeManager上运行的附属服务,需配置成mapreduce_shuffle才可运行Mapreduce程序。YARN提供了该配置项用于在NodeManager上扩展自定义服务,Mapreduce的Shuffle功能正是一种扩展服务。


yarn.resourcemanager.address:指定ResourceManager所在的节点与访问端口,如果不添加,ResourceManager则默认执行在YARN启动命令的节点上启动。

⑥配置mapred-site.xml文件。

chenqi@master:~$ vi ~/hadoop-3.3.6/etc/hadoop/mapred-site.xml

复制以下内容替换mapred-site.xml中的内容,然后保存退出。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>    <property>        <name>mapreduce.framework.name</name>        <value>yarn</value>    </property>
</configuration>

mapreduce.framework.name:指定 Mapreduce 程序运行在 YARN上

⑦配置workers文件。

chenqi@master:~$ vi ~/hadoop-3.3.6/etc/hadoop/workers

通过workers文件定义数据节点,根据集群规划,我们将两个节点都要作为数据节点,添上:

slave01
slave02

3.创建Hadoop数据目录

chenqi@master:~$ mkdir hadoopdata

4.将配置好的hadoop文件夹复制到从节点

用scp命令将文件夹复制到slave01、slave02上。

注意:因为之前已经配置了免密钥登录,这里可以直接免密钥远程复制。

chenqi@master:~$ scp -r hadoop-3.3.6 chenqi@slave01:~/chenqi@master:~$ scp -r hadoop-3.3.6 chenqi@slave02:~/

复制完成后,可以在slave01和slave02上检验是否复制成功。在用户主目录下ls一下就行

5.配置Hadoop环境变量

说明:此处以界面虚拟机master的操作为例,slave01和slave02的操作如法炮制。

使用vi命令编辑.bash_profile文件。

chenqi@master:~$ vi .profile

复制以下内容添加到.bash_profile末尾,然后保存退出。(如果已经有这样的内容,直接退出。)

#HADOOP
export HADOOP_HOME=/home/chenqi/hadoop-3.3.6
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

使环境变量生效。

chenqi@master:~$ source ~/.profile

6.格式化Hadoop文件目录

注意:此操作在master虚拟机上执行。

格式化命令如下。

chenqi@master:~$ hdfs namenode –format

在这里插入图片描述

图6-45 格式化master虚拟机(1)

在这里插入图片描述

图 6-46格式化master虚拟机(2)

7.启动Hadoop集群

在master虚拟机上运行start-all.sh命令。(格式化后首次执行此命令,提示输入yes/no时,输入yes。)

chenqi@master:~$ start-all.sh

查看进程是否启动。

注意:前面那些数字是进程号,可能因为自己的实验环境不同而不同。

在这里插入图片描述

在slave01虚拟机上的终端执行jps命令,出现如图 :

在这里插入图片描述

在slave02虚拟机上的终端执行jps命令,出现如图:

!在这里插入图片描述

(5)测试

①Web UI查看集群是否成功启动

在浏览器地址栏中输入http://master:50070,检查namenode和 datanode 是否正常,如图6-50、6-51、6-52所示。

netstat -ntpl查看自己的

在这里插入图片描述

查看集群namenode 和 datanode情况、检查Yarn是否正常
在这里插入图片描述

②运行PI实例检查集群是否成功

执行下面的命令。(Pi后面的第一个参数10是Map任务的数量,第二个10是求圆周率Pi的算法的参数。)

[zkpk@master~]$ hadoop jar ~/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 10 10

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

最后输出:Estimated value of Pi is 3.20000000000000000000,这个值还不够精确,可以通过调整那两个参数逐渐逼近3.1415926……。

问题描述:Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster

解决方法:

第一种:在mapred-site.xml中添加以下配置

<property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=${hadoop-3.3.6}</value>
</property>
<property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=${hadoop-3.3.6}</value>
</property>
<property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=${hadoop-3.3.6}</value>
</property>

第二种:如果上述方法不行,采用下面方式

执行下面命令

hadoop classpath

拿到运行的类的路径,如下图:

img

在Hadoop安装目录下找到yarn-site.xml文件($HADOOP_HOME/etc/hadoop/yarn-site.xml),把刚才得到的信息配置进去,如下:

<configuration><property><name>yarn.application.classpath</name><value>复制的Hadoop classpath信息</value></property>
</configuration>

img

在所有的Master和Slave节点进行如上设置,设置完毕后重启Hadoop集群,重新运行刚才程序,成功运行。

相关文章:

Hdoop伪分布式集群搭建

文章目录 Hadoop安装部署前言1.环境2.步骤3.效果图 具体步骤&#xff08;一&#xff09;前期准备&#xff08;1&#xff09;ping外网&#xff08;2&#xff09;配置主机名&#xff08;3&#xff09;配置时钟同步&#xff08;4&#xff09;关闭防火墙 &#xff08;二&#xff09…...

java临时文件

临时文件 有时候&#xff0c;我们程序运行时需要产生中间文件&#xff0c;但是这些文件只是临时用途&#xff0c;并不做长久保存。 我们可以使用临时文件&#xff0c;不需要长久保存。 public static File createTempFile(String prefix, String suffix)prefix 前缀 suffix …...

C++中的<string>头文件 和 <cstring>头文件简介

C中的<string>头文件 和 <cstring>头文件简介 在C中<string> 和 <cstring> 是两个不同的头文件。 <string> 是C标准库中的头文件&#xff0c;定义了一个名为std::string的类&#xff0c;提供了对字符串的操作如size()、length()、empty() 及字…...

安装MySQL

Centos7下安装MySQL详细步骤_centos7安装mysql教程_欢欢李的博客-CSDN博客...

输入学生成绩,函数返回最大元素的数组下标,求最高分学生成绩(输入负数表示输入结束)

scanfscore()函数用于输入学生的成绩 int scanfscore(int score[N])//输入学生的成绩 {int i -1;do {i;printf("输入学生成绩:");scanf("%d", &score[i]);} while (score[i] > 0);return i; } findmax()用于寻找最大值 int findmax(int score[N…...

常用音频接口:TDM,PDM,I2S,PCM

常用音频接口&#xff1a;TDM&#xff0c;PDM&#xff0c;I2S&#xff0c;PCM_tdm音频_沙漠的甲壳虫的博客-CSDN博客 I2S/PCM接口及音频codec_音频pcm接口模块设计-CSDN博客 2个TDM8功放调试ing_周龙(AI湖湘学派)的博客-CSDN博客 数字音频接口时序----IIS、TDM、PCM、PDM_td…...

git clone报错Failed to connect to github.com port 443 after 21055 ms:

git 设置代理端口号 git config --global http.proxy http://127.0.0.1:10085 和 git config --global https.proxy http://127.0.0.1:10085 然后就可以成功git clone hugging face的数据集了 如果是https://huggingface.co/datasets/shibing624/medical/tree/main 那么…...

【操作系统】深入浅出死锁问题

死锁的概念 在多线程编程中&#xff0c;我们为了防止多线程竞争共享资源而导致数据错乱&#xff0c;都会在操作共享资源而导致数据错乱&#xff0c;都会在操作共享资源之前加上互斥锁&#xff0c;只有成功获得到锁的线程&#xff0c;才能操作共享资源&#xff0c;获取不到锁的…...

springboot实现webSocket服务端和客户端demo

1&#xff1a;pom导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>2.2.7.RELEASE</version></dependency>2&#xff1a;myWebSocketClien…...

代码走读: FFMPEG-ffplayer02

AVFrame int attribute_align_arg avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame) 选取一个音频解码器 和 一个视频解码器分别介绍该解码器功能 音频G722 g722dec.c -> g722_decode_frame 通过 ff_get_buffer 给 传入的 frame 指针分配内存 g722_decode_…...

【数据结构】——排序算法的相关习题

目录 一、选择题题型一 &#xff08;插入排序&#xff09;1、直接插入排序2、折半插入排序3、希尔排序 题型二&#xff08;交换排序&#xff09;1、冒泡排序2、快速排序 题型三&#xff08;选择排序&#xff09;1、简单选择排序~2、堆排序 ~题型四&#xff08;归并排序&#xf…...

C高级day5(Makefile)

一、Xmind整理&#xff1a; 二、上课笔记整理&#xff1a; 1.#----->把带参宏的参数替换成字符串 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX(a,b) a>b?a:b #define STR(n) #n int main(int argc, const char *argv…...

Android 系统中适配OAID获取

一、OAID概念 OAID&#xff08;Open Anonymous Identification&#xff09;是一种匿名身份识别标识符&#xff0c; 用于在移动设备上进行广告追踪和个性化广告投放。它是由中国移动通信集 团、中国电信集团和中国联通集团共同推出的一项行业标准 OAID值为一个64位的数字 二、…...

差分数组leetcode 2770 数组的最大美丽值

什么是差分数组 差分数组是一种数据结构&#xff0c;它存储的是一个数组每个相邻元素的差值。换句话说&#xff0c;给定一个数组arr[]&#xff0c;其对应的差分数组diff[]将满足&#xff1a; diff[i] arr[i1] - arr[i] 对于所有 0 < i < n-1 差分数组的作用 用于高效…...

请求响应状态码

请求与响应&状态码 Requests部分 请求行、消息报头、请求正文。 Header解释示例Accept指定客户端能够接收的内容类型Accept: text/plain, text/htmlAccept-Chars et浏览器可以接受的字符编码集。Accept-Charset: iso-8859-5Accept-Encodi ng指定浏览器可以支持的web服务…...

安卓机型系统美化 Color.xml文件必备常识 自定义颜色资源

color.xml文件是Android工程中用来进行颜色资源管理的文件.可以在color.xml文件中通过<color>标签来定义颜色资源.我们在布局文件中、代码中、style定义中或者其他资源文件中&#xff0c;都可以引用之前在color.xml文件中定义的颜色资源。 将color.xml文件拷到res/value…...

YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制)

&#x1f388;&#x1f388;&#x1f388;YOLO 系列教程 总目录 YOLOV1整体解读 YOLOV2整体解读 YOLOV1提出论文&#xff1a;You Only Look Once: Unified, Real-Time Object Detection 1、物体检测经典方法 two-stage&#xff08;两阶段&#xff09;&#xff1a;Faster-rc…...

2023/9/12 -- C++/QT

作业 实现一个图形类&#xff08;Shape&#xff09;&#xff0c;包含受保护成员属性&#xff1a;周长、面积&#xff0c; 公共成员函数&#xff1a;特殊成员函数书写 定义一个圆形类&#xff08;Circle&#xff09;&#xff0c;继承自图形类&#xff0c;包含私有属性&#xf…...

【Purple Pi OH RK3566鸿蒙开发板】OpenHarmony音频播放应用,真实体验感爆棚!

本文转载于Purple Pi OH开发爱好者&#xff0c;作者ITMING 。 原文链接&#xff1a;https://bbs.elecfans.com/jishu_2376383_1_1.html 01注意事项 DevEco Studio 4.0 Beta2&#xff08;Build Version: 4.0.0.400&#xff09; OpenHarmony SDK API 9 创建工程类型选择Appli…...

Android rom开发:9.0系统上实现4G wifi 以太网共存

framework层修改网络优先级&#xff0c;4G > wifi > eth 修改patch如下&#xff1a; diff --git a/frameworks/base/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java b/frameworks/base/services/core/java/com/android/server/connectivit…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...