Hadoop集群部署

目录

1 模板虚拟机环境准备

1.1 修改网卡配置文件

扩展

1.2 修改主机名

1.3 在虚拟机中需要的基础文件包

1.4 关闭防火墙

1.5 创建Hadoop的账户及文件

2 模板虚拟机安装JDK

3 模板虚拟机安装Hadoop

4 克隆虚拟机

5 虚拟机配置主机名称映射

6 集群分发脚本

7 SSH无密登陆配置

8 Hadoop集群配置

8.1 集群部署规划

8.2 修改配置文件

8.2.1 核心配置文件配置

8.2.2 HDFS配置文件配置

8.2.3 YARN配置文件配置

8.2.4  MapReduce配置文件配置

8.2.5 集群分发配置文件

8.3 配置workers

8.4 配置集群启停脚本

8.4.1 集群第一次启动前操作

8.4.2 集群启停脚本

9 集群基本测试

9.1 上传文件到集群

9.2 查看是否上传成功

9.2.1 通过命令查看

9.2.2 查看HDFS服务器磁盘存储的文件

9.3 本地测试官方案例WordCount

9.3.1 查看运行结果

10 集群时间同步

10.1 时间服务器配置

10.2 其他服务器配置


1 模板虚拟机环境准备

本案例中模板虚拟机的Linux用CentOS-7.5-x86-1804,IP地址固定为192.168.243.100,主机名设置为hadoop100, 内存为4G。

1.1 修改网卡配置文件

修改网络IP地址为静态IP地址,避免IP地址经常变化,从而方便服务器间的通信。

[root@hadoop100 ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33

内容修改:

#网络类型(通常是Ethemet)

TYPE=Ethernet 
PROXY_METHOD=none
BROWSER_ONLY=no
 #IP的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议),这里启用静态IP
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33 
UUID=e83804c1-3257-4584-81bb-660665ac22f6   

#接口名(设备,网卡)
DEVICE=ens33   
 # 系统启动的时候网络接口是否有效(yes/no),ping不通的时候需要设置为yes
ONBOOT=yes
# 个人配置的静态IP地址,跟网关同个网段即可
IPADDR=192.168.243.100
# 配置网关,用于虚拟机需要与外围通信(网关IP具体值看扩展1)
GATEWAY=192.168.243.8
# 域名解析器:DNS值与GATEWAY的值配置一样即可
DNS1=192.168.10.243.8

修改完成后,保存并退出::wq

扩展

(1)查看网关地址

在VMware虚拟机上查看服务器的网关地址,点左上角的【编辑】-->【虚拟网络编辑器】-->【VMnet8】-->【NAT设置】-->【网关IP】,即可获取网关IP地址。

 VMware中的NAT设置中的网关IP为192.168.243.8,第三个位置中的十进制数表示网段,所以VMware给Linux虚拟机分配的IP在243网段。

(2)修改本机上的虚拟网卡

快捷键Win+R,输入control,打开控制面板,在网络和Internet中找到VM8网卡,右击选择属性,选中Internet协议4,在选择属性,设置对应的IP地址。

1、IP地址本地配置和虚拟机IP地址在同一个网段才能正常通信,虚拟机是在243网段,这里IP地址范围为192.168.243.1到192.168.243.255,可以配置其中任意一个IP,这里配置的是192.168.243.15。

2、子网掩码:与虚拟机中的子网掩码保持一致即可

3、默认网关:与虚拟机的网关IP一致。

(3)重启网卡,配置即可生效

[root@hadoop100 ~]#service network restart

1.2 修改主机名

[root@hadoop100 ~]# vim /etc/hostname

hadoop100

重启虚拟机hadoop100,主机名即可生效。(可不重启网卡,直接修改主机名后,重启虚拟机,所有配置均可生效)

 [root@hadoop100 ~]# reboot

1.3 在虚拟机中需要的基础文件包

 安装epel-release

 [root@hadoop100 ~]# yum install -y epel-release

安装 net-tool:工具包集合,包含ifconfig等命令

[root@hadoop100 ~]# yum install -y net-tools

安装 vim:编辑器

[root@hadoop100 ~]# yum install -y vim

1.4 关闭防火墙

关闭防火墙

[root@hadoop100 ~]# systemctl stop firewalld

关闭防火墙开机自启

[root@hadoop100 ~]# systemctl disable firewalld.service

注意:企业开发是,通常单个服务器防火墙是关闭的,整体对外会设置非常安全的防火墙。

1.5 创建Hadoop的账户及文件

(1)创建hadoop用户,并修改用户的密码

[root@hadoop100 ~]# useradd hadoop
[root@hadoop100 ~]# passwd hadoop

(2)配置hadoop用户具有root权限,方便后期加sudo执行root权限的命令

 [root@hadoop100 ~]# vim /etc/sudoers

修改/etc/sudoers文件,在%wheel这行下面添加一行,如下所示:

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL

## Allows people in group wheel to run all commands
%wheel        ALL=(ALL)       ALL
hadoop       ALL=(ALL)         NOPASSWD:ALL

hadoop用户不能放在root下面,由于所以用户都属于wheel组,如果先配置了hadoop用户功能,当程序执行到%wheel时,功能会被覆盖回原样。所以得放在%wheel这行下面。

(3)切换为hadoop用户,在/opt目录下创建文件夹

[root@hadoop100 ~]# su hadoop
[hadoop@hadoop100 ~]# mkdir /opt/module
[hadoop@hadoop100 ~]# mkdir /opt/software

注意:如果在root用户下,创建的文件夹,则需要修改所属主和所属组

[hadoop@hadoop100 ~]# chown hadoop:hadoop/opt/module
[hadoop@hadoop100 ~]# chown hadoop:hadoop/opt/software

查看文件下的所属组

[hadoop@hadoop100 ~]$ ll /opt

总用量 4
drwxr-xr-x. 4 hadoop hadoop   46 11月 26 17:09 module
drwxr-xr-x. 2 hadoop hadoop   67 11月 21 16:44 software

2 模板虚拟机安装JDK

Linux环境安装JDKicon-default.png?t=N7T8https://blog.csdn.net/qq_39512532/article/details/135133353

3 模板虚拟机安装Hadoop

Linux环境安装Hadoopicon-default.png?t=N7T8https://blog.csdn.net/qq_39512532/article/details/135134503?spm=1001.2014.3001.5501

4 克隆虚拟机

根据模板虚拟机克隆两台虚拟机hadoop101、hadoop102。

VMware克隆虚拟机icon-default.png?t=N7T8https://blog.csdn.net/qq_39512532/article/details/135135585?spm=1001.2014.3001.5501

5 虚拟机配置主机名称映射

每台虚拟机都需配置主机名称映射hosts文件。

[root@hadoop100 ~]# vim /etc/hosts

添加下面内容

192.168.243.100 hadoop100
192.168.243.101 hadoop101
192.168.243.102 hadoop102

6 集群分发脚本

集群分发脚本icon-default.png?t=N7T8https://blog.csdn.net/qq_39512532/article/details/135138861?spm=1001.2014.3001.5501

7 SSH无密登陆配置

SSH无密登陆配置icon-default.png?t=N7T8https://blog.csdn.net/qq_39512532/article/details/135139292?spm=1001.2014.3001.5502

8 Hadoop集群配置

8.1 集群部署规划

(1)目前3台服务器的集群部署配置如下:

注意:

  • NameNode和SecondaryNameNode不要安装在同一台服务器
  • ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。

(2)集群中需要修改的配置文件

(3)Hadoop相关的访问地址(在浏览器中访问相关页面)

作用访问地址
查看HDFS上存储的数据信息http://hadoop102:9870
查看YARN上运行的Job信息http://hadoop103:8088
查看历史服务器http://hadoop102:19888/jobhistory

扩展:

通过域名访问地址,则需要在本电脑上修改windows的主机映射文件(hosts文件)。

进入C:\Windows\System32\drivers\etc路径,在hosts文件下添加下面内容:

192.168.243.100 hadoop100
192.168.243.101 hadoop101
192.168.243.102 hadoop102

8.2 修改配置文件

8.2.1 核心配置文件配置

[hadoop@hadoop100 .ssh]$ cd $HADOOP_HOME/etc/hadoop
[hadoop@hadoop100 hadoop]$ vim 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>
        <!-- 指定NameNode的地址 -->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop100:8020</value>
        </property>

        <!-- 指定 hadoop 数据的存储目录,/data是新建的 -->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/module/hadoop-3.1.3/data</value>
        </property>

        <!-- 配置 HDFS 网页登录使用的静态用户为 hadoop -->
        <property>
                <name>hadoop.http.staticuser.user</name>
                <value>hadoop</value>
        </property>
</configuration>

8.2.2 HDFS配置文件配置

[hadoop@hadoop100 hadoop]$ vim hdfs-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <!-- nn web 端访问地址-->
        <property>
                <name>dfs.namenode.http-address</name>
                <value>hadoop100:9870</value>
        </property>

        <!-- 2nn web 端访问地址-->
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop102:9868</value>
        </property>
</configuration>

8.2.3 YARN配置文件配置

[hadoop@hadoop100 hadoop]$ vim yarn-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <!-- 指定 MR 走 shuffle -->
         <property>
                 <name>yarn.nodemanager.aux-services</name>
                 <value>mapreduce_shuffle</value>
        </property>

        <!-- 指定 ResourceManager 的地址-->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop101</value>
        </property>

         <!-- 环境变量的继承 -->
        <property>
                <name>yarn.nodemanager.env-whitelist</name>
                <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
                </value>
         </property>


        <!-- 开启日志聚集功能:方便的查看到程序运行详情,方便开发调试-->
        <property>
                <name>yarn.log-aggregation-enable</name>
                <value>true</value>
        </property>
        <!-- 设置日志聚集服务器地址 -->
        <property>
                <name>yarn.log.server.url</name>
                <value>http://hadoop100:19888/jobhistory/logs</value>
        </property>
        <!-- 设置日志保留时间为 7 天 -->
        <property>
                <name>yarn.log-aggregation.retain-seconds</name>
                <value>604800</value>
        </property>
</configuration>

8.2.4  MapReduce配置文件配置

[hadoop@hadoop100 hadoop]$ vim mapred-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <!-- 指定 MapReduce 程序运行在 Yarn 上 -->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
		

        <!-- 历史服务器端地址 -->
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>hadoop100:10020</value>
        </property>
        <!-- 历史服务器 web 端地址 -->
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>hadoop100:19888</value>
        </property>


        <!--配置mapreduce加载的路径-->
        <property>
                <name>yarn.app.mapreduce.am.env</name>
                <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
        </property>
        <property>
                <name>mapreduce.map.env</name>
                <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
        </property>
        <property>
                <name>mapreduce.reduce.env</name>
                <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
        </property>
</configuration>

8.2.5 集群分发配置文件

在集群上分发配置好的Hadoop配置文件,然后去其他两台服务器上看是否分发成功。

8.3 配置workers

通过workers文件定义集群的数据节点:

 [hadoop@hadoop100 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

在该文件中增加如下内容:(注意不需有空格、空行)

hadoop100
hadoop101
hadoop102

同步该配置文件到所有节点:

[hadoop@hadoop100 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc

8.4 配置集群启停脚本

8.4.1 集群第一次启动前操作

NameNode节点是部署到hadoop100服务器上,在第一次启动集群前,需要在hadoop100节点上格式化NameNode。

[hadoop@hadoop100 hadoop-3.1.3]$ hdfs namenode -format

注意:

1、格式化NameNode会产生新的集群ID,导致NameNode和DataNode的集群id不一致,集群找不到之前的数据。

2、如果集群在运行过程中报错需重新格式化NameNode之前,先停掉NameNode和DataNode两个进程,并删除所有机器的data和logs目录,然后再重新格式化。

8.4.2 集群启停脚本

需求:通过脚本快速启停Hadoop的hdfs、yarn、historyserver服务

脚本命令:xhadoop start/stop

(1)在/bin目录下创建xsync文件,以便全局调用

 [hadoop@hadoop100 ~]$ cd bin
 [hadoop@hadoop100 bin]$ vim xhadoop

主要根据之前的集群规划来对服务进行启停操作:

在该文件下编写如下代码:

#!/bin/bash
if [ $# -lt 1 ]
then
        echo "No Args Input..."
        exit ;
fi

case $1 in
"start")
        echo " =================== 启动 hadoop 集群 ==================="
        echo " --------------- 启动 hdfs ---------------"
        ssh hadoop100 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
        echo " --------------- 启动 historyserver ---------------"
        ssh hadoop100 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;

"stop")
        echo " =================== 关闭 hadoop 集群 ==================="
        echo " --------------- 关闭 historyserver ---------------"
        ssh hadoop100 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop100 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
        echo "Input Args Error..."
;;
esac

保存后退出::wq

(2)修改脚本xhadoop具有执行权限

[hadoop@hadoop100 bin]$ chmod +x xhadoop

(3)集群启停操作

启动集群:

停止集群:

(4)查看三个节点任务启动状态

(5)同步集群启停脚本到别的节点

[hadoop@hadoop100 bin]$ xsync /bin/xhadoop

扩展:

(1)整体启动 / 停止HDFS

        start-dfs.sh/stop-dfs.sh

(2)整体启动 / 停止YARN

        start-yarn.sh/stop-yarn.sh

(3)各个服务组件逐一启动/停止

        1)分别启动/停止HDFS组件

        hdfs --daemon start/stop namenode/datanode/secondarynamenode

        2)启动/停止YARN

        yarn --daemon start/stop resourcemanager/nodemanager

9 集群基本测试

9.1 上传文件到集群

(1)上传小文件

# 创建hdfs服务器上创建名称为input的文件夹
[hadoop@hadoop100 ~]$ hadoop fs -mkdir /input

# 上传word.txt文件到hdfs服务器的/input目录下
[hadoop@hadoop100 ~]$ hadoop fs -put $HADOOP_HOME/wcinput/word.txt /input

(2)上传大文件

# 上传jdk压缩包到hdfs服务器的/input目录下
[hadoop@hadoop100 ~]$ hadoop fs -put /opt/software/jdk-8u391-linux-x64.tar.gz /input

9.2 查看是否上传成功

9.2.1 通过命令查看

 (1)通过命令查看是否成功上传大小文件到hdfs服务器上

 (2)下载之前解压的/jdk-8u391-linux-x64.tar.gz

[hadoop@hadoop100 software]$ hadoop fs -get /jdk-8u212-linux-x64.tar.gz ./

9.2.2 查看HDFS服务器磁盘存储的文件

(1)上传文件后,查看hdfs文件的存储路径

[hadoop@hadoop100 subdir0]$ pwd
/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-1436128598-192.168.10.102-1610603650062/current/finalized/subdir0/subdir0

(2)小文件:直接查看磁盘中的存储文件

[hadoop@hadoop100 subdir0]$ cat blk_1073741825
hadoop yarn
hadoop mapreduce
coffce
coffce

(3)大文件:通过拼接磁盘中相关的文件才能获得完整的大文件(大文件上传时候会被切片)

-rw-rw-r--. 1 hadoop hadoop    134217728     12月 25  15:40 blk_1073741843
-rw-rw-r--. 1 hadoop hadoop    1048583         12月 25  15:40 blk_1073741843_1019.meta
-rw-rw-r--. 1 hadoop hadoop    7669514         12月 25  15:40 blk_1073741844
-rw-rw-r--. 1 hadoop hadoop    59927             12月 25  15:40 blk_1073741844_1020.meta

[hadoop@hadoop100 subdir0]$ cat blk_1073741843>>tmp.tar.gz
[hadoop@hadoop100 subdir0]$ cat blk_1073741844>>tmp.tar.gz
[hadoop@hadoop100 subdir0]$ tar -zxvf tmp.tar.gz

注意:拼接的时候大文件一定要按后缀的顺序正序拼接,否则该文件会出问题解压不了。

9.3 本地测试官方案例WordCount

[hadoop@hadoop100 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output

9.3.1 查看运行结果

(1)web端查看运行结果

(2)命令行查看运行结果

[hadoop@hadoop100 hadoop-3.1.3]$ hadoop fs -ls /output
Found 2 items
-rw-r--r--   3 hadoop supergroup          0 2023-11-26 18:58 /output/_SUCCESS
-rw-r--r--   3 hadoop supergroup         35 2023-11-26 18:58 /output/part-r-00000
[hadoop@hadoop100 hadoop-3.1.3]$ hadoop fs -cat /output/part-r-00000
2023-11-26 19:17:39,999 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
hadoop  2
mapreduce       1
test    2
yarn    1

(3)在历史服务器查看日志

10 集群时间同步

        如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,
导致集群执行任务时间不同步。
        这里以hadoop100作为时间服务器,其他服务器与这台集群时间进行定时同步。(这些配置必须用root用户操作。)

10.1 时间服务器配置

(1)查看ntpd 服务状态及开机自启动状态

# 查看ntpd服务的开启状态
[hadoop@hadoop100 ~]$ sudo systemctl status ntpd

# 启动ntpd服务
[hadoop@hadoop100 ~]$ sudo systemctl start ntpd

# 查看ntpd服务开机自启动的开启状态
[hadoop@hadoop100 ~]$ sudo systemctl is-enabled ntpd

(2)修改hadoop100的ntp.conf配置文件

[hadoop@hadoop100 ~]$ sudo vim /etc/ntp.conf
修改内容如下:

# 授权192.168.10.0-192.168.10.255网段所以机器都可以从这台机器上查询和同步时间(去掉注释
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap

# hadoop集群在局域网中,不使用其他互联网上的时间 (以下四条加上注释
#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
fudge 127.127.1.0 stratum 10

(3) 修改 hadoop100  /etc/sysconfig/ntpd 文件
[hadoop@hadoop100 ~]$ sudo vim /etc/sysconfig/ntpd
增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
(4) 重新启动 ntpd 服务
[hadoop@hadoop100 ~]$ sudo systemctl start ntpd

(5)设置 ntpd 服务开机启动

[hadoop@hadoop100 ~]$ sudo systemctl enable ntpd

10.2 其他服务器配置

1 )关 闭所有节点上 ntp 服 务和自启动
[hadoop@hadoop101 ~]$ sudo systemctl stop ntpd
[hadoop@hadoop101 ~]$ sudo systemctl disable ntpd
[hadoop@hadoop102 ~]$ sudo systemctl stop ntpd
[hadoop@hadoop102 ~]$ sudo systemctl disable ntpd
2 )在其他机器配置 1 分钟与时间服务器同步一次
[hadoop@hadoop101 ~]$ sudo crontab -e
编写定时任务如下:
*/1 * * * * /usr/sbin/ntpdate hadoop100
3 )修改任意机器时间
[hadoop@hadoop101 ~]$ sudo date -s "2021-12-12 12:12:12"
4 1 分钟后查看机器是否与时间服务器同步
[hadoop@hadoop101 ~]$ sudo date

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

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

相关文章

蓝牙物联网通信网络设计方案

随着当前经济的快速发展&#xff0c;社会运行节奏加快&#xff0c;人们更倾向于选择高效的出行方式&#xff0c;而飞机就是其中之一。近年来&#xff0c;全国各地机场的吞吐量不断增长&#xff0c;导致航站楼面积过大&#xff0c;而 GPS全球定位系统在室内感测不到卫星信号无法…

嵌入式单片机的存储区域与堆和栈

一、单片机存储区域 如图所示位STM32F103ZET6的参数&#xff1a; 单片机的ROM&#xff08;内部FLASH&#xff09;&#xff1a;512KB&#xff0c;用来存放程序代码的空间。 单片机的RAM&#xff1a;64KB&#xff0c;一般都被分配为堆、栈、变量等的空间。 二、堆和栈的概念 …

配置Nginx出现403 (Forbidden)静态文件加载不出来

出现问题如图 出现此问题可能和索引文件缺失、访问限制等原因有关&#xff0c;在默认的Nginx的配置中&#xff0c;出现此问题的大概率问题可能出现在启动用户和nginx工作用户不一致所致。 Nginx的默认配置文件的 nginx.conf 里首行是 user www-data; 如果你是在 root 下启用…

【数学建模美赛M奖速成系列】Matplotlib绘图技巧(一)

Matplotlib图像基础 写在前面1 基本绘图实例&#xff1a;sin、cos函数图2 plot()函数详解**kwargs参数&#xff1a; 3 matplotlib中绘图的默认配置4 设置图的横纵坐标的上下界5 设置横纵坐标上的记号6 调整图像的脊柱7 添加图例8 给一些特殊点加注释9 子图最后 写在前面 前面我…

云上安全责任共担模型

对于传统自建物理服务器模式&#xff0c;用户需要承担所有的安全责任&#xff0c;负责从物理基础设施到上层应用的所有层面的安全体系构建。 云服务器的安全责任确实与物理服务器不同&#xff0c;云上的安全性是一种责任共担模式&#xff0c;其中云服务器ECS的安全责任需要你&…

Qt/C++音视频开发61-多屏渲染/一个解码渲染到多个窗口/画面实时同步

一、前言 多屏渲染就是一个解码线程对应多个渲染界面&#xff0c;通过addrender这种方式添加多个绘制窗体&#xff0c;我们经常可以在展会或者卖电视机的地方可以看到很多电视播放的同一个画面&#xff0c;原理应该类似&#xff0c;一个地方负责打开解码播放&#xff0c;将画面…

颗粒物PM2.5在建筑室外环境的污染扩散传播CFD模拟仿真

颗粒物PM2.5在建筑室外环境的污染扩散传播CFD模拟仿真 一、引言 随着城市化进程的加速,室外环境中的颗粒物污染问题日益严重。颗粒物在建筑室外环境中的扩散传播受到多种因素的影响,如风速、湍流、建筑物布局等。计算流体动力学(CFD)模拟作为一种有效的预测工具,可以模拟…

深度学习(九):bert之代码实现

bert之代码实现 任务1: Masked LM任务2&#xff1a;下一句预测代码实现预训练模型模型数据集配置训练评估预测 结果 任务1: Masked LM 即随机屏蔽&#xff08;masking&#xff09;部分输入token&#xff0c;然后只预测那些被屏蔽的token。在模型中&#xff0c;随机地屏蔽了每个…

代码随想录算法训练营Day9 | 20.有效的括号、1047.删除字符串中的所有相邻重复项、150.逆波兰表达式求值

LeetCode 20 有效的括号 本题思路&#xff1a;利用栈来完成&#xff0c;如果遇到左括号类型就放入栈&#xff0c;如果遇到右括号类型&#xff0c;就弹出栈顶的元素和该元素进行匹配&#xff0c;如果不匹配就返回 false。 注意点&#xff1a; 第一个就是右括号类型&#xff0c;那…

SQL数据工程师面试题20231226

1、数据库知识: 表一:Stock(商品库存入库表) 商品编号 入库数量 描述 A 300 A B 400 B C 200 C 注: Stock 表的商品编号是唯一主键。 表二: OutStock(商品库存出库表) 商品编号 出库数量 描述 A 100 A B 40 B B 50 B 注: outStock 表同一个商品存在多次出库。 – 创建 Stoc…

2023开发原子开放者大会:AI时代的前端开发,挑战与机遇并存

前言 12月16日&#xff0c;以“一切为了开发者”为主题的开放原子开发者大会在江苏省无锡市开幕。江苏省工业和信息化厅厅长朱爱勋、中国开源软件推进联盟主席陆首群等领导和专家参加开幕式&#xff0c;工业和信息化部信息技术发展司副司长王威伟、江苏省工业和信息化厅副厅长…

【力扣题解】P589-N叉树的前序遍历-Java题解

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P589-N叉树的前序遍历&#x1f30f;题目描述&#x1f4a1;题解&#x1f30f;总结 【力…

张驰咨询:如何战胜实施精益生产培训的常见难题?

精益生产又称作“Lean Manufacturing”或“Lean Production”&#xff0c;它是一种强调消除生产过程中一切形式的浪费&#xff0c;注重流程优化以提升整体效能的管理哲学。源自丰田生产系统&#xff08;Toyota Production System&#xff09;&#xff0c;精益生产培训目标在于最…

Jenkins下载安装教程(Windows)

Jenkins下载安装教程&#xff08;Windows&#xff09; 1. 配置JDK 前置条件&#xff1a;必须先安装JDK : JDK安装教程&#xff08;Windows&#xff09; 2. 下载Jenkins 下载安装包&#xff1a;Jenkins安装包下载链接 3. 安装Jenkins 选择Jenkins的安装路径&#xff1a; …

virtualBox 在ubuntu 22.04 中自动安装安装增强功能不生效的解决方法

virtualBox 在ubuntu 22.04 中自动安装安装增强功能不生效的解决方法 step 开启双向剪切板复制粘贴支持step2 在设备面板安装增强功能安装后不生效如果选项卡中无设备菜单 step 开启双向剪切板复制粘贴支持 virtualBox界面依次点击:控制---->设置—>高级—>双向—>…

elasticsearch 笔记二:搜索DSL 语法(搜索API、Query DSL)

文章目录 一、搜索 API1. 搜索 API 端点地址2. URI Search3. 查询结果说明5. 特殊的查询参数用法6. Request body Search6.1 query 元素定义查询6.2 指定返回哪些内容**6.2.1 source filter 对_source 字段进行选择****6.2.2 stored_fields 来指定返回哪些 stored 字段****6.2.…

Windows操作系统:共享文件夹,防火墙的设置

1.共享文件夹 1.1 共享文件夹的优点 1.2 共享文件夹的优缺点 1.3 实例操作 ​编辑 2.防火墙设置 2.1 8080端口设置 3.思维导图 1.共享文件夹 1.1 共享文件夹的优点 优点 协作和团队合作&#xff1a;共享文件夹使多个用户能够在同一文件夹中协作和编辑文件。这促进了团…

每日一练2023.12.25——验证身份【PTA】

题目链接 &#xff1a;验证身份 题目要求&#xff1a; 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&a…

脱壳后多dex文件合并进apk反编译

我们遇到加固后的apk&#xff0c;在脱壳后有很多dex文件&#xff0c;有时候我们只反编译有关键代码的dex会存在一些上下文代码找不到的情况&#xff0c;这时候我们需要多dex一起反编译&#xff0c;并且需要同步看看资源文件怎么办&#xff1f;&#xff1a; 我们可以把多dex塞回…

python写一个windows消息提醒小软件

一、需求 上班时&#xff0c;由于自己经常coding到忘记时间&#xff0c;经常会一坐坐很久&#xff0c;搞的劳资腰都不好了&#xff0c;所以没事闲的写了个久坐提醒的小程序。 二、功能描述 能设置时间间隔&#xff0c;过了间隔时间windows发出提醒消息&#xff0c;能定制消息…