(必看图文)Hadoop集群安装及MapReduce应用(手把手详解版)

news2024/12/23 9:47:42

前言

       随着大数据时代的到来,处理和分析海量数据已成为企业和科研机构不可或缺的能力。Hadoop,作为开源的分布式计算平台,因其强大的数据处理能力和良好的可扩展性,成为大数据处理领域的佼佼者。本图文教程旨在帮助读者理解Hadoop集群的安装过程,并通过MapReduce应用实例,深入体验Hadoop在大数据处理中的强大功能。

       在正式进入Hadoop集群安装之前,我们将简要介绍Hadoop的核心组件——HDFS(Hadoop Distributed File System)和MapReduce。HDFS提供了分布式存储能力,使得数据可以存储在集群中的多个节点上,从而实现高容错性和高吞吐量。而MapReduce则是一种编程模型,用于处理大规模数据集,其独特的“Map”和“Reduce”两个阶段使得数据处理任务可以并行执行,大大提高了处理效率。

       通过本教程的学习,读者将能够掌握Hadoop集群的搭建方法,理解MapReduce编程模型的基本原理,并通过实际案例体验Hadoop在大数据处理中的强大能力。

安装OpenEuler系统

选择Installer oenEuler  20.03-LTS

选择默认磁盘分区

配置网络

选择ipv4 setting

填写IP地址(手动配置地址必须遵守Vmware WorkStation的基本配置)

查看地址配置信息

开始安装

配置root账户密码

置root账户密码

通过此部署依次部署4台,并通过ssh登录

为每一台配置yum源地址

cd /etc/yum.repos.d/

vi openEulerOS.repo

配置华为Yum源地址。

[openEuler-source]

name=openEuler-source

baseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/source/

enabled=1

gpgcheck=1

gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/source/RPM-GPG-KEY-openEuler


[openEuler-os]

name=openEuler-os

baseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/OS/x86_64/

enabled=1

gpgcheck=1

gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler


[openEuler-everything]

name=openEuler-everything

baseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/x86_64/

enabled=1

gpgcheck=1

gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/x86_64/RPM-GPG-KEY-openEuler



[openEuler-EPOL]

name=openEuler-epol

baseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/EPOL/x86_64/

enabled=1

gpgcheck=0

清楚现有并生成新的缓存

安装实验所需工具 vim tar (4台都安装)

yum install -y vim  tar

基础配置

此部分配置Hadoop各节点使其符合软件安装的要求,内容比较多,除了教程中给出的步骤,如果是物理服务器等需要另外设置时间同步,因为华为云已经同步了时间,所以此处不加上相应的配置过程,如感兴趣,请自行查资料完成。下面操作以node01为例,进行相应的配置

1.1.1.1 修改主机名

注意:如果主机名不是对应的node01、node2、node3、node4,则需要分别将四个节点的主机名进行修改,四台均需要修改,此处以node01为例子。如果你在购买的时候已经设置好主机名,则不需要修改,可忽略此步骤。

方式一:使用hostname命令,直接命名主机名(但是此种设置重启后会变回原来的,可不操作):

>  hostname node01

>  bash

方式二:修改/etc/hostname文件(修改好后重启,发生修改已生效):

>  vim /etc/hostname

# 修改完毕后,效果如下:

>  cat /etc/hostname

node01

>  reboot

方式三(统一采用这种):此外,还有一种更加简便的办法,直接执行后就可以了,不需要重启:

>  hostnamectl set-hostname node01

>  bash

以下是修改结果:

步骤 1  修改hosts配置文件

使用命令vim /etc/hosts,为node01-4四个节点增加内网IP与节点主机名的映射,确保各节点之间可以使用主机名作为通信的方式。

>  vim /etc/hosts

# 需删除自己的主机名映射到127.0.0.1的映射,如node01为:

127.0.0.1       node01   node01

此行务必删除!

# 加入以下内容如下:(注意IP地址必须是自己的IP地址)

192.168.28.31   node01

192.168.28.32   node02

192.168.28.33   node03

192.168.28.34   node04

呈现结果如下:

1.1.1.2 关闭防火墙

执行下面命令查看防火墙状态:

>  systemctl status firewalld

如果发现默认是已经禁用的,所以不需要关闭了。如果是开启的,则需要在node01-4四个节点执行如下命令关闭防火墙:

>  systemctl stop firewalld

>  systemctl disable firewalld

4个节点均执行此命令:

1.1.1.3 配置ssh互信

          步骤 1      生成id_rsa.pub 文件

各节点执行 ssh-keygen -t rsa 命令后,连续回车三次后生成/root/.ssh/id_rsa.pub 文件

 步骤 1      汇总id_rsa.pub

各个节点执行cat /root/.ssh/id_rsa.pub命令,我们需要将密钥进行汇总,思路是先将node2、node3、node4的密钥拷贝到node01,在node01进行汇总,然后将汇总好的文件分发到node2、node3、node4,这样的话,每个节点就有了彼此的密钥,达到互相免密码登录的效果。

将node2的密钥拷贝到node01(在node2执行):

> scp ~/.ssh/id_rsa.pub root@node01:~/.ssh/id2

执行的时候可能输入“yes”,并且需要输入node01的服务器密码。

将node3的密钥拷贝到node01(在node3执行):

> scp ~/.ssh/id_rsa.pub root@node01:~/.ssh/id3

执行的时候可能输入“yes”,并且需要输入node01的服务器密码。

将node4的密钥拷贝到node01(在node4执行):

> scp ~/.ssh/id_rsa.pub root@node01:~/.ssh/id4

执行的时候可能输入“yes”,并且需要输入node01的服务器密码。

查看一下是否拷贝完成(在node01执行):

> ll ~/.ssh

发现node2、node3、node4的密钥都拷贝到node01上了:

继续进行汇总:

> cd ~/.ssh

> cat id2 id3 id4 >> authorized_keys

此外,还要将node01的密钥也放进去:

> cat id_rsa.pub >> authorized_keys

查看汇总后的文件authorized_keys,发现已经有四台机器的密钥了:

> cat authorized_keys

最后,需要将此文件分发到node02、node03、node04:

> scp authorized_keys root@node02:~/.ssh/

> scp authorized_keys root@node03:~/.ssh/

> scp authorized_keys root@node04:~/.ssh/

步骤 1      验证测试

每个节点分别 ssh node01~node4,选择 yes 后,确保能够互相免密码登录。

两两相互测试

          步骤 1      安装JDK,在 node01~node04

1. 下载jdk8,或者通过上传本地安装文件

> wget https://mirrors.huaweicloud.com/java/jdk/8u192-b12/jdk-8u192-linux-x64.tar.gz

(此次演示node01,02-04都需要执行)

2. 解压jdk

> mkdir –p /usr/lib/jvm/

> tar -zxvf jdk-8u192-linux-x64.tar.gz -C /usr/lib/jvm/

> mv  /usr/lib/jvm/jdk1.8.0_192   /usr/lib/jvm/java

3. 配置环境变量

执行指令vim /etc/profile,编辑环境变量文件,在文件末尾添加下面内容

>  vim /etc/profile

export JAVA_HOME=/usr/lib/jvm/java

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar

示例子如下:

使环境变量生效

> source /etc/profile

 5. 验证java环境

> java –version

出现以下信息表示jdk安装成功

java version "1.8.0_192"

Java(TM) SE Runtime Environment (build 1.8.0_192-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)

上面验证通过,下面的步骤可以不用执行

6. 环境变量拷至bashrc文件,使每次打开shell都生效,编辑/etc/bashrc,在文件末尾添加下面内容 (可选)

>vim /etc/bashrc

export JAVA_HOME=/usr/lib/jvm/java

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar

1.1.1.4 创建必要的目录

> mkdir -p /home/modules/data/buf/

> mkdir -p /home/test_tools/

> mkdir -p /home/nm/localdir

注意:四台服务器都需要操作。

1.2.1 下载软件包

          步骤 1      获取Hadoop软件包

node01找到下载好的Hadoop软件包,放到home目录,或者从本地上传安装文件

> wget https://archive.apache.org/dist/hadoop/common/hadoop-2.8.3/hadoop-2.8.3.tar.gz

1.2.1 搭建Hadoop集群

1.2.1.1 查看解压目录

在node01上准备hadoop组件

> tar -zxvf hadoop-2.8.3.tar.gz -C /home/modules

> ls /home/modules/  | grep hadoop

hadoop-2.8.3

1.2.1.2 修改配置文件

          步骤 1      配置hadoop-env.sh

在node010上执行命令:

> vim /home/modules/hadoop-2.8.3/etc/hadoop/hadoop-env.sh

修改JAVA_HOME路径为ECS已经默认装好了JDK路径

export

=/usr/lib/jvm/java

步骤 1      预配置core-site.xml

在node01上执行命令+

> vim /home/modules/hadoop-2.8.3/etc/hadoop/core-site.xml

在<configuration>与</configuration>之间填入以下内容,此为预配置,后期还要再修改,注意涉及到的主机名如果不同需要根据具体情况修改:

<property>

    <name>fs.defaultFS</name>

    <value>hdfs://node01:8020</value>

 </property>

 <property>

    <name>hadoop.tmp.dir</name>

    <value>/home/modules/hadoop-2.8.3/tmp</value>

 </property>

<property>

    <name>fs.obs.buffer.dir</name>

    <value>/home/modules/data/buf</value>

 </property>




<property>

    <name>fs.obs.readahead.inputstream.enabled</name>

    <value>true</value>

 </property>

 <property>

    <name>fs.obs.buffer.max.range</name>

    <value>6291456</value>

 </property>

 <property>

    <name>fs.obs.buffer.part.size</name>

    <value>2097152</value>

 </property>

 <property>

    <name>fs.obs.threads.read.core</name>

    <value>500</value>

 </property>

 <property>

    <name>fs.obs.threads.read.max</name>

    <value>1000</value>

 </property>

 <property>

    <name>fs.obs.write.buffer.size</name>

    <value>8192</value>

 </property>

 <property>

    <name>fs.obs.read.buffer.size</name>

    <value>8192</value>

 </property>

 <property>

    <name>fs.obs.connection.maximum</name>

    <value>1000</value>

 </property>



 <property>

    <name>fs.obs.impl</name>

    <value>org.apache.hadoop.fs.obs.OBSFileSystem</value>

 </property>

 <property>

    <name>fs.obs.connection.ssl.enabled</name>

    <value>false</value>

 </property>

 <property>

    <name>fs.obs.fast.upload</name>

    <value>true</value>

 </property>

 <property>

    <name>fs.obs.socket.send.buffer</name>

    <value>65536</value>

 </property>

 <property>

    <name>fs.obs.socket.recv.buffer</name>

    <value>65536</value>

 </property>

 <property>

    <name>fs.obs.max.total.tasks</name>

    <value>20</value>

 </property>

 <property>

    <name>fs.obs.threads.max</name>

    <value>20</value>

 </property>

效果如下:

1.2.1.3 配置hdfs-site.xml

在node01上执行命令

> vim /home/modules/hadoop-2.8.3/etc/hadoop/hdfs-site.xml

在<configuration>与</configuration>之间内容替换如下:

<property>

    <name>dfs.replication</name>

    <value>3</value>

 </property>

 <property>

    <name>dfs.namenode.secondary.http-address</name>

    <value>node01:50090</value>

 </property>

 <property>

    <name>dfs.namenode.secondary.https-address</name>

    <value>node01:50091</value>

 </property>

1.2.1.4 配置yarn-site.xml

在node01上执行命令

> vim /home/modules/hadoop-2.8.3/etc/hadoop/yarn-site.xml

在<configuration>与</configuration>之间内容替换如下:

<property>

    <name>yarn.resourcemanager.hostname</name>

    <value>node01</value>

    <description>表示ResourceManager安装的主机</description>

</property>

<property>

    <name>yarn.resourcemanager.address</name>

    <value>node01:8032</value>

    <description>表示ResourceManager监听的端口</description>

</property>

<property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

    <description>为map reduce应用打开shuffle 服务</description>

</property>

<property>

    <name>yarn.nodemanager.local-dirs</name>

    <value>/home/nm/localdir</value>

    <description>表示nodeManager中间数据存放的地方</description>

</property>

<property>

    <name>yarn.nodemanager.resource.memory-mb</name>

    <value>3072</value>

    <description>表示这个NodeManager管理的内存大小</description>

</property>

<property>

    <name>yarn.nodemanager.resource.cpu-vcores</name>

    <value>2</value>

    <description>表示这个NodeManager管理的cpu个数</description>

</property>

<property>

    <name>yarn.nodemanager.pmem-check-enabled</name>

    <value>false</value>

    <description>不检查每个任务的物理内存量</description>

</property>

<property>

    <name>yarn.nodemanager.vmem-check-enabled</name>

    <value>false</value>

    <description>不检查每个任务的虚拟内存量</description>

</property>

<property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

    <description>为map reduce应用打开shuffle 服务</description>

</property>

1.2.1.5 配置mapred-site.xml

在node01上执行命令:

> cp /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml.template /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml

然后编辑复制出来的配置文件:

  vim /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml

在<configuration>与</configuration>之间内容替换如下:

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>node1:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>node1:19888</value>

</property>

<property>

<name>mapred.task.timeout</name>

<value>1800000</value>

</property>

1.2.1.6 配置slaves

在node01节点配置从节点,删掉里面的localhost,配置上从节点(node02、node03、node04)

> vim /home/modules/hadoop-2.8.3/etc/hadoop/slaves

# 删掉里面的localhost,添加以下内容

node02

node03

node04

1.2.1.7 分发组件

在 node01 执行如下命令,将 hadoop-2.8.3 目录拷贝到其他各个节点的/home/modules/下

> for i in {02..04};do scp -r /home/modules/hadoop-2.8.3 root@node${i}:/home/modules/;done

二选一

scp -r /home/modules/hadoop-2.8.3 root@node02:/home/modules/

scp -r /home/modules/hadoop-2.8.3 root@node03:/home/modules/

scp -r /home/modules/hadoop-2.8.3 root@node04:/home/modules/

等待几分钟拷贝完毕后,在 node02~node04 节点执行如下命令检查是否复制成功

> ls /home/modules/ | grep hadoop

1.2.1.8 添加并校验环境变量

在 node01~node04,执行下面命令添加环境变量:

> vim /etc/profile

# 添加内容为:

export HADOOP_HOME=/home/modules/hadoop-2.8.3

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

export HADOOP_CLASSPATH=/home/modules/hadoop-2.8.3/share/hadoop/tools/lib/*:$HADOOP_CLASSPATH

注意:请在末尾添加!

在 node01~node4,执行如下命令,使环境变量生效:

> source /etc/profile

此处以node01为例子

在 node01~node4,执行如下命令,校验环境变量:

> echo $HADOOP_HOME

显示如下内容则为配置正确:

1.2.1.9 初始化namenode

node01上执行如下命令,初始化 Namenode:

> hdfs namenode -format

1.3.1 启动Hadoop集群

步骤 1    在node01节点执行以下命令:
> start-dfs.sh ; start-yarn.sh

返回信息中有以下内容,表示hadoop集群启动成功:

Starting namenodes on [node01]

Starting secondary namenodes [node01]

starting yarn daemonshi

1.3.2 验证Hadoop状态

步骤 1   使用jps命令在node01-4中查看Java进程

在node01中可以查看到 NameNode,SecondaryNameNode,ResourceManager

进程,在node2-4中可以查看到 NodeManager 和 Datanode 进程,表示hadoop集群状态正常。

>  jps

1538 WrapperSimpleApp

5732 SecondaryNameNode

5508 NameNode

6205 Jps

5918 ResourceManager

>  jps

3026 Jps

2740 DataNode

1515 WrapperSimpleApp

2862 NodeManager

步骤 3    访问,可以登录Namenode的Web界面:

http://namenodeip:50070

访问Yran界面:

1.4.1 使用Hadoop统计以下表格人名字的出现次数

首先找到hadoop自带worldcount jar包示例的路径

创建数据文件夹,以及输出文件夹

编辑输入数据:

具体输入的数据听从老师安排

将本地准备的输入文件上传到hdfs中:

查看文件

执行MapReduce

hadoop jar hadoop-mapreduce-examples-2.8.3.jar wordcount /data/wordcount /output/wordcountresult

查看结果:jps

hadoop fs -text /output/wordcountresult/part-r-00000

结尾

        经过前面的学习,相信读者已经对Hadoop集群的安装和MapReduce应用有了深入的了解。Hadoop作为一个开源的分布式计算平台,为大数据处理提供了强大的支持。通过本教程的学习,读者可以搭建起自己的Hadoop集群,并尝试使用MapReduce处理大规模数据集。当然,Hadoop的功能远不止于此,它还有更多的高级特性和应用场景等待我们去探索。希望本教程能够为您在大数据处理领域的学习和实践提供一些帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《昇思25天学习打卡营第5天|数据变换 Transforms》

文章目录 前言&#xff1a;今日所学&#xff1a;1. Common Transforms2. Vision Transforms3. Text Transforms 前言&#xff1a; 我们知道在进行神经网络训练的时候&#xff0c;通常要将原始数据进行一系列的数据预处理操作才会进行训练&#xff0c;所以MindSpore提供了不同类…

C语言部分复习笔记

1. 指针和数组 数组指针 和 指针数组 int* p1[10]; // 指针数组int (*p2)[10]; // 数组指针 因为 [] 的优先级比 * 高&#xff0c;p先和 [] 结合说明p是一个数组&#xff0c;p先和*结合说明p是一个指针 括号保证p先和*结合&#xff0c;说明p是一个指针变量&#xff0c;然后指…

蒂升电梯职业性格和Verify认知能力SHL测评答题攻略及薪资待遇解密!

​一、蒂升电梯职业性格和认知能力测评考什么 您好&#xff01;蒂升电梯公司邀请您参加的OPQ职业性格测评和Verify认知能力测评是两种常见的评估工具&#xff0c;用于帮助了解个人的职场性格特点和认知能力。 OPQ职业性格测评 这是一种性格测试&#xff0c;通常用于评估个人在…

一文讲解Docker入门到精通

一、引入 1、什么是虚拟化 在计算机中&#xff0c;虚拟化&#xff08;英语&#xff1a;Virtualization&#xff09;是一种资源管理技术&#xff0c;它允许在一台物理机上创建多个独立的虚拟环境&#xff0c;这些环境被称为虚拟机&#xff08;VM&#xff09;。每个虚拟机都可以…

盘古5.0,靠什么去解最难的题?

文&#xff5c;周效敬 编&#xff5c;王一粟 当大模型的竞争开始拼落地&#xff0c;商业化在B端和C端都展开了自由生长。 在B端&#xff0c;借助云计算向千行万业扎根&#xff1b;在C端&#xff0c;通过软件App和智能终端快速迭代。 在华为&#xff0c;这家曾经以通信行业起…

Java登录管理功能的自我理解(尚庭公寓)

登录管理 背景知识 1. 认证方案概述 有两种常见的认证方案&#xff0c;分别是基于Session的认证和基于Token的认证&#xff0c;下面逐一进行介绍 基于Session 基于Session的认证流程如下图所示 该方案的特点 登录用户信息保存在服务端内存&#xff08;Session对象&#xff…

Django 一对多关系

1&#xff0c;创建 Django 应用 Test/app9 django-admin startapp app9 2&#xff0c;注册应用 Test/Test/settings.py 3&#xff0c;添加应用路由 Test/Test/urls.py from django.contrib import admin from django.urls import path, includeurlpatterns [path(admin/,…

安装KB5039212更新卡在25% 或者 96% 进度

系统之家7月1日消息&#xff0c;微软在6月11日的补丁星期二活动中&#xff0c;为Windows 11系统推出了KB5039212更新。然而&#xff0c;部分用户在Windows社区中反映&#xff0c;安装过程中出现失败&#xff0c;进度条在25%或96%时卡住。对于遇到此类问题的Windows 11用户&…

YOLOv8改进 | 主干网络 | C2f融合动态卷积模块ODConv

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有40篇内容&#xff0c;内含各种Head检测头、损失函数Loss、…

Linux CentOS 7 离线安装.NET环境

下载 下载.NET 例如&#xff1a; aspnetcore-runtime-6.0.15-linux-x64.tar.gz 复制 复制到如下目录&#xff1a; /usr/local/dotnet/aspnetcore-runtime-6.0.15-linux-x64.tar.gz 解压 cd /usr/local/dotnet/ tar -zxvf aspnetcore-runtime-6.0.15-linux-x64.tar.gz 创建…

非标设备行业的数智化项目管理

近年来&#xff0c;中国制造快速发展&#xff0c;企业迫切需要加快转型升级。与传统制造业相比&#xff0c;高端制造业具有明显的优势&#xff1a;高技术、高附加值、低污染、低排放、竞争优势强。一方面&#xff0c;企业对于生产效率和自动化水平的要求不断提高&#xff0c;期…

esp12实现的网络时钟校准

网络时间的获取是通过向第三方服务器发送GET请求获取并解析出来的。 在本篇博客中&#xff0c;网络时间的获取是一种自动的行为&#xff0c;当系统成功连接WiFi获取到网络天气后&#xff0c;系统将自动获取并解析得到时间和日期&#xff0c;为了减少误差每两分钟左右进行一次校…

qt可点击的QLabel

需求——问题与思路 使用wpf实现一个可点击的超链接label相当简单&#xff08;如下图&#xff09;&#xff0c;但是qt的QLabel不会响应点击事件&#xff0c;那就从QLabel继承一个类&#xff0c;然后在该类中重写mousePressEvent函数&#xff0c;并在该函数中对左键点击事件做响…

人工智能——常用数学基础之线代中的矩阵

1. 矩阵的本质&#xff1a; 矩阵本质上是一种数学结构&#xff0c;它由按照特定规则排列的数字组成&#xff0c;通常被表示为一个二维数组。矩阵可以用于描述一组数据&#xff0c;或者表示某种关系&#xff0c;比如线性变换。 在人工智能中&#xff0c;矩阵常被用来表示数据集…

沉浸感拉满的三模游戏外设神器!谷粒金刚3 Pro游戏手柄开箱试玩

沉浸感拉满的三模游戏外设神器&#xff01;谷粒金刚3 Pro游戏手柄开箱试玩 哈喽小伙伴们好&#xff0c;我是Stark-C~ 对于喜欢打游戏的玩家来说&#xff0c;一款得力的游戏外设绝对是提升游戏体验&#xff0c;增加游戏乐趣的重要神器&#xff01;而在众多的外设中&#xff0c…

全同态加密在大模型应用中应用

密码学简介 上文的图例基本展示了常见加密体系。加密体系&#xff0c;如果用比较正式的描述方法&#xff0c;无疑是做了三件事&#xff1a; 首先&#xff0c;通过一个生成算法 &#x1d43e;&#x1d452;&#x1d466;&#x1d43a;&#x1d452;&#x1d45b;(1&#x1d70…

32.哀家要长脑子了!

1.299. 猜数字游戏 - 力扣&#xff08;LeetCode&#xff09; 公牛还是挺好数的&#xff0c;奶牛。。。妈呀&#xff0c;一朝打回解放前 抓本质抓本质&#xff0c;有多少位非公牛数可以通过重新排列转换公牛数字&#xff0c;意思就是&#xff0c;当这个数不是公牛数字时&#x…

ctfshow web入门 sqli-libs web552--web560

web552 宽字节注入 嗯原理我就不讲了&#xff0c;还是有点复杂后面有时间讲讲 总而言之就是用汉字把\的转义作用抵消了然后正常注入即可 ?id-1包 union select 1,2,3--?id-1包union select 1,(select group_concat(table_name) from information_schema.tables where tab…

ChatGPT-4o医学应用、论文撰写、数据分析与可视化、机器学习建模、病例自动化处理、病情分析与诊断支持

2022年11月30日&#xff0c;可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT-3.5&#xff0c;将人工智能的发展推向了一个新的高度。2023年11月7日&#xff0c;OpenAI首届开发者大会被称为“科技界的春晚”&#xff0c;吸引了全球广大…

如何使用pytest组织自动化测试用例结构?

如何组织自动化测试工程的目录结构&#xff1f;这篇文章介绍了我是如何组织整个自动化工程目录结构的&#xff0c;本篇介绍下我是如何利用pytest框架组织一个测试用例文件的。 用例文件组织原则 整个testsuite目录下整体上按照特性模块划分目录&#xff0c;每个目录下可以只包…