hadoop 多机全分布式安装步骤(虚拟机1master+2slave)

文章目录

    • 1. 虚拟机安装Centos7
    • 2. 配置静态IP
    • 3. 更改主机名
    • 4. 编辑域名映射
    • 5. 安装配置Java
    • 6. 配置SSH免密登录
    • 7 .安装Hadoop
    • 8. 关闭防火墙
    • 9. 格式化文件系统
    • 10. 启动验证
    • 11. 第一个MapReduce程序: WordCount
    • 12. 关闭Hadoop

参考书:《Hadoop大数据原理与应用》

1. 虚拟机安装Centos7

  • 安装3台虚拟机,centos7,一个master,两个slave,安装时可以改hostname, 记得设置密码
  • 安装的是4.7Gb的包,选择的 service with GUI
  • 选则 NAT 网络链接
  • ip route show 查看路由器网关ip
  • ip addr 查找本机ip(下面用的着这两个ip)

2. 配置静态IP

vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
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=caf90547-4b5a-46b3-ab7c-2c8fb1f5e4d7
DEVICE=ens33
ONBOOT=yes # 改yesIPADDR=192.168.253.130 # ip
NETMASK=255.255.255.0 
GATEWAY=192.168.253.2 # 网关
DNS1=192.168.253.2 # 跟网关一样即可

保存权限不足,输入w !sudo tee %

  • 重启网络
systemctl restart network.service

在这里插入图片描述

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:77:14:71 brd ff:ff:ff:ff:ff:ffinet 192.168.253.130/24 brd 192.168.253.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::ce06:b26c:ff2d:5288/64 scope link noprefixroute valid_lft forever preferred_lft forever

同理,另外两台 ip 为:192.168.253.128, 192.168.253.129(个人根据自己的情况来)

3. 更改主机名

  • 安装的时候就改了,此处可跳过
  • 切换 root 用户,sudo su
  • vi /etc/hostname, 分别替换内容为 master,slave1, slave2
  • reboot重启,hostname 查看是否更改

4. 编辑域名映射

为了便捷访问,三台机器都做以下修改,sudo su
/etc/hosts追加以下内容,重启

192.168.253.130 master
192.168.253.128 slave1
192.168.253.129 slave2
192.168.31.237 michael

检查各台机器是否能ping通

ping master
ping slave1
ping slave2

5. 安装配置Java

  • 卸载
    查看 java -version
    卸载 自带的 Oracle OpenJDK,使用Oracle JDK
rpm -qa | grep jdk
yum -y remove  java-1.8.0*
yum -y remove  java-1.7.0*
  • 下载 jdk,位数根据下图来
    在这里插入图片描述

  • 我从宿主机直接考过来安装包

scp root@michael:/home/dnn/jdk-8u281-linux-x64.tar.gz /home/dnn/jdk-8u281-linux-x64.tar.gz

参考 JDK 安装
装到/opt/jdk1.8.0_281/

6. 配置SSH免密登录

  • 查询 rpm -qa | grep ssh
  • 没有的话安装
yum -y install openssh
yum -y install openssh-server
yum -y install openssh-clients
  • vim /etc/ssh/sshd_config
    第43行取消注释,并加一行,3台机器都做
RSAAuthentication yes
PubkeyAuthentication yes
  • systemctl restart sshd.service,重启服务
  • 切换普通用户 ctrl+d,回到home cd ~
  • ssh-keygen,一直回车
  • cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  • chmod 0600 ~/.ssh/authorized_keys
  • 将master的公钥复制给slave1,slave2,免密访问从节点

在master里键入以下命令

ssh-copy-id -i ~/.ssh/id_rsa.pub dnn@slave1
ssh slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub dnn@slave2
ssh slave2
ssh master

遇到提示输入 yes, 敲密码

还可以在另外两台里,同样的步骤操作一遍

7 .安装Hadoop

伪分布式可以参考:hadoop 单机伪分布式安装步骤

下载或拷贝 安装包到3台机器

scp dnn@michael:/home/dnn/hadoop-3.3.0.tar.gz /home/dnn/hadoop-3.3.0.tar.gz

到文件目录下,解压 tar -zxvf hadoop-3.3.0.tar.gz
移动到你要放的目录 sudo mv hadoop-3.3.0 /opt/hadoop-3.3.0
赋权限给普通用户dnn,chown -R dnn /opt/hadoop-3.3.0


在主节点上操作:

  • 切换 root 用户,新建文件 vim /etc/profile.d/hadoop.sh
  • 添加内容
export HADOOP_HOME=/opt/hadoop-3.3.0
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source /etc/profile.d/hadoop.sh 
  • 切换普通用户,上面已赋权限,vim /opt/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
    54行 改为 export JAVA_HOME=/opt/jdk1.8.0_281/
    55行添加 export HADOOP_SSH_OPTS='-o StrictHostKeyChecking=no'
    199行修改 export HADOOP_PID_DIR=${HADOOP_HOME}/pids

  • vim /opt/hadoop-3.3.0/etc/hadoop/mapred-env.sh
    添加 export JAVA_HOME=/opt/jdk1.8.0_281/export HADOOP_MAPRED_PID_DIR=${HADOOP_HOME}/pids

  • vim /opt/hadoop-3.3.0/etc/hadoop/yarn-env.sh
    添加

export JAVA_HOME=/opt/jdk1.8.0_281/
export YARN_PID_DIR=${HADOOP_HOME}/pids
  • vim /opt/hadoop-3.3.0/etc/hadoop/core-site.xml
<configuration><property><name>fs.defaultFS</name><value>hdfs://192.168.253.130:9000</value></property><property><name>hadoop.tmp.dir</name><value>/opt/hadoop-3.3.0/hdfsdata</value></property><property><name>io.file.buffer.size</name><value>131072</value></property>
<configuration>
  • vim /opt/hadoop-3.3.0/etc/hadoop/mapred-site.xml
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>
  • vim /opt/hadoop-3.3.0/etc/hadoop/yarn-site.xml
<configuration><property><name>yarn.resourcemanager.hostname</name><value>master</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
</configuration>
  • /opt/hadoop-3.3.0/etc/hadoop/ 下,vim workers
    删除 localhost, 加入
slave1
slave2
  • 同步配置文件到2台slave上

在root下

scp /etc/profile.d/hadoop.sh root@slave1:/etc/profile.d/
scp /etc/profile.d/hadoop.sh root@slave2:/etc/profile.d/

在普通用户下

scp -r /opt/hadoop-3.3.0/etc/hadoop/* dnn@slave1:/opt/hadoop-3.3.0/etc/hadoop/
scp -r /opt/hadoop-3.3.0/etc/hadoop/* dnn@slave2:/opt/hadoop-3.3.0/etc/hadoop/

8. 关闭防火墙

在root下,systemctl disable firewalld.service
重启,再看下状态 systemctl status firewalld.service
显示 inactive(dead), 3台机器都做

9. 格式化文件系统

只在 master 上 用 普通用户 操作:

hdfs namenode -format

在这里插入图片描述

10. 启动验证

在 master 上执行3条命令

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
# 第三条可以用下面的命令,上面的显示过期了,以后弃用
mapred --daemon start historyserver

输入 jps 命令,可以看见进程启动了

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

11. 第一个MapReduce程序: WordCount

  • master:在HDFS根目录下创建目录
[dnn@master ~]$ hdfs dfs -mkdir /InputDataTest
[dnn@master ~]$ hdfs dfs -ls /
Found 2 items
drwxr-xr-x   - dnn supergroup          0 2021-03-12 06:49 /InputDataTest
drwxrwx---   - dnn supergroup          0 2021-03-12 06:19 /tmp
  • 上传文件到 InputDataTest 文件夹
[dnn@master ~]$ hdfs dfs -put /opt/hadoop-3.3.0/etc/hadoop/hadoop-env.sh /InputDataTest
[dnn@master ~]$ hdfs dfs -put /opt/hadoop-3.3.0/etc/hadoop/mapred-env.sh /InputDataTest
[dnn@master ~]$ hdfs dfs -put /opt/hadoop-3.3.0/etc/hadoop/yarn-env.sh /InputDataTest
[dnn@master ~]$ hdfs dfs -ls /InputDataTest
Found 3 items
-rw-r--r--   3 dnn supergroup      17017 2021-03-12 06:52 /InputDataTest/hadoop-env.sh
-rw-r--r--   3 dnn supergroup       1850 2021-03-12 06:53 /InputDataTest/mapred-env.sh
-rw-r--r--   3 dnn supergroup       6406 2021-03-12 06:53 /InputDataTest/yarn-env.sh
  • hadoop jar /opt/hadoop-3.3.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount /InputDataTest /OutputDataTest
    报错: org.apache.hadoop.mapreduce.v2.app.MRAppMaster
vim /opt/hadoop-3.3.0/etc/hadoop/yarn-site.xml
<configuration><!-- Site specific YARN configuration properties --><property><name>yarn.resourcemanager.hostname</name><value>master</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.application.classpath</name><value>/opt/hadoop-3.3.0/etc/hadoop:/opt/hadoop-3.3.0/share/hadoop/common/lib/*:/opt/hadoop-3.3.0/share/hadoop/common/*:/opt/hadoop-3.3.0/share/hadoop/hdfs:/opt/hadoop-3.3.0/share/hadoop/hdfs/lib/*:/opt/hadoop-3.3.0/share/hadoop/hdfs/*:/opt/hadoop-3.3.0/share/hadoop/mapreduce/*:/opt/hadoop-3.3.0/share/hadoop/yarn:/opt/hadoop-3.3.0/share/hadoop/yarn/lib/*:/opt/hadoop-3.3.0/share/hadoop/yarn/*
</value></property>
</configuration>

重启集群(关闭3条命令,见下面第12节,启动3条命令),再次运行 wordcount 程序

[dnn@master ~]$ hadoop jar /opt/hadoop-3.3.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount /InputDataTest /OutputDataTest
2021-03-12 07:11:51,635 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at master/192.168.253.130:8032
2021-03-12 07:11:52,408 INFO mapreduce.JobResourceUploader: Disabling Erasure Coding for path: /tmp/hadoop-yarn/staging/dnn/.staging/job_1615504213995_0001
2021-03-12 07:11:53,547 INFO input.FileInputFormat: Total input files to process : 3
2021-03-12 07:11:54,066 INFO mapreduce.JobSubmitter: number of splits:3
2021-03-12 07:11:54,271 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1615504213995_0001
2021-03-12 07:11:54,271 INFO mapreduce.JobSubmitter: Executing with tokens: []
2021-03-12 07:11:54,624 INFO conf.Configuration: resource-types.xml not found
2021-03-12 07:11:54,624 INFO resource.ResourceUtils: Unable to find 'resource-types.xml'.
2021-03-12 07:11:55,117 INFO impl.YarnClientImpl: Submitted application application_1615504213995_0001
2021-03-12 07:11:55,164 INFO mapreduce.Job: The url to track the job: http://master:8088/proxy/application_1615504213995_0001/
2021-03-12 07:11:55,164 INFO mapreduce.Job: Running job: job_1615504213995_0001
2021-03-12 07:12:05,308 INFO mapreduce.Job: Job job_1615504213995_0001 running in uber mode : false
2021-03-12 07:12:05,319 INFO mapreduce.Job:  map 0% reduce 0%
2021-03-12 07:12:21,455 INFO mapreduce.Job:  map 33% reduce 0%
2021-03-12 07:12:22,460 INFO mapreduce.Job:  map 100% reduce 0%
2021-03-12 07:12:29,514 INFO mapreduce.Job:  map 100% reduce 100%
2021-03-12 07:12:29,526 INFO mapreduce.Job: Job job_1615504213995_0001 completed successfully
2021-03-12 07:12:29,652 INFO mapreduce.Job: Counters: 54File System CountersFILE: Number of bytes read=20470FILE: Number of bytes written=1097885FILE: Number of read operations=0FILE: Number of large read operations=0FILE: Number of write operations=0HDFS: Number of bytes read=25631HDFS: Number of bytes written=12134HDFS: Number of read operations=14HDFS: Number of large read operations=0HDFS: Number of write operations=2HDFS: Number of bytes read erasure-coded=0Job Counters Launched map tasks=3Launched reduce tasks=1Data-local map tasks=3Total time spent by all maps in occupied slots (ms)=42362Total time spent by all reduces in occupied slots (ms)=4808Total time spent by all map tasks (ms)=42362Total time spent by all reduce tasks (ms)=4808Total vcore-milliseconds taken by all map tasks=42362Total vcore-milliseconds taken by all reduce tasks=4808Total megabyte-milliseconds taken by all map tasks=43378688Total megabyte-milliseconds taken by all reduce tasks=4923392Map-Reduce FrameworkMap input records=667Map output records=3682Map output bytes=39850Map output materialized bytes=20482Input split bytes=358Combine input records=3682Combine output records=1261Reduce input groups=912Reduce shuffle bytes=20482Reduce input records=1261Reduce output records=912Spilled Records=2522Shuffled Maps =3Failed Shuffles=0Merged Map outputs=3GC time elapsed (ms)=800CPU time spent (ms)=2970Physical memory (bytes) snapshot=615825408Virtual memory (bytes) snapshot=10951270400Total committed heap usage (bytes)=385785856Peak Map Physical memory (bytes)=168960000Peak Map Virtual memory (bytes)=2738552832Peak Reduce Physical memory (bytes)=110534656Peak Reduce Virtual memory (bytes)=2742329344Shuffle ErrorsBAD_ID=0CONNECTION=0IO_ERROR=0WRONG_LENGTH=0WRONG_MAP=0WRONG_REDUCE=0File Input Format Counters Bytes Read=25273File Output Format Counters Bytes Written=12134
  • 查看结果
[dnn@master ~]$ hdfs dfs -ls /OutputDataTest
Found 2 items
-rw-r--r--   3 dnn supergroup          0 2021-03-12 07:12 /OutputDataTest/_SUCCESS
-rw-r--r--   3 dnn supergroup      12134 2021-03-12 07:12 /OutputDataTest/part-r-00000

_SUCCESS 表示运行成功
结果文件是 part-r-00000

  • hdfs dfs -cat /OutputDataTest/part-r-00000 查看结果
[dnn@master ~]$ hdfs dfs -cat /OutputDataTest/part-r-00000
"AS	3
"License");	3
"log	1
#	466
##	32
###	53
#export	14
$HADOOP_YARN_HOME/share/hadoop/yarn/yarn-service-examples	1
$USER	1
${HADOOP_HOME}/logs	1
${HOME}/.hadooprc	1
'-'	1
'.'	1
'hadoop	1
'mapred	1
'yarn	1
(	1
(ASF)	3
(BUT	1
(Java	2
(Note	1
(command)_(subcommand)_USER.	1
(e.g.,	1
(file/dir	1
(i.e.,	2
(period)	1
(primarily)	1
(such	1
(superficially)	1
(the	3
)	1
**MUST	1
**MUST**	1
*NOT*	1
+'%Y%m%d%H%M')"	4
--config)	1
--daemon	1
-Dcom.sun.management.jmxremote.authenticate=false	2
-Dcom.sun.management.jmxremote.port=1026"	2
-Dcom.sun.management.jmxremote.ssl=false	2
-Dhadoop.security.logger=foo).	1
-Dsun.security.krb5.debug=true	1
-Dsun.security.spnego.debug"	1
-Dyarn.server.resourcemanager.appsummary.logger=INFO,RMSUMMARY"	1
-XX:+PrintGCDateStamps	2
-XX:+PrintGCDateStamps"	1
-XX:+PrintGCDetails	3
-XX:+PrintGCTimeStamps	3
-Xloggc:${HADOOP_LOG_DIR}/gc-rm.log-$(date	4
-Xms).	1
-Xmx).	1
-blah).	1
-f	1
-ls	1
-o	2
-s)}	1
.	1
..	1
...	2
.hadooprc	1
/etc/profile.d	2
/tmp	1
10	1
2.0	3
2NN	1
<-----	1
=	1
>	12

12. 关闭Hadoop

mr-jobhistory-daemon.sh stop historyserver
# 或者 mapred --daemon stop historyserver
stop-yarn.sh
stop-dfs.sh

好几天了,跟着书,终于安装成功了!


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

ie浏览器模拟器_航空飞机模拟器安卓版下载-航空飞机模拟器游戏下载

3D建模射击&#xff0c;真实的飞行世界&#xff0c;在航空飞机模拟器游戏中玩家将化身为飞行员&#xff0c;这里的飞机类型非常齐全&#xff0c;每一辆都要熟练操作&#xff0c;最大程度还原了飞行员最真实的驾驶场景&#xff0c;完成任务获得奖励还能提高它的性能哦&#xff0…

npm安装vue_vue搭建脚手架的方式

基于window系统整理的vue脚手架npm、yarn安装方法&#xff0c;记得网络一定要好先说npm的安装方法先在需要创建项目的文件夹下打开终端&#xff0c;如果没有node可以先去官网下载&#xff0c;然后一路next&#xff0c;就OK&#xff0c;记得看清楚电脑操作系统是64还是32&#x…

《BI那点儿事》运用标准计分和离差——分析三国超一流统帅综合实力排名 绝对客观,数据说话...

数据分析基础概念&#xff1a;标准计分&#xff1a; 1、无论作为变量的满分为几分&#xff0c;其标准计分的平均数势必为0&#xff0c;而其标准差势必为1。2、无论作为变量的单位是什么&#xff0c;其标准计分的平均数势必为0&#xff0c;而其标准差势必为1。公式为&#xff1a…

天池 在线编程 最佳利用率(二分查找 + 哈希)

文章目录1. 题目2. 解题1. 题目 给两个排序的数组。 从两个数组中各取取一个数&#xff0c;这两个数之和需要小于或等于k&#xff0c; 需要找到两数之和最大的索引组合。 返回一对包含两个列表的索引。 如果有多个两数之和相等的索引答案&#xff0c;你应该选择第一个数组索引…

python re 匹配多行_Python正则表达式,看这一篇就够了

作者 | 猪哥来源 | 裸睡的猪(ID: IT--Pig)大多数编程语言的正则表达式设计都师从Perl&#xff0c;所以语法基本相似&#xff0c;不同的是每种语言都有自己的函数去支持正则&#xff0c;今天我们就来学习 Python中关于 正则表达式的函数。re模块主要定义了9个常量、12个函数、1个…

nsga2算法_用遗传算法进行容量管理 让虚拟机放置策略更优

随着互联网技术的高速发展&#xff0c;云计算已经成为各行各业的“水电煤”&#xff0c;成为“互联网”的基础设施&#xff0c;而数据中心则是云服务背后的刚性保障。无论是传统的数据中心&#xff0c;还是云形态的数据中心&#xff0c;虚拟化技术都是提升其资源利用率、降低管…

php预处理_如何用预处理让 PHP 更先进

原标题&#xff1a;如何用预处理让 PHP 更先进先来点趣事。不久以前&#xff0c; 来添加 Python 的 range 语法。然后&#xff0c; 大虾 &#xff0c;并且 建议为 PHP 添加 C# 风格的 getter 和 setter。我意识到对于一个局外人来说&#xff0c;建议和实现新的语言特性是件缓慢…

天池 在线编程 两句话中的不常见单词(哈希计数)

文章目录1. 题目2. 解题1. 题目 给定两个句子 A 和 B 。 &#xff08;句子是一串由空格分隔的单词。每个单词仅由小写字母组成。&#xff09; 如果一个单词在其中一个句子中只出现一次&#xff0c;在另一个句子中却没有出现&#xff0c;那么这个单词就是不常见的。 返回所有…

iphone屏幕上的圆圈怎么设置_iPhone手机屏幕突然变暗或者黑屏怎么办?看这里你就知道该怎么办...

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到各种有关娱乐的文章了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。 …

C语言库函数大全及应用实例六

C语言库函数大全及应用实例六 原文:C语言库函数大全及应用实例六[编程资料]C语言库函数大全及应用实例六函数名: getlinesettings 功 能: 取当前线型、模式和宽度 用 法: void far getlinesettings(struct linesettingstype far *lininfo): 程序例: <?xml:namespace prefix…

天池 在线编程 最小的行程(动态规划)

文章目录1. 题目2. 解题1. 题目 给定一个二维矩阵&#xff0c;找到从上到下的最小路径。只能向左下&#xff0c;下&#xff0c;右下移动 所有的元素都是正整数 矩阵大小 < 200x200 样例 1: 输入: 1 2 3 4 5 6 7 8 9 输出: 12 解释: 最短的路径为:1->4->7, 返回12.样…

fluent瞬态计算终止条件在哪里设置_Fluent案例7【圆柱绕流】

一个瞬态的圆柱绕流案例知识点&#xff1a;瞬态圆柱绕流的模拟一个后处理的方法&#xff1a;将瞬态模型中一个点的速度变化绘成图表并将数值导出excel文件模型如下图所示&#xff0c;左边界为速度边界进口速度0.5m/s&#xff0c;试模拟出计算域中的速度变化打开workbench&#…

qq登录界面句柄_别小看QQ邮箱测试,80%的测试新手都不能写出完整的测试用例~...

对于很多刚进入测试行业的新手来说&#xff0c;由于自身的工作经验不足&#xff0c;虽有测试基础知识傍身&#xff0c;但仍然很难将测试用例写的尽善尽美。因此&#xff0c;学习别人的测试经验&#xff0c;将是你成为测试达人的必经之路。今天&#xff0c;我们就以QQ邮箱为例&a…

LeetCode 878. 第 N 个神奇数字(二分查找)

文章目录1. 题目2. 解题1. 题目 如果正整数可以被 A 或 B 整除&#xff0c;那么它是神奇的。 返回第 N 个神奇数字。由于答案可能非常大&#xff0c;返回它模 10^9 7 的结果。 示例 1&#xff1a; 输入&#xff1a;N 1, A 2, B 3 输出&#xff1a;2示例 2&#xff1a; 输…

为什么百度统计里面的广告那么多_里面东西一模一样的桶装方便面为什么比袋装贵那么多?...

今天特地买了一桶桶装的和一袋袋装的&#xff0c;同品牌同系列同口味&#xff0c;里面面饼&#xff0c;配料包也一模一样&#xff0c;桶装的只是多了一个小勺子&#xff0c;为什么一袋二元五&#xff0c;一桶就要卖4元&#xff1f;并且大家好像都不觉得有什么不妥……(好吧我就…

LeetCode 1790. 仅执行一次字符串交换能否使两个字符串相等

文章目录1. 题目2. 解题1. 题目 给你长度相等的两个字符串 s1 和 s2 。 一次 字符串交换 操作的步骤如下&#xff1a;选出某个字符串中的两个下标&#xff08;不必不同&#xff09;&#xff0c;并交换这两个下标所对应的字符。 如果对 其中一个字符串 执行 最多一次字符串交换…

gradle 上传jar包_Gradle学习记录014 关于依赖的声明

详细学习Gradle构建的依赖声明。该学习记录基于Gradle官方网站资料。本篇参考链接如下&#xff1a;https://docs.gradle.org/current/userguide/declaring_dependencies.html声明一个模块作为依赖通常声明一个模块作为依赖&#xff0c;需要指定这个模块的版本。Gradle提供了一套…

win10版本查看_想知道电脑中安装的win10版本号,用这3招就对了,一键查看

自从微软在Windows 10中更改了发布模型后&#xff0c;很多用户就对找出他们在电脑上安装的Windows 10版本感兴趣。大家可能都已经知道&#xff0c;微软不会再发布Windows的主要版本&#xff0c;而是会不断发布更新&#xff0c;这让人想起许多Linux发行版的滚动发行模型。如果你…

LeetCode 1791. 找出星型图的中心节点(图出入度)

文章目录1. 题目2. 解题1. 题目 有一个无向的 星型 图&#xff0c;由 n 个编号从 1 到 n 的节点组成。 星型图有一个 中心 节点&#xff0c;并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。 给你一个二维整数数组 edges &#xff0c;其中 edges[i] [ui, vi] 表示在节…

ole db 错误 通讯链接失败_西门子PLC1200的S7通讯(同一项目下)--GET接收指令

西门子PLC1200的S7通讯&#xff08;同一项目下&#xff09;--GET接收指令1.0 首先在同一项目下&#xff0c;组态两个PL&#xff0c;如下图&#xff0c;组态了2个1200PLC 1214C的PLC2.0 点击链接里面&#xff0c;在窗口的右上角选择S7连接&#xff0c;这个窗口可以看到本地ID&am…