Hadoop2.x集群搭建(centos7、VMware、finalshell)

news2024/11/16 21:34:09

第一章 Hadoop集群安装

1.1 集群规划

集群规划规划
操作系统Mac、Windows
虚拟软件Parallels Desktop(Mac)、VMWare(Windows)
虚拟机主机名: c1, IP地址: 192.168.10.101
主机名: c2, IP地址: 192.168.10.102
主机名: c3, IP地址: 192.168.10.103
软件包上传路径/root/softwares
软件包安装路径/usr/local
JDKJdk-8u221-linux-x64.tar.gz
Hadoophadoop-2.7.6.tar.gz
用户root

ps:这里的ip要换成自己的ip,保持在一个子网下,可以互相ping通

1.1.1 服务器规划

因为搭建一个服务器集群需要至少一主两从,一共三台服务器,而且这三台服务器上很多配置和环境变量是重复的,所以我们可以配置好一些文件,省去我们后期的操作,主要包括下面的配置和环境:

  • 安装对应的jdk和hadoop(hadoop有1x、2x、3x),并且分别配置jdk和hadoop的环境变量,并且使其环境变量生效
  • 关闭防火墙,并关闭防火墙的自启动
  • 确保/etc/hosts文件配置了IP和hosts的映射关系
  • 确保三台机器的网络配置通畅(NAT模式、静态IP、主机名的配置),我们克隆服务器的时候,mac地址会重复,因此我们需要重新生成一下mac地址,这里要关闭DHCP(动态主机配置协议)
  • 确保配置了三台机器的免密登录认证,生成自己的公钥和私钥
  • 确保所有的机器时间同步,虚拟机关机的时候,时间会静止
  • 新的centos虚拟机上只有vi,没有vim,介意的可以安装vim,vim用户体验更好一点。centos安装:yum -y install vim*;ubuntu安装:sudo apt-get install vim-gtk

1.1.2 安装三台虚拟机

使用VMware安装三台centos,其中第一台需要手动创建,二三台直接复制第一台即可(右键虚拟机- - -管理- - -克隆),然后需要更改网络配置,随机生成新的mac地址,使用桥接模式配置网络

  • 需要保证可以相互ping通,在同一子网段下
    在这里插入图片描述
    使用ssh工具连接三台服务器,这里使用FinalShell
    在这里插入图片描述

1.2 安装JDK

1.2.1 检查一下是否已经安装过或者系统内置JDK,如果有内置的,将其卸载

[root@c1 ~]# rpm -qa | grep jdk     				# 如果有,请卸载
[root@c1 ~]# rpm -e xxxxxxxx --nodeps      	# 将查询到的内置jdk强制卸载

1.2.2 上传jdk1.8和hadoop2.6.7

将jdk-8u221-linux-x64.tar.gz上传到/root目录中

1.2.3 解压jdk和hadoop到/usr/local/下

[root@c1 ~]# tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local

1.2.4 更名jdk和hadoop

[root@c1 ~]# cd /usr/local
[root@c1 local]# mv jdk1.8.0_221/  jdk

1.2.5 配置Jdk的环境变量:/etc/profile

[root@c1 local]# vi /etc/profile
.........省略...........
#jdk environment
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

1.2.6 使当前窗口生效

[root@c1 local]# source /etc/profile

1.2.7 验证jdk环境

[root@c1 local]# java -version
[root@c1 local]# javac	

在这里插入图片描述

1.3. 完全分布式环境需求及安装

1. 三台机器的防火墙必须是关闭的
2. 确保三台机器的网络配置通常(NAT模式、静态IP、主机名的配置)
3. 确保/etc/hosts文件配置了IP和hosts的映射关系
4. 确保配置了三台机器的免密登录认证
5. 确保所有的机器时间同步
6. JDK和Hadoop的环境变量配置

1.3.1 关闭防火墙

systemctl stop firewalld #关闭防火墙
systemctl disable firewalld
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl disable firewalld.service #关闭防火墙自启动

#最好也把selinux关闭掉,这是linux系统的一个安全机制,进入文件中将SELINUX设置为disabled
[root@c1 ~]# vi /etc/selinux/config
.........
SELINUX=disabled			
.........

1.3.2 静态IP和主机名配置

--1. 配置静态IP(确保NAT模式)
[root@c1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
............
BOOTPROTO=static			    # 将dhcp改为static,固定主机ip和主机名的映射
............
ONBOOT=yes						# 将no改为yes
IPADDR=192.168.10.101			# 添加IPADDR属性和ip地址
PREFIX=24									# 添加NETMASK=255.255.255.0或者PREFIX=24	
GATEWAY=192.168.10.2			# 添加网关GATEWAY
DNS1=114.114.114.114            # 添加DNS1和备份DNS
DNS2=8.8.8.8

--2. 重启网络服务
[root@c1 ~]# systemctl restart network
或者
[root@c1 ~]# service network restart

--3. 修改主机名(如果修改过,请略过这一步)
[root@localhost ~]# hostnamectl set-hostname c1
或者
[root@localhost ~]# vi /etc/hostname
c1

1.3.3 配置/etc/hosts文件

[root@c1 ~]#  vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.10.101 c1  #添加本机的静态IP和本机的主机名之间的映射关系 
192.168.10.102 c2
192.168.10.103 c3

1.3.4 免密登录认证

-1. 使用rsa加密技术,生成公钥和私钥。一路回车即可
[root@c1 ~]# cd ~
[root@c1 ~]# ssh-keygen -t rsa	

-2. 进入~/.ssh目录下,使用ssh-copy-id命令
[root@c1 ~]# cd ~/.ssh			
[root@c1 .ssh]# ssh-copy-id  root@c1

-3. 进行验证	
[hadoop@c1 .ssh]# ssh c1
#下面的第一次执行时输入yes后,不提示输入密码就对了
[hadoop@c1 .ssh]# ssh localhost
[hadoop@c1 .ssh]# ssh 0.0.0.0

注意:三台机器提前安装好的情况下,需要同步公钥文件。如果使用克隆技术。那么使用同一套密钥对就方便多了。

在这里插入图片描述

1.3.5 时间同步

# 1 选择集群中的某一台机器作为时间服务器,例如c1
# 2 保证这台服务器安装了ntp.x86_64。
# 3 保证ntpd 服务运行......
[root@c1 ~]# sudo service ntpd start
# 	开机自启动:
[root@c1 ~]# chkconfig ntpd on
	
# 4 配置相应文件:
[root@c1 ~]# vi /etc/ntp.conf
	
	# Hosts on local network are less restricted.
	# restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
  # 添加集群中的网络段位
	restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap

	# Use public servers from the pool.ntp.org project.
	# Please consider joining the pool (http://www.pool.ntp.org/join.html).
	# server 0.centos.pool.ntp.org iburst    注释掉
	# server 1.centos.pool.ntp.org iburst	   注释掉
	# server 2.centos.pool.ntp.org iburst    注释掉
	# server 3.centos.pool.ntp.org iburst    注释掉
	server 127.127.1.0     -master作为服务器
# 5 其他机器要保证安装ntpdate.x86_64

# 6 其他机器要使用root定义定时器
*/1 * * * * /usr/sbin/ntpdate -u c1 

1.3.6 Hadoop安装与环境变量配置

# 1. 上传和解压两个软件包
[root@c1 ~]# tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local/
[root@c1 ~]# tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local/

# 2. 进入local里,给两个软件更名
[root@c1 ~]# cd /usr/local/
[root@c1 local]# mv 1.8.0_221/  jdk
[root@c1 local]# mv hadoop-2.7.6/ hadoop

# 3. 配置环境变量
[hadoop@c1 local]# vi /etc/profile

.....省略...........

#java environment
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

#hadoop environment
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

1.4. Hadoop的配置文件

1.4.1. 概述

我们需要通过配置若干配置文件,来实现Hadoop集群的配置信息
(这里Hadoop2.x和3.x配置信息略有不同,本文主要以2.x为主)。需要配置的文件有:

hadoop-env.sh
yarn-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml

在Hadoop安装完成后,会在$HADOOP_HOME/share路径下,有若干个*-default.xml文件,
这些文件中记录了默认的配置信息。同时,在代码中,我们也可以设置Hadoop的配置信息。
这些位置配置的Hadoop,优先级为: 代码设置 > *-site.xml > *-default.xml
集群规划:
+--------------+---------------------+
|     Node     | Applications        |
+--------------+---------------------+
|  c1  | NameNode            |
|              | DataNode            |
|              | ResourceManager     |
|              | NodeManagere        |
+--------------+---------------------+
|  c2  | SecondaryNameNode   |
|              | DataNode            |
|              | NodeManager         |
+--------------+---------------------+
|  c3  | DataNode            |
|              | NodeManager         |
+--------------+---------------------+

1.4.2. core-site.xml

[root@c1 ~]# cd $HADOOP_HOME/etc/hadoop
[root@c1 hadoop]# vi core-site.xml
<configuration>
    <!-- hdfs的地址名称:schame,ip,port-->
    <!-- 在Hadoop1.x的版本中,默认使用的端口是9000。
    在Hadoop2.x的版本中,默认使用端口是8020 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://c1:8020</value>
    </property>
    <!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>
</configuration>

1.4.3. hdfs-site.xml

[root@c1 hadoop]# vi hdfs-site.xml
<configuration>
    <!-- namenode守护进程管理的元数据文件fsimage存储的位置-->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file://${hadoop.tmp.dir}/dfs/name</value>
    </property>
    <!-- 确定DFS数据节点应该将其块存储在本地文件系统的何处-->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file://${hadoop.tmp.dir}/dfs/data</value>
    </property>
    <!-- 块的副本数-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!-- 块的大小(128M),下面的单位是字节-->
    <property>
        <name>dfs.blocksize</name>
        <value>134217728</value>
    </property>
    <!-- secondarynamenode守护进程的http地址:主机名和端口号。参考守护进程布局-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>c2:50090</value>
    </property>
  	<!-- namenode守护进程的http地址:主机名和端口号。参考守护进程布局-->
	<property>
  	  <name>dfs.namenode.http-address</name>
  	  <value>c1:50070</value>
	</property>  
</configuration>

1.4.4. mapred-site.xml

[root@c1 hadoop]# cp mapred-site.xml.template  mapred-site.xml
[root@c1 hadoop]# vi mapred-site.xml
<configuration>
    <!-- 指定mapreduce使用yarn资源管理器-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- 配置作业历史服务器的地址-->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>c1:10020</value>
    </property>
    <!-- 配置作业历史服务器的http地址-->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>c1:19888</value>
    </property>
</configuration>

1.4.5 yarn-site.xml

[root@c1 hadoop]# vi yarn-site.xml
<configuration>
    <!-- 指定yarn的shuffle技术-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定resourcemanager的主机名-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>c1</value>
    </property> 
    <!--下面的可选-->
    <!--指定shuffle对应的类 -->
	<property> 
	<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
     <value>org.apache.hadoop.mapred.ShuffleHandler</value> 
	</property>

	<!--配置resourcemanager的内部通讯地址-->
	<property>
	<name>yarn.resourcemanager.address</name>
	<value>c1:8032</value>
	</property>

	<!--配置resourcemanager的scheduler的内部通讯地址-->
	<property>
	<name>yarn.resourcemanager.scheduler.address</name>
	<value>c1:8030</value>
	</property>

	<!--配置resoucemanager的资源调度的内部通讯地址-->
	<property>
	<name>yarn.resourcemanager.resource-tracker.address</name>
	<value>c1:8031</value>
	</property>

	<!--配置resourcemanager的管理员的内部通讯地址-->
	<property>
	<name>yarn.resourcemanager.admin.address</name>
	<value>c1:8033</value>
	</property>

	<!--配置resourcemanager的web ui 的监控页面-->
	<property>
	<name>yarn.resourcemanager.webapp.address</name>
	<value>c1:8088</value>
	</property>
</configuration>

1.4.6 hadoop-env.sh

[root@c1 hadoop]# vi hadoop-env.sh
# The java implementation to use.
export JAVA_HOME=/usr/local/jdk

1.4.7 yarn-env.sh

[root@c1 hadoop]# vi yarn-env.sh
# some Java parameters
export JAVA_HOME=/usr/local/jdk
if [ "$JAVA_HOME" != "" ]; then
  #echo "run java in $JAVA_HOME"
  JAVA_HOME=$JAVA_HOME
fi

1.4.8 slaves

此文件用于指定datanode守护进程所在的机器节点主机名 ,3.x中是workers,配置不一样

[root@c1 hadoop]# vi slaves
c1
c2
c3

在这里插入图片描述

1.4.9 分发到另外两台节点

# 同步Hadoop到另外两台节点
[root@c1 ~]# cd /usr/local
[root@c2 local]# scp -r hadoop c2:$PWD
[root@c2 local]# scp -r hadoop c3:$PWD

# 同步profile到另外两台节点
[root@c1 ~]# scp /etc/profile c2:/etc
[root@c1 ~]# scp /etc/profile c3:/etc

# 检查slave节点上的jdk是否已安装
# 检查是否同步了/etc/hosts文件

1.5 格式化与启动

1.5.1 格式化集群

**1)**在c1机器上运行命令

[root@c1 ~]# hdfs namenode -format

**2)**格式化的相关信息解读

--1. 生成一个集群唯一标识符:clusterid
--2. 生成一个块池唯一标识符:blockPoolId
--3. 生成namenode进程管理内容(fsimage)的存储路径:
	默认配置文件属性hadoop.tmp.dir指定的路径下生成dfs/name目录
--4. 生成镜像文件fsimage,记录分布式文件系统根路径的元数据

--5. 其他信息都可以查看一下,比如块的副本数,集群的fsOwner等。

参考图片:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MHpY7J4z-1666016135908)(Hadoop.assets/image-20210401104441770.png)]

1.5.2 启动集群

1) 启动脚本和关闭脚本介绍

1. 启动脚本
	-- start-dfs.sh			:用于启动hdfs集群的脚本
	-- start-yarn.sh		:用于启动yarn守护进程
	-- start-all.sh			:用于启动hdfs和yarn
2. 关闭脚本
	-- stop-dfs.sh			:用于关闭hdfs集群的脚本
	-- stop-yarn.sh			:用于关闭yarn守护进程
	-- stop-all.sh			:用于关闭hdfs和yarn
3. 单个守护进程脚本
	-- hadoop-daemons.sh	:用于单独启动或关闭hdfs的某一个守护进程的脚本
	-- hadoop-daemon.sh		:用于单独启动或关闭hdfs的某一个守护进程的脚本
	reg:
		hadoop-daemon.sh [start|stop] [namenode|datanode|secondarynamenode]
	
	-- yarn-daemons.sh	:用于单独启动或关闭hdfs的某一个守护进程的脚本
	-- yarn-daemon.sh		:用于单独启动或关闭hdfs的某一个守护进程的脚本
	reg:
		yarn-daemon.sh [start|stop] [resourcemanager|nodemanager]

**2) ** 启动HDFS

使用start-dfs.sh,启动 hdfs。

启动过程解析:

- 启动集群中的各个机器节点上的分布式文件系统的守护进程
  一个namenode和resourcemanager以及secondarynamenode
  多个datanode和nodemanager
- 在namenode守护进程管理内容的目录下生成edit日志文件
- 在每个datanode所在节点下生成${hadoop.tmp.dir}/dfs/data目录,参考下图:
注意!
如果哪台机器的相关守护进程没有开启,那么,就查看哪台机器上的守护进程对应的日志log文件,
注意,启动脚本运行时提醒的日志后缀是*.out,而我们查看的是*.log文件。
此文件的位置:${HADOOP_HOME}/logs/里

3) jps查看进程

--1. 在c1上运行jps指令,会有如下进程
	namenode
	datanode
--2. 在c2上运行jps指令,会有如下进程
	secondarynamenode
	datanode
--3. 在c3上运行jps指令,会有如下进程
	datanode   

**4) **启动yarn

使用start-yarn.sh脚本。

jps查看

--1. 在c1上运行jps指令,会多出有如下进程
	resoucemanager
	nodemanager
--2. 在c2上运行jps指令,会多出有如下进程
	nodemanager
--3. 在c3上运行jps指令,会多出有如下进程
	nodemanager 

5) webui查看

HDFS: http://192.168.10.101:50070
YARN: http://192.168.10.101:8088

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

第二章 HDFS的Shell命令

在这里插入图片描述

在这里插入图片描述

HDFS其实就是一个分布式的文件系统,我们可以使用一些命令来操作这个分布式文件系统上的文件。
- 访问HDFS的命令:
  hadoop dfs --- 已过时
  替换为 --- hdfs dfs
  
- 小技巧
  1. 在命令行中输入hdfs,回车后,就会提示hdfs后可以使用哪些命令,其中有一个是dfs。
  2. 在命令行中输入hdfs dfs,回车后,就会提示dfs后可以添加的一些常用shell命令。
  
- 注意事项
  分布式文件系统的路径在命令行中,要从/开始写,即绝对路径。

2.1 创建目录

[-mkdir [-p] <path> ...]	#在分布式文件系统上创建目录  -p,多层级创建

调用格式: hdfs dfs -mkdir (-p)  /目录
例如: 
    - hdfs dfs -mkdir /data
    - hdfs dfs -mkdir -p /data/a/b/c

2.2 上传指令

[-put [-f] [-p] [-l] <localsrc> ... <dst>]   #将本地文件系统的文件上传到分布式文件系统

调用格式:hdfs dfs -put /本地文件  /分布式文件系统路径
注意: 直接写/是省略了文件系统的名称hdfs://ip:port。
例如:
    - hdfs dfs -put /root/a.txt /data/
    - hdfs dfs -put /root/logs/* /data/

其他指令:
    [-moveFromLocal <localsrc> ... <dst>]	#将本地文件系统的文件上传到分布式文件系统
    [-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]

2.3 创建空文件

hdfs dfs [generic options] -touchz <path> ...   
调用格式:hdfs dfs touchz  /hadooptest.txt

2.4 向分布式文件系统中的文件里追加内容

[-appendToFile <localsrc> ... <dst>]
调用格式:hdfs dfs -appendToFile  本地文件     hdfs上的文件
注意:不支持在中间随意增删改操作

2.5 查看指令

[-ls [-d] [-h] [-R] [<path> ...]]		#查看分布式文件系统的目录里内容
调用格式:hdfs dfs -ls /

[-cat [-ignoreCrc] <src> ...]	    	#查看分布式文件系统的文件内容	
调用格式:hdfs dfs -cat /xxx.txt

[-tail [-f] <file>]						#查看分布式文件系统的文件内容	
调用格式:hdfs dfs -tail /xxx.txt
注意:默认最多查看1000行

2.6 下载指令

[-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
注意:本地路径的文件夹可以不存在

[-moveToLocal <src> <localdst>]
注意:从hdfs的某个路径将数据剪切到本地,已经被遗弃了

[-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]	
调用格式:同copyToLocal

2.7 合并下载

hdfs dfs [generic options] -getmerge [-nl] <src> <localdst>
调用格式:hdfs dfs -getmerge  hdfs上面的路径   本地的路径    
实例:hdfs dfs -getmerge /hadoopdata/*.xml /root/test.test

2.8 移动hdfs中的文件(更名)

hdfs dfds [generic options] -mv <src> ... <dst>   
调用格式:hdfs dfs -mv /hdfs的路径1  /hdfs的另一个路径2    
实例:hfds dfs -mv /aaa   /bbb  这里是将aaa整体移动到bbb中

2.9 复制hdfs中的文件到hdfs的另一个目录

hdfs dfs [generic options] -cp [-f] [-p | -p[topax]] <src> ... <dst>
调用格式:hdfs dfs -cp /hdfs路径_1  /hdfs路径_2

2.10 删除命令

[-rm [-f] [-r|-R] [-skipTrash] <src> ...]
注意:如果删除文件夹需要加-r

[-rmdir [--ignore-fail-on-non-empty] <dir> ...]
注意:必须是空文件夹,如果非空必须使用rm删除

2.11 查看磁盘利用率和文件大小

[-df [-h] [<path> ...]] 查看分布式系统的磁盘使用情况
[-du [-s] [-h] <path> ...]	#查看分布式系统上当前路径下文件的情况	-h:human 以人类可读的方式显示

2.12 修改权限的

跟本地的操作一致,-R是让子目录或文件也进行相应的修改
[-chgrp [-R] GROUP PATH...]
[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]

2.13 修改文件的副本数

[-setrep [-R] [-w] <rep> <path> ...]
调用格式:hadoop fs -setrep  3 /   将hdfs根目录及子目录下的内容设置成3个副本
注意:当设置的副本数量与初始化时默认的副本数量不一致时,集群会作出反应,比原来多了会自动进行复制.

2.14 查看文件的状态

hdfs dfs [generic options] -stat [format] <path> ...
命令的作用:当向hdfs上写文件时,可以通过dfs.blocksize配置项来设置文件的block的大小。这就导致了hdfs上的不同的文件block的大小是不相同的。有时候想知道hdfs上某个文件的block大小,可以预先估算一下计算的task的个数。stat的意义:可以查看文件的一些属性。
调用格式:hdfs dfs -stat [format] 文件路径
format的形式:
%b:打印文件的大小(目录大小为0)
%n:打印文件名
%o:打印block的size
%r:打印副本数
%y:utc时间 yyyy-MM-dd HH:mm:ss
%Y:打印自1970年1月1日以来的utc的微秒数
%F:目录打印directory,文件打印regular file

注意:
1)当使用-stat命令但不指定format时,只打印创建时间,相当于%y
2)-stat 后面只跟目录,%r,%o等打印的都是0,只有文件才有副本和大小

2.15 测试

hdfs dfs [generic options] -test -[defsz] <path>    
参数说明: -e:文件是否存在  存在返回0    -z:文件是否为空  为空返回0   -d:是否是路径(目录) ,是返回0
调用格式:hdfs dfs -test -d 文件 
实例:hdfs dfs -test -d /shelldata/111.txt  && echo "OK"  || echo "no"
解释:测试当前的内容是否是文件夹 ,如果是返回ok,如果不是返回no

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

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

相关文章

持续集成下接口自动化测试实践

目录&#xff1a;导读 引言 接口自动化测试工具介绍 接口自动化测试在持续集成中的运用 小结 引言 目前很多持续集成项目都需要执行接口层的测试&#xff0c;当你了解其基本概念&#xff0c;理解了接口协议、如何传参、测试原理后&#xff0c;无需 掌握程序语言&#xff0…

【MySQL高级】——目录结构数据库和文件系统的关系

一、目录结构 <1> 主要目录结构 find / -name mysql<2> 数据库文件目录 目录&#xff1a;/var/lib/mysql/ 配置方式&#xff1a;show variables like ‘datadir’; <3> 相关命令目录 目录&#xff1a;/usr/bin&#xff08;mysqladmin、mysqlbinlog、my…

软件著作权申请流程待发放多久就能到已发放拿到纸质证书?

软件著作权申请一般有两种途径 1、代理 代理机构有加急通道&#xff0c;软件著作权交件后最快20-30工作日内出&#xff0c;待发放到已发放只要3工作日拿到就可以邮寄纸质证书给你了。 2、版权中心官网自己登记 流程比较缓慢&#xff0c;而且最要命的是&#xff0c;证书是用邮…

数据划分方法简述:数据离散化和均值标准差分级法(含python代码)

文章目录 1 问题缘起2. 数据离散化等距离散等频离散聚类离散其他 3. 均值标准差分级 1 问题缘起 在数学建模中&#xff0c;我经常遇到这样一个问题&#xff1a; 在某一步中&#xff0c;需要把数据分成好几个类别或者是按照数据大小分级划分。 放到一维数据中形象一点解释就是…

InstructGPT原理讲解及ChatGPT类开源项目

InstructGPT原理讲解及ChatGPT类开源项目 Generative Pre-Trained Transformer&#xff08;GPT&#xff09; 是OpenAI的提出的生成式预训练语言模型&#xff0c;目前已经发布了GPT-1、GPT-2、GPT-3和GPT-4&#xff0c;未来也将发布GPT-5。 最近非常火的ChatGPT是基于Instruct…

【ChatGPT】稳定性好响应速度快可部署到国内服务器的ChatGPT 强力推荐!

朋友们&#xff0c;大家好&#xff0c;我是 jonssonyan。今天分享一个免费开源的 ChatGPT 项目&#xff0c;它的表现无论是响应速度还是稳定性都比 ChatGPT Plus 还要优秀&#xff0c;只需要有个 Access Token 或者使用热心网友提供的共享账号 就可以免费在线体验&#xff0c;也…

Vicuna-13B量化模型单GPU可跑

链接在这&#xff08;需要科学上网&#xff09; Vicuna-13B: Best Free ChatGPT Alternative According to GPT-4 &#x1f92f; | Tutorial (GPU) 有人在B站转了人家的视频 ChatGPT&#xff1a;在你的本地电脑上运行Vicuna-13B &#x1f92f;|教程 (GPU) 下面就是部署的步骤…

023 - C++ 继承

本期我们学习 C 面向对象编程中的继承。 面向对象编程是一个巨大的编程范式&#xff0c;类之间的继承是它的一个基本面&#xff0c;它是我们可以实际利用的最强大的特性之一。 先了解这些 继承允许我们有一个相互关联的类的层次结构。展开来说&#xff0c;它允许我们有一个包…

Ceph入门到精通-Ceph介绍及放置规范

2.cephadm介绍 2.1cephadm介绍 Cephadm 是随着 Ceph 新版本 v15.2.0(Octopus)发布的安装工具&#xff0c;并且不支持 Ceph的旧版本&#xff0c;Ceph中已经Cephadm 不依赖于外部配置工具&#xff0c;如 Ansible、 Rook 和 Salt&#xff0c;它通过 SSH 将管理器守护进程连接到主机…

通信中间件

通信中间件需要解决什么问题 分布式系统中两个不同的系统需要进行通信的时候&#xff0c;使用的是scocket编程&#xff0c;需要直接面对网络中的四层模型&#xff0c;编程时需要确定目标端的详细物理地址。这是非常不方便的。为了解决这个问题&#xff0c;需要通信中间件来屏蔽…

Linux系统编程学习 NO.1 ——操作系统的历史发展

什么是操作系统&#xff1f; 首先&#xff0c;需要明白一个概念操作系统的本质是系统软件&#xff0c;我们平时在电脑上的界面就是一种图形化的操作系统界面。界面上通常安装可执行应用程序如QQ&#xff0c;wps等等&#xff0c;这些应用程序被称为应用软件。大家买的电脑其实是…

【Java实战篇】Day14.在线教育网课平台--消息队列实现异步通知

文章目录 一、需求&#xff1a;支付通知1、需求分析2、技术方案3、集成RabbitMQ4、生产端发送消息5、消费方发送消息 二、需求&#xff1a;在线学习1、需求分析2、表设计与实体类3、接口定义--查询课程4、接口定义获取视频5、Service层开发6、FeignClient定义7、代码完善 三、需…

HOG+SVM分类器实践

文章目录 HOGSVM分类器实践制作SVM分类器导入所需的库提取HOG特征读取正样本和负样本训练分类器定义主函数小结 测试SVM分类器相关疑问1. 提取HOG特征为什么不能彩色图像呢&#xff1f;2. 出现如下错误3. 测试代码中&#xff0c;当我传入100*100的图片时候&#xff0c;为什么im…

Linux下安装Java8环境

查看主机是否已经安装Java环境 java -version 如下图所示&#xff0c;未找到java命令&#xff0c;则需要安装Java环境 JDK官网下载&#xff1a; https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html 根据自己系统的位数下载相应版本…

基于Dokcer安装RabbitMQ

基于Dokcer安装RabbitMQ 一、RabbitMQ介绍 1.1 现存问题 服务调用&#xff1a;两个服务调用时&#xff0c;我们可以通过传统的HTTP方式&#xff0c;让服务A直接去调用服务B的接口&#xff0c;但是这种方式是同步的方式&#xff0c;虽然可以采用SpringBoot提供的Async注解实现…

第6章:集合

集合简介 一种无序且唯一的数据结构。不关心顺序&#xff0c;集合里面的元素都是唯一的。 栈&#xff0c;队列&#xff0c;链表他们里面都有可能出现重复的数据&#xff0c;但是集合里面的元素是唯一的。 栈&#xff0c;队列&#xff0c;链表它们都有自己的顺序&#xff0c;但是…

使用媒体查询实现移动端适配,媒体查询meta标签配置(@media screen and,min-width和max-width)

简述&#xff1a;我们在写网站的时候&#xff0c;难免会遇到需要做移动端适配的需求&#xff0c;今天来记录下使用媒体查询实现移动端的适配。媒体查询是一种CSS技术&#xff0c;可以根据设备屏幕的属性&#xff08;如宽度、高度、方向和分辨率&#xff09;选择应用特定样式&am…

火爆全网,JMeter接口自动化测试详细实战(超详细)吐血整理...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 JMeter接口自动化测…

深度学习 - 44.Gate 与 MMOE 实现多目标学习

目录 一.引言 二.摘要 Abstract 三.介绍 Introduction 四.相关工作 RELATED WORK 1.DNN 中的多任务学习 2.SubNet 集成与 Expert 混合 3.多任务学习应用 五.建模方法 MODELING APPROACHES 1.Shared-bottom Multi-task Model 2.Mixture-of-Experts 3.Multi-gate Mixt…

NOPI用法之自定义单元格背景色(3)

NPOI针对office2003使用HSSFWorkbook&#xff0c;对于offce2007及以上使用XSSFWorkbook&#xff1b;今天我以HSSFWorkbook自定义颜色为例说明&#xff0c;Office2007的未研究呢 在NPOI中默认的颜色类是HSSFColor&#xff0c;它内置的颜色有几十种供我们选择&#xff0c;如果不…