大数据处理从零开始————3.Hadoop伪分布式和分布式搭建

news2024/12/26 14:00:40

1.伪分布式搭建(不会用,了解就好不需要搭建)

        这里接上一节。

1.1 伪分布式集群概述

        伪分布式集群就是只有⼀个服务器节点的分布式集群。在这种模式中,我们也是只需要⼀台机器。 但与本地模式不同,伪分布式采⽤了分布式的思想,具有完整的分布式⽂件存储和分布式计算的特 点。在进⾏存储和计算时,将涉及到的相关守护进程都运⾏在同⼀台机器上,它们都是独⽴的 Java进程,因⽽称为“伪分布式集群”。 伪分布式集群模式,⽐本地模式多了代码调试功能,允许检查内存的使⽤、HDFS输⼊输出、以及 其他的守护进程交互情况。

1.2 关闭selinux

        把selinux关闭掉,这是Linux系统的⼀个安全机制,可以进⼊⽂件中将SELINUX设置为 disabled。

vim /etc/selinux/config

        把代码中SELINUX修改或添加为:

SELINUX=disabled

1.3 修改配置⽂件

cd /opt/module/hadoop/etc/hadoop/
ll   #查看目录文件

        下面这些文件都会有。

1.3.1 core-site.xml⽂件(记住修改下方主机名)

<configuration>  
    <!-- 设置namenode节点 -->  
    <!-- 注意: hadoop1.x时代默认端口是9000;hadoop2.x时代默认端口是8020;  
    hadoop3.x时代默认端口是9820 -->  
    <property>  
        <name>fs.defaultFS</name>  
        <value>hdfs://hadoop100:9820</value>  
    </property>  

    <!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 -->  
    <property>  
        <name>hadoop.tmp.dir</name>  
        <value>/opt/module/hadoop/tmp</value>  
    </property>  
</configuration>

1.3.2 hdfs-site.xml⽂件(记住修改下方主机名)

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  
  <!-- secondarynamenode守护进程的http地址:主机名和端口号。参考守护进程布局 -->
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop100:9868</value>
  </property>
  
  <!-- namenode守护进程的http地址:主机名和端口号。参考守护进程布局 -->
  <property>
    <name>dfs.namenode.http-address</name>
    <value>hadoop100:9870</value>
  </property>
</configuration>

1.3.3 hadoop-env.sh⽂件(记住修改下方主机名)

export JAVA_HOME=/opt/module/jdk
 
# Hadoop3中,需要添加如下配置,设置启动集群⻆⾊的⽤户是哪个。
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root

1.4 格式化集群

        要注意,如果我们在core-site.xml中配置过hadoop.tmp.dir路径,在集群格式化时要保证这个路 径不存在!如果之前存在过数据,要先将其删除,再进⾏格式化!

hdfs namenode -format

        执⾏效果如下图所示:(注意对比下方点)

1.5 启动集群

 start-dfs.sh

        执⾏该命令后,⼀般会有如下提示:(这个一个不能少)!!!

Starting namenodes on [MyBigData]
Starting datanodes
Starting secondary namenodes [MyBigData]

1.6 查看进程

jps

执⾏该命令后,⼀般会有如下提示:(这个一个不能少)!!!

11090 Jps
10595 NameNode
10938 SecondaryNameNode
10763 DataNode

1.7 启动WebUI界⾯

        Hadoop伪集群模式给我们提供了⼀个WebUI界⾯,我们可以在浏览器中输⼊虚拟机的IP地址。如 果我们做过主机名映射,也可以直接使⽤主机名,⽐如http://192.168.10.100:9870。

1.8 演示案例-统计单词个数

1.8.1 准备数据

        接下来我们准备⼀些数据,在hadoop⽂件夹下创建⼀个myinput⽬录并进⼊。

mkdir myinput && cd myinput

        然后在该⽬录下创建两个file⽂件,并在其中输⼊⼀些内容:

echo "hello world hadoop linux hadoop" >> file1
echo "hadoop linux hadoop linux hello" >> file1
echo "hadoop linux mysql linux hadop" >> file1
echo "hadoop linux hadoop linux hello" >> file1
echo "linux hadoop good programmer" >> file2
echo "good programmer yyg good" >> file2

1.8.2 上传集群

        接下来我们需要将数据⽂件file1和file2上传到集群,以后我们再进⾏任务处理的数据就是HDFS数 据,不是Linux本地存储的了。

hdfs dfs -put ./myinput/ /
# 检查是否已经上传成功
hdfs dfs -ls -R /

        执⾏结果⼀般如下所示:

1.8.3 执⾏任务

        我们切换到⾃⼰的hadoop⽬录下,在该⽬录中执⾏如下命令:

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount ./myinput ./myoutput

        在运⾏该命令时,也可能会出现以下问题:

        以上问题则表明我们的Hadoop服务器虽然启动成功,但缺少了⼀个/user/root/input⽂件夹,我 们可以⼿动创建出来。

        解决过程如下:

# 确认该路径是否存在
 hdfs dfs -ls /user/root/input

        如果该路径确实不存在,则创建之:

# 创建input⽂件夹
hdfs dfs -mkdir -p /user/root/input
# 将file1和file2中的⽂件put到input中
[root@hd01 hadoop]# hdfs dfs -put ./input/file* /user/root/input

        接着我们重新执⾏如下命令即可:

# hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount ./input ./output

2.完全分布式搭建(需要做!!!)

2.1 完全分布式概述

        在真实的企业环境中,服务器集群会使⽤到多台机器共同配合,来构建⼀个完整的分布式⽂件系 统。⽽在这样的分布式⽂件系统中,HDFS相关的守护进程也会分布在不同的机器上,例如:

        ● NameNode守护进程,尽可能单独部署在⼀台硬件性能较好的机器中;

        ● 其他每台机器上都会部署⼀个DataNode守护进程,⼀般的硬件环境即可;

        ● SecondaryNameNode的守护进程最好不要和NameNode在同⼀台机器上。

2.2 集群规划部署

2.3 配置集群核⼼⽂件

2.3.1 core-site.xml⽂件

[root@hd01 ~]#  cd $HADOOP_HOME/etc/hadoop
[root@hd01 hadoop]# vim core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <!-- 指定NameNode的地址 -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hd01:8020</value>
  </property>
  <!-- 指定hadoop数据的存储目录 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/module/hadoop/tmp</value>
  </property>
  <!-- 配置HDFS网页登录使用的静态用户为root -->
  <property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
  </property>
</configuration>

2.3.2 hdfs-site.xml⽂件

        打开该⽂件:

[root@hd01 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>hd01:9870</value>  
    </property>  
    
    <!-- 2nn web端访问地址,注意这的机器名称是hd03!!!-->  
    <property>  
        <name>dfs.namenode.secondary.http-address</name>  
        <value>hd03:9868</value>  
    </property>  
</configuration>  

2.3.3 yarn-site.xml⽂件

        打开yarn-site.xml:

[root@hd01 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的地址, 注意这⾥的机器名称是hd02!!!-->  
    <property>  
        <name>yarn.resourcemanager.hostname</name>  
        <value>hd02</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.nodemanager.vmem-check-enabled</name>  
        <value>false</value>  
        <description>Whether virtual memory limits will be enforced for containers</description>  
    </property>  
    
    <property>  
        <name>yarn.nodemanager.vmem-pmem-ratio</name>  
        <value>4</value>  
        <description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>  
    </property>  
</configuration>

2.3.4 mapred-site.xml⽂件

[root@hd01 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>
</configuration>

2.3.5 hadoop-env.sh⽂件

[root@hd01 hadoop]# vim hadoop-env.sh

增加如下内容:!!!!这里是增加

export JAVA_HOME=/opt/module/jdk
 
# Hadoop3中,需要添加如下配置,设置启动集群⻆⾊的⽤户是谁
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

2.3.6 works⽂件

        打开works⽂件:

root@hd01 hadoop]# vim /opt/module/hadoop/etc/hadoop/workers
hd01
hd02
hd03

        注意: 该⽂件中添加的内容,其结尾不允许有空格,⽂件中不允许有空⾏!

2.3.7 分发配置⽂件

        在配置好了以上核⼼⽂件之后,我们要在集群上分发配置好的这些Hadoop配置⽂件。

[root@hd01 hadoop]# xsync /opt/module/hadoop/etc/hadoop/

2.4 格式化集群

        如果集群是第⼀次启动,需要在hd01节点上格式化NameNode。

[root@hd01 hadoop]# hdfs namenode -format

2.5 集群启动⽅式

        在这⾥启动的⽅式有两种,⼀种是⼀个节点⼀个节点的启动,⼀种是 编写⼀个启动脚本

2.5.1 单节点启动/关闭⽅式

1 启动HDFS

[root@hd01 hadoop]# /opt/module/hadoop/sbin/start-dfs.sh

2. 启动YARN

        我们可以在在配置了ResourceManager的节点(hd02)上启动yarn:

[root@hd02 hadoop]# /opt/module/hadoop/sbin/start-yarn.sh

        启动节点后,我们就可以在Web端查看HDFS的NameNode了。我们在浏览器中输⼊: http://192.168.10.104:9870。然后我们查看Datanodes选项下,看看启动的个数是否为3,不为 3则说明环境配置有问题。

        我 们 也 可 以 在 Web 端 查 看 YARN 的 ResourceManager , 在 浏 览 器 中 输 ⼊ : http://192.168.10.105:8088。查看⾸⻚Active Nodes是否为3,不为3则说明环境配置有问题。

3. 关闭单节点

        我们可以将各个模块分开启动,也可以分开停⽌,前提是⼤家已经配置了ssh。

# 停⽌HDFS
[root@hd01 ~]# stop-dfs.sh
#停⽌YARN
start-yarn.sh/stop-yarn.sh

        或者我们将各个服务组件逐⼀启动/停⽌。

# 分别启动/停⽌HDFS组件
[root@hd01 ~]# hdfs --daemon start/stop namenode/datanode/secondarynamenode
# 启动/停⽌YARN
[root@hd01 ~]# yarn --daemon start/stop resourcemanager/nodemanager

2.5.2 脚本启动⽅式(重点)

        如果我们⼀个节点⼀个节点的启动,会很麻烦,后续进⾏关闭时更麻烦,所以⽐较好的启动与关闭 ⽅式是编写⼀个启动和关闭脚本。

1.编写脚本

        我们先编写⼀个Hadoop集群的启停脚本,包含HDFS、Yarn、Historyserver,脚本⽂件名为 myhadoop.sh。

[root@hd01 ~]# cd /root
[root@hd01 ~]# vim myhadoop.sh
#!/bin/bash  

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

case $1 in  
    "start")  
        echo " =================== 启动 hadoop集群 ==================="  
        echo " --------------- 启动 hdfs ---------------"  
        ssh hd01 "/opt/module/hadoop/sbin/start-dfs.sh"  
        echo " --------------- 启动 yarn ---------------"  
        ssh hd02 "/opt/module/hadoop/sbin/start-yarn.sh"  
        ;;  
    
    "stop")  
        echo " =================== 关闭 hadoop集群 ==================="  
        echo " --------------- 关闭 yarn ---------------"  
        ssh hd02 "/opt/module/hadoop/sbin/stop-yarn.sh"  
        echo " --------------- 关闭 hdfs ---------------"  
        ssh hd01 "/opt/module/hadoop/sbin/stop-dfs.sh"  
        ;;  
    
    *)  
        echo "Input Args Error..."  
        ;;  
esac

2. 添加执⾏权限

chmod +x myhadoop.sh

3 关闭/开启所有hadoop进程

# 停⽌集群
[root@hd01 ~]# ./myhadoop.sh stop
# 开启集群
[root@hd01 ~]# ./myhadoop.sh start

2.6 编写查看集群进程的脚本

        我们通常是通过jps命令来查看hadoop的进程。

# 查看单个进程
[root@hd01 ~]#  jps

 1. 编写脚本

        这种⽅式只能查看单个节点上的进程,并不是很⽅便,我们可以编写⼀个⽤来查看集群进程的脚 本。我们先创建⼀个jpsall⽂件:

[root@hd01 ~]# vim jpsall
#!/bin/bash  

for host in hd01 hd02 hd03; do  
    echo "=============== $host ==============="  
    ssh "$host" jps  
done

2. 添加执⾏权限

        保存后退出,然后赋予该脚本执⾏权限。

[root@hd01 bin]# chmod +x jpsall

3. 查看进程

[root@hd01 bin]# ./jpsall

2.7 分发脚本

        最后,我们把上⾯编写的脚本进⾏分发,以保证⾃定义的脚本可以在三台机器上都能使⽤。

[root@hd01 ~]# xsync /root/myhadoop.sh
[root@hd01 ~]# xsync /root/jpsall

2.8 集群测试

2.8.1 上传⽂件到集群

1.上传⼩⽂件

[root@hd01 ~]# hadoop fs -mkdir /input
[root@hd01 ~]# hadoop fs -put $HADOOP_HOME/wcinput/word.txt /input

2. 上传⼤文件

[root@hd01 ~]# hadoop fs -put /opt/software/jdk-8u421-linux-x64.tar.gz /

2.8.2 查看结果

        上传⽂件后,我们可以来查看⽂件存放在什么位置。查看HDFS⽂件的存储路径,标红部分每台电 脑可能不同,需要根据实际情况修改。

[root@hd01 ~]# cd /opt/module/hadoop/tmp/dfs/data/current/BP-35375740-192.168.10.104-1726820702869

        这个文件:BP-35375740-192.168.10.104-1726820702869  每个机器不一样需要自己转到相应这个位置,进入后接着下一步。进入下放完整路径。

[root@hd01 subdir0]# pwd
/opt/module/hadoop/tmp/dfs/data/current/BP-35375740-192.168.10.104-1726820702869/current/finalized/subdir0/subdir0

2.8.3 拼接⽂件

        我们可以利⽤hadoop中的命令,将多个⽂件拼接在⼀起,⽐如:

# ⽐如现在有如下多个⽂件:
总用量 144424
-rw-r--r--. 1 root root        49 9月  20 17:13 blk_1073741825
-rw-r--r--. 1 root root        11 9月  20 17:13 blk_1073741825_1001.meta
-rw-r--r--. 1 root root 134217728 9月  20 17:15 blk_1073741826
-rw-r--r--. 1 root root   1048583 9月  20 17:15 blk_1073741826_1002.meta
-rw-r--r--. 1 root root  12512099 9月  20 17:15 blk_1073741827
-rw-r--r--. 1 root root     97759 9月  20 17:15 blk_1073741827_1003.meta
# 我们可以将其拼接在⼀起
[root@hd01 subdir0]# cat blk_1073741826>>tmp.tar.gz
[root@hd01 subdir0]# cat blk_1073741827>>tmp.tar.gz
[root@hd01 subdir0]# tar -zxvf tmp.tar.gz

2.8.4 下载⽂件

[root@hd01 ~]# hadoop fs -get /jdk-8u212-linux-x64.tar.gz ./

2.8.5 执⾏wordcount程序

[root@hd01 ~]# cd /opt/module/hadoop
[root@hd01 hadoop]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount /input /output
[root@hd01 hadoop]# cat wcoutput/part-r-00000

2.9 统计单词格式

2.9.1 准备数据

[root@hd01 hadoop]# cd /root
[root@hd01 ~]# mkdir input && cd input
[root@hd01 input]#  echo "hello world hadoop linux hadoop" >> file1
[root@hd01 input]# echo "hadoop linux hadoop linux hello" >> file1
[root@hd01 input]#  echo "hadoop linux mysql linux hadop" >> file1
[root@hd01 input]#  echo "hadoop linux hadoop linux hello" >> file1
[root@hd01 input]# echo "linux hadoop programmer" >> file2
[root@hd01 input]#  echo "programmer jiayadong good" >> file2

2.9.2 上传到集群

# 将数据上传到HDFS
[root@hd01 input]# hdfs dfs -put ~/input/ /
# 检查是否已经上传成功
[root@hd01 input]# hdfs dfs -ls -R /
drwxr-xr-x - root supergroup 0 2022-01-28 13:11 /input
-rw-r--r-- 1 root supergroup 127 2022-01-28 13:11 /input/file1
-rw-r--r-- 1 root supergroup 59 2022-01-28 13:11 /input/file2

2.9.3 执⾏任务

 hdfs dfs -rm -r /output


hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount /input /output

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

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

相关文章

计算机的错误计算(九十九)

摘要 讨论 的计算精度问题。 计算机的错误计算&#xff08;五十五&#xff09;、&#xff08;七十八&#xff09;以及&#xff08;九十六&#xff09;分别列出了 IEEE 754-2019[1]中的一些函数与运算。下面再截图给出其另外几个运算。 另外&#xff0c;计算机的错误计算&…

业务安全治理

业务安全治理 1.账号安全撞库账户盗用 2.爬虫与反爬虫3.API网关防护4.钓鱼与反制钓鱼发现钓鱼处置 5.大数据风控风控介绍 1.账号安全 撞库 撞库分为垂直撞库和水平撞库两种&#xff0c;垂直撞库是对一个账号使用多个不同的密码进行尝试&#xff0c;可以理解为暴力破解&#x…

密码字典txt python密码字典代码

由于生成的密码数量非常庞大&#xff0c;这个过程可能需要非常长的时间来完成&#xff0c;并且会占用大量的磁盘空间。 链接&#xff1a; 密码字典下载地址610.4M 提取码: w8bi

大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

en造数据结构与算法C# 群组行为优化 和 头鸟控制

实现&#xff1a; 1.给鸟类随机播放随机动画使得每一只鸟扇翅膀的频率都不尽相同 2.可以自行添加权重&#xff0c;并在最后 sumForce separationForce cohesionForce alignmentForce;分别乘上相应权重&#xff0c;这样鸟就能快速飞行和转向辣 using System.Collections.Ge…

【python设计模式4】结构型模式1

目录 适配器模式 桥模式 适配器模式 将一个类的接口转换成客户希望的另外一个接口&#xff0c;适配器使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。实现适配器的两种方式&#xff0c;类适配器使用多继承&#xff0c;对象适配器使用组合。组合就是一个类中放入另…

将硬盘的GPT 转化为MBR格式

遇到的问题 在重新安装系统时&#xff0c;磁盘遇到无法空间分配给系统。 解决方式 使用Windows10镜像 U盘安装&#xff0c;选择磁盘时&#xff0c;转换磁盘格式为MBR。然后退出安装程序。 Shift F10# 输入 diskpart# 查看磁盘信息 list disk# 选择需要转换的磁盘&#xff0…

本地生活商城开发搭建 同城O2O线上线下推广

同城本地化商城目前如火如荼&#xff0c;不少朋友咨询本地生活同城平台怎么开发&#xff0c;今天商淘云与大家分享同城O2O线上商城的设计和开发。 本地生活商城一般会涉及到区域以及频道类&#xff0c;一般下单需要支持用户定位、商家定位&#xff0c;这样利于用户可以快速找到…

解决VSCode中Eslint插件无法自动折行的问题

问题描述 在.eslintrc.cjs 文件中写入了如下配置 代码过长时会出现黄色波浪线报错 但Ctrls保存却不能自动折行 具体表现是短时间内出现两次格式化&#xff0c;第一次格式化会将长代码自动拆行成短代码&#xff0c;但第二次格式化又将短代码变回了长代码&#xff08;按Ctrlz可…

手机换新,怎么把旧iPhone手机数据传输至新iPhone16手机

随着苹果公司推出了备受期待的iPhone 16。这款最新型号的iPhone不仅在设计上进行了革新&#xff0c;更在性能和功能上带来了前所未有的突破。对于那些准备从旧iPhone升级到iPhone 16的用户来说&#xff0c;最关心的问题之一就是如何把旧手机的资料转移到新手机中了。如果你不知…

基于Java的题库管理系统设计与实现(springboot vue)

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

如何基于Flink CDC与OceanBase构建实时数仓,实现简化链路,高效排查

本文作者&#xff1a;阿里云Flink SQL负责人&#xff0c;伍翀&#xff0c;Apache Flink PMC Member & Committer 众多数据领域的专业人士都很熟悉Apache Flink&#xff0c;它作为流式计算引擎&#xff0c;流批一体&#xff0c;其核心在于其强大的分布式流数据处理能力&…

GIT仓库的简单创建和使用

初步学会了一些简单的git操作。接下来对这一次学习进行一次总结&#xff0c;其中也包括了在这次学习中踩中的坑&#xff0c;希望对你们有所帮助。 第一步&#xff1a;下载 这个东西可以直接到官网下载或者到阿里云去下载&#xff0c;这里不多赘述。 附&#xff1a;阿里云路径…

上手一个RGBD深度相机:从原理到实践--ROS noetic+Astra S(中):RGB相机的标定和使用

前言 本教程涉及基础相机的原理&#xff0c;使用&#xff0c;标定&#xff0c;和读取。(注&#xff1a;本教程默认大家有ROS1基础&#xff0c;故不对程序进行详细解释) 上一期&#xff1a;[csdn博客]上手一个RGBD深度相机&#xff1a;从原理到实践–ROS noeticAstra S&#xf…

面试题给图例举测试用例或测试点

目录 从功能测试的角度考虑&#xff1a; 从性能角度考虑&#xff1a; 从兼容性的角度考虑&#xff1a; 从自动化角度考虑&#xff1a; 从安全性角度考虑&#xff1a; 用户体验的角度测试&#xff1a; 面试通常会有技术和人事两种&#xff0c;侧重点不一样。 今天聊一下测…

初体验《SpringCloud 核心组件Eureka》

文章目录 1.案例准备1.1 案例说明1.2 案例数据库准备1.3 环境搭建1.3.1. 创建一个空的项目1.3.2. 创建Maven工程1.3.3. 配置父工程依赖&#xff0c;SpringCloud版本以及对应的SpringBoot版本1.3.4. 创建公共模块1.3.5. 创建用户模块工程1.3.5.1 引入依赖以及配置文件1.3.5.2 在…

5G 扬帆新质跃,技术蝶变开新篇-第七届“绽放杯”5G应用征集大赛 5G应用融合技术专题赛圆满收官

2024年9月13日,由中国信息通信研究院、中国电信集团有限公司、中国移动通信集团有限公司、中国联合网络通信集团有限公司主办,5G应用产业方阵承办的第七届“绽放杯”5G应用征集大赛  5G应用融合技术专题赛决赛在深圳成功举办。 本次专题赛以“5G扬帆新质跃,技术蝶变开新篇”为…

MyBatisPlus--(插件功能---分页)

4.插件功能 MybatisPlus提供了很多的插件功能,进一步拓展其功能。目前已有的插件有: PaginationInnerInterceptor:自动分页 TenantLineInnerInterceptor:多租户 DynamicTableNameInnerInterceptor:动态表名 OptimisticLockerInnerInterceptor:乐观锁 IllegalSQLInnerInt…

解决Mac下Vscode编译运行C语言程序会自动生成DSYM文件夹的问题

&#x1f389; 前言 好久没写C语言了&#xff0c;今天打开Vscode打算写点程序练练手&#xff0c;结果发现一个让我非常苦恼的事情&#xff0c;那就是每次我运行程序的时候&#xff0c;左侧的资源管理器就会生成一大堆的文件&#xff0c;如图&#xff1a; 强迫症犯了&#xff…

通威股份半年报业绩巨降:销售费用大增,近一年股价跌四成

《港湾商业观察》施子夫 王璐 光伏领域龙头企业通威股份&#xff08;600438.SH&#xff09;交出的半年报延续了2023年营收和净利润双下滑趋势&#xff0c;幅度显得更大。 即便受行业波动影响&#xff0c;但如何重整及提升盈利能力&#xff0c;通威股份还需要给出解决方案。​…