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

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 /outputhadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount /input /output

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

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

相关文章

使用Locust进行接口性能测试:关联与参数化技巧分析

Locust是一款开源的Python性能测试工具&#xff0c;它可以模拟大量并发用户对网站或者其他接口进行压力测试 1. 关联&#xff1a;精确模拟用户操作 在某些场景下&#xff0c;我们需要将之前请求的响应参数关联到后续请求中&#xff0c;以模拟用户操作。这在会话管理&#xff…

数字工厂管理系统与MES系统在实际应用中有哪些区别

随着制造业的数字化转型步伐加快&#xff0c;数字工厂管理系统与制造执行MES系统作为两大关键工具&#xff0c;在实际应用中展现出了明显的差异。本文将从实际应用的角度&#xff0c;详细探讨这两种系统之间的主要区别。 数字工厂管理系统的实际应用 数字工厂管理系统侧重于对…

python检测keycloak证书连接报错问题

最近一直被keycloak的证书问题困扰了很久&#xff0c;老是提示ssl安全连接&#xff0c;由于不会java,只好硬着头皮用python测试。 我这里的证书是自己签注的证书&#xff0c;导入系统的是CA根证书。 from keycloak import KeycloakOpenID# 1. 配置 Keycloak 客户端 keycloak_o…

STM32F407ZGT6驱动sd卡+文件夹 并写入多组实时数据 基于cubemx生成

SD卡介绍 SD卡&#xff0c;全称Secure Digital卡&#xff0c;是一种常见的便携式存储设备&#xff0c;通常用于存储和传输数据。它是一种闪存存储卡。 TF卡&#xff08;TransFlash卡&#xff09; 又称MicroSD卡&#xff0c;MicroSD卡比SD卡小&#xff0c;通常只有SD卡的1/4大小…

LLM(大语言模型)和AIGC入门学习路线图,零基础入门到精通,收藏这一篇就够了

大模型是指网络规模庞大的深度学习模型&#xff0c;其参数量通常在千亿级别。 学习大模型需要具备计算机基础&#xff0c;这一点非常重要&#xff01; 要系统地入门大模型&#xff0c;首先需要学习深度学习的基础知识&#xff0c;包括神经网络&#xff08;NN&#xff09;、卷…

nvm node管理工具常用指令

注&#xff1a;使用nvm之前需要卸载掉原有的node 1.在终端输入 nvm list available&#xff0c; 查看网络可以安装的版本。 点击visit后面的链接可查看完整版本列表 版本区别&#xff1a; CURRENT&#xff1a;当前正在使用的 Node.js 版本。LTS&#xff08;Long Term Suppor…

java踩坑

1.mybatis在idea可以正常运行&#xff0c;但是打jar包后&#xff0c;就报链接超时&#xff0c;可能是参数设置有问题&#xff0c;但是idea自动忽略了。 出问题的配置&#xff1a;&#xff08;圈出来的地方乱码了&#xff0c;idea有纠错能力&#xff0c;它自动调整为正确的&…

电脑录课软件哪个好用,提高教学效率?电脑微课录屏软件推荐

在当今这个数字化时代&#xff0c;教育领域也迎来了翻天覆地的变化。随着远程教学和在线学习的普及&#xff0c;教师们开始寻求更高效、更便捷的教学工具来提升教学质量和学生的学习体验。电脑录课软件&#xff0c;作为现代教育技术的重要组成部分&#xff0c;能够帮助教师轻松…

基于存内计算架构的模型部署与映射优化

先进计算大赛背景&#xff1a; ‘’存内计算”架构通过消除存储与计算单元间的物理距离&#xff0c;突破传统冯诺依曼架构的限制&#xff0c;自2016年起受到广泛关注&#xff0c;被视为国产算力发展的关键技术。 ​ 在存内计算架构中&#xff0c;权重布局对提高存算单元利用率…

海外盲盒APP为盲盒出海助力,拓展海外市场

潮玩市场是一个具有全球化的行业在全球都具有非常高的发展潜力&#xff0c;随着国内盲盒市场的饱和&#xff0c;拓展海外市场对盲盒企业至关重要。近年来&#xff0c;盲盒已经在海外市场取得了一定的成绩&#xff0c;这为企业拓展海外市场奠定了发展基础。 目前&#xff0c;在…

虚拟机(VMware)安装,保姆级教程(附所有安装包及所有安装步骤)

1.安装包下载 1.1VMware下载 VMware安装包 提取码&#xff1a;b9ds 1.2镜像下载 镜像安装包 提取码&#xff1a;hbtq 2.配置虚拟机向导 2.1配置虚拟机向导 2.2选择虚拟机硬件兼容性 2.3安装客户机操作系统 2.4简易安装信息 2.5命名虚拟机 2.6处理器配置 #这个根据自己…

“数字化、数字化流程、流程数字化转型、端到端流程”概念解析

​头一次看到能把“数字化”“数字化流程”“流程数字化转型”和“端到端流程”说的这么清楚的&#xff01; 所谓的“数字化”是指新一代的数字化技术&#xff0c;比如移动、社交、云技术、大数据、人工智能、区块链、数字孪生等。这批新技术已经开始改变人们的工作方式&#x…

VBA技术资料MF198:禁用下拉拖放

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

案例精选 | 聚铭助力河北省某市公安局筑牢网络安全防护屏障

近年来&#xff0c;各级公安机关积极响应信息化发展趋势&#xff0c;致力于提升公安工作的效能与核心战斗力。河北省某市公安局作为主管全市公安工作的市政府部门&#xff0c;承担着打击违法犯罪、维护社会稳定的重任。随着信息化建设的推进&#xff0c;局内系统数量、种类及数…

模板初阶(C++)

初识模板 模板分为 函数模板和类模板这两种&#xff0c;模板可以理解为是一套固有的方法&#xff0c;通过改变里面不同的载体&#xff08; 参数类型&#xff09;进而调高代码的复用性。这是一个经典案例&#xff0c;在不使用模板的情况下&#xff0c;若遇见不同类型的参数&…

Linux——k8s认识

计算资源隔离 - 更方便进行高并发架构的维护和升级 - 架构管理的灵活性更高&#xff0c;不再以单个节点的物理资源作为基础 技术&#xff1a; - 硬件辅助虚拟化 - 容器技术 在企业部署方案中&#xff0c;很少以单节点实现虚拟化和容器技术&#xff0c;一般以集群状态来运…

PCL KD树的使用

目录 一、概述 1.1原理 1.1.1 数据拆分过程 1.1.2 树的构建示例 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1KD树构建与查询&#xff1a; 2.1.2 k近邻搜索 2.1.3半径搜索 2.2完整代码 三、实现效果 3.1处理后点云 3.2数据显示 PCL点云算法汇总及实战…

neo4j导入csv数据

neo4j数据可视化实践 手动输入数据 - 官方democsv数据导入准备数据数据处理导入步骤① 导入疾病表格② 导入药物表格③导入疾病-药物关系表格 爬虫的csv文件 手动输入数据 - 官方demo 点击之后&#xff0c;按照左边10张图中的代码&#xff0c;复制粘贴熟悉语法 效果如下 csv数据…

(十六)Ubuntu 20.04 下搭建PX4+MATLAB 仿真环境(HITL)

在文章&#xff08;十五&#xff09;Ubuntu 20.04 下搭建PX4MATLAB 仿真环境我们学习了如何配置仿真环境&#xff0c;在本节&#xff0c;主要进行HITL的仿真环境搭建。 根据&#xff08;十五&#xff09;Ubuntu 20.04 下搭建PX4MATLAB 仿真环境完成配置到如下界面&#xff1a;…

STM32F1+HAL库+FreeTOTS学习11——延时函数API

STM32F1HAL库FreeTOTS学习11——延时函数API 延时函数API1. vTaskDelay()2. vTaskDelayUntil()3. xTaskDelayUntil()相对延时和绝对延时的区别4. xTaskAbortDelay() 上一期&#xff0c;我们学习了任务相关API使用&#xff0c;这一期我们开始学习FreeRTOS延时函数的API使用 延时…