使用 Docker 搭建 Hadoop 集群

1.1. 启用 WSL 与虚拟机平台

1.1.1. 启用功能

启用 WSL并使用 Moba 连接-CSDN博客

1.2 安装 Docker Desktop

最新版本链接:Docker Desktop: The #1 Containerization Tool for Developers | Docker

指定版本链接:Docker Desktop release notes | Docker Docs

(1)安装好 Docker Desktop,接受相关协议后,进入主界面。如果有 docker hub 帐户就用帐户登录,否则就选没有帐号继续即可。

(2)测试 Docker Desktop 是否安装成功?可以在命令行或终端中输入命令:

docker -v
# 或者
docker info

1.3. Docker 常用设置

(1)镜像源设置

这里找的是阿里云的镜像源,链接:容器镜像服务 (aliyun.com)

进入 Docker Desktop 主界面 → 设置(Settings) → Docker 引擎(Docker Engine)

添加如下内容:

"registry-mirrors": ["https://ib71hsz9.mirror.aliyuncs.com"]

如图所示:

(2) 修改 Docker Desktop 分发存储路径

先查看所有已安装的 Windows Subsystem for Linux (WSL) 发行版的详细列表

wsl --list --all -v

在这里插入图片描述

而 Docker Desktop 默认将所有的 WSL2 分发所对应的 vhdx 硬盘映像文件存到路径:C:\Users\用户名\AppData\Local\Docker 下。为了数据安全性及 重用性,一般将上述文件迁移到其它硬盘中。 最新的 Docker Desktop 已支持在设置界面中直接修改 “Resources->Disk image location”,应用并重新启动即可。如下图所示:

执行后,应该可以看到在新的目标文件夹中有 data 与 main 两个子文件夹, 里面分别存放 Docker Desktop 系统及数据。 后面如果重新安装系统或者重新安装了 Docker Desktop,只要保留这两个目 录下的文件,则原来的所有配置及数据都可以还原。可按如下步骤进行:

查看当前分发命令为:

wsl -l --all -v

停止并注销分发(注意,关闭 Docker Desktop 管理端)命令为:

wsl -t docker-desktop
wsl --unregister docker-desktop 
wsl -t docker-desktop-data
wsl --unregister docker-desktop-data

导入分发令为:

wsl --import-in-place docker-desktop-data  D:\WSL\DockerDesktopWSL\data\ext4.vhdx 
wsl --import-in-place docker-desktop  D:\WSL\DockerDesktopWSL\main\ext4.vhdx

重新打开 Docker Desktop 管理端

1.4. 基本镜像制作

为了减少重复工作,可以将集群存储与计算环境中的常用组件全部安装好, 并提交到 Docker Server 中,后续容器在些镜像上创建。

(1) 创建网络

不管是分布式存储还是分布式计算,集群的搭建必须保证在同一个网络中, 让集群内的所有计算机都可以相互访问。为此,我们通过 docker 单独创建一个集群网络,后续所有容器都在这个网络中运行。 查看当前网络命令:

docker network ls

类似结果:

NETWORK ID     NAME      DRIVER    SCOPE
3a6370a8f8eb   bridge    bridge    local
583559d99159   host      host      local
80f6ea320f3b   none      null      local

创建集群网络命令:

docker network create -d bridge cluster

其中参数 -d bridge 表示连接方式为网桥,cluster 表示网络名称

查看网络信息命令:

docker network inspect cluster

(2) 搜索镜像

docker search debian

(3) 拉取镜像

docker pull debian

如果拉取失败可能是镜像源问题,尝试其他镜像源。

1.5. 制作镜像(跳过)

(1)Dockerfile 操作指令

指令含义
FROM 镜像指定新镜像所基于的镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令
MAINTAINER 名字说明新镜像的维护人信息
RUN命令在所基于的镜像上执行命令,并提交到新的镜像中
CMD [“要运行的程序”,“参数1”,“参数2”]指令启动容器时要运行的命令或者脚本,Dockerfile只能有一条CMD命令, 如果指定多条则只能最后一条被执行
EXPOSE 端口号指定新镜像加载到Docker时要开启的端口
ENV 环境变量 变量值设置一个环境变量的值,会被后面的RUN使用
ADD 源文件/目录目标文件/目录将源文件复制到目标文件,源文件要与Dockerfile位于相同目录中,或者是一个URL
COPY 源文件/目录目标文件/目录将本地主机上的文件/目录复制到目标地点,源文件/目录要与Dockerfile在相同的目录中
VOLUME [“目录”]在容器中创建一个挂载点
USER 用户名/UID指定运行容器时的用户
WORKDIR 路径(类似cd)为后续的RUN、CMD、ENTRYPOINT指定工作自录
ONBUILD 命令指定所生成的镜像作为一个基础镜像时所要运行的命令
HEALTHCHECK健康检查

1.6. 创建容器

(1)创建网桥

docker network create hadoop
docker network ls

在这里插入图片描述

(2)创建容器

docker run -itd --name hadoop102 --network hadoop -p 8088:8088 -p 50070:50070 debian

参数说明:--name,表示容器名称;--network 表示使用的网络;-p 表示映射窗口,8088:8088 表示将容器中的 8088 端口映射到主机的 8088 端口;debian,表示创建容器时使用的镜像名,也可镜像 ID(docker image list 查看);

如果之前创建失败过会出现容器已存在,这时候使用 docker rm 把他删了重新创建就好了

(3)查看容器

docker ps

(4)查看网桥

docker network inspect hadoop

1.7. 进入容器搭建集群

1.7.1. 登录容器

1)如果容器已经关闭,重新启动一下

docker start hadoop102

进入容器。

docker exec -it hadoop102 bash

表示以交互的方式附加到正在运行的容器,并执行容器中命令:bash

2)给 root 设置密码

passwd root

1.7.2. 安装软件

在安装基本软件后,可以 Debian 的软件源切换到国内,以提高后续软件安装的速度,减少等待时间,提高效率。下面以阿里云为例,地理位置也可切换为其它的源,例如腾讯,华为,清华。

# 1. 更新系统
apt update

# 2. 安装网络工具
apt install -y net-tools

# 3. 安装 ping
apt install -y iputils-ping

# 4. 安装 vim 工具
apt install -y vim

# 5. 安装 ssh
yum install -y openssh
apt install -y openssh-server
apt install -y openssh-client

# 6. 安装 https 组件
apt install -y apt-transport-https

# 7. 安装 rsync
apt install -y rsync

【可选】更换软件源,以阿里云为例

备份原文件

cd /etc/apt
mv sources.list sources.list.bak

编辑源配置文件命令为:

vim sources.list

在该文件的最上面加入如下内容:

deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib

更新软件库清单

apt-get update
apt-get upgrade

1.7.3. 搭建集群

安装 JDK 和 Hadoop

1)在容器中创建安装包目录

mkdir /opt/software
mkdir /opt/module

在本地主机上执行,将 JDK 压缩包复制到 Docker 容器中

# docker cp /本地主机路径/JDK 包 容器 ID:/opt/software/
docker cp jdk-8u144-linux-x64.tar.gz f889ba1fb3d2:/opt/software/
docker cp hadoop-3.3.1.tar.gz f889ba1fb3d2:/opt/software/

在这里插入图片描述

2)在容器中解压 JDK 压缩包

tar -zxvf /opt/software/jdk-8u144-linux-x64.tar.gz -C /opt/module/
tar -zxvf /opt/software/hadoop-3.3.1.tar.gz -C /opt/module/

更改文件夹名称

cd /opt/module/
mv jdk1.8.0_144 jdk

3)配置环境变量

vim /etc/profile

在末尾添加内容如下:

export JAVA_HOME=/opt/module/jdk
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/opt/module/hadoop-3.3.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

使环境变量立即生效

source /etc/profile

检测是否配置成功(查看 Java 版本)

java -version
# output
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

4)创建 HDFS 工作目录和 LOG 目录

创建 HDFS 的 NN 和 DN 工作主目录,创建 Hadoop 的 log 日志文件目录(建议将文件放在 /var 目录下,放别的地方也行)

mkdir -p /var/big_data /var/log_hadoop
配置 Hadoop 集群环境

首先,进入$HADOOP_HOME/etc/hadoop目录

cd $HADOOP_HOME/etc/hadoop

1)为 Hadoop 提供 JAVA 解释器路径信息,主要目的是解决远程访问 hadoop 时候JAVA_HOME无法继承的问题,同时将 Hadoop 的日志存储路径修改/var/log_hadoop路径下,其默认在$HADOOP_HOME/etc/hadoop/logs下,一般情况下建议重新指定路径。

vim hadoop-env.sh

添加内容如下:(找到对应位置,没有就加在最后;命令模式下,输入 :$ 回车,光标就会定位到最后一行,按 O 在下一行输入内容)

export JAVA_HOME=/opt/module/jdk
export HADOOP_LOG_DIR=/var/log_hadoop

2)为 Yarn 任务、资源管理器提供 Java 运行环境

vim yarn-env.sh

添加内容如下:

export JAVA_HOME=/opt/module/jdk

3)配置 HDFS 主节点信息、持久化和数据文件的主目录

vim core-site.xml

添加如下内容:

	<property>
		<!-- 指定NameNode的地址 -->
		<name>fs.defaultFS</name>
		<value>hdfs://hadoop102:9000</value>
	</property>
	<property>
		<!-- 指定hadoop数据的存储目录 -->
		<name>hadoop.tmp.dir</name>
		<value>/var/big_data</value>
	</property>

4)配置 HDFS 默认的数据存放策略

vim hdfs-site.xml

添加如下内容:

    <property>
        <!-- DataNode存储block的副本量,不大于DataNode的个数-->
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <!-- 2nn web端访问地址-->
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
	</property>
    <property>
        <!-- 禁用 HDFS ACL(简单权限)-->
        <name>dfs.permissions</name>
        <value>false</value>
    </property>

5)配置 Mapreduce 任务调度策略

vim mapred-site.xml

添加如下内容:

    <property>
        <!-- 指定MapReduce程序运行在Yarn上 -->
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <!-- 历史服务器端地址 -->
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop103:10020</value>
    </property>
    <property>
        <!-- 历史服务器web端地址 -->
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop103:19888</value>
    </property>

6)配置 YARN 资源管理角色的信息

vim yarn-site.xml

添加如下内容:

	<property>
		<!-- 指定MR走shuffle -->
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<property>
		<!-- 指定ResourceManager的地址-->
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop102</value>
	</property>

7)配置 DataNode 节点信息

vim workers

添加如下内容(删除原有内容,不要留任何空格):

hadoop102
hadoop103
hadoop104

8)配置主机名对应 IP

vim /etc/hosts

添加如下内容:

172.19.0.2	hadoop102
172.19.0.3	hadoop103
172.19.0.4	hadoop104

9)退出容器,在本地主机上执行

保存镜像

docker commit hadoop102 hadoop

在这里插入图片描述

克隆多个容器(以三台服务器集群为例)

docker run -itd --name hadoop103 --network hadoop hadoop
docker run -itd --name hadoop104 --network hadoop hadoop

进入三台机子

docker exec -it hadoop102 bash
docker exec -it hadoop103 bash
docker exec -it hadoop104 bash
配置 SSH 免密登录

1)免密登录原理,如下图所示

2)查看 ssh 服务状态 (以下 ssh 有关所以命令均需在三台机器上执行)

service ssh status

如果没有运行,使用以下命令启动它

service ssh start

如果不是默认启动,设置SSH服务为开机自启:

systemctl enable ssh

3)生成公钥和私钥,注意下面的指令要求3台机器都要执行,Mobaxterm可以使用MultiExec功能开启多执行模式,让三台机器同时执行。

ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)

如果使用的是 root 用户,需要修改权限

vim /etc/ssh/sshd_config

修改如下内容:

PermitRootLogin yes

重新启动 ssh 服务

service ssh restart

4)将公钥拷贝到要免密登录的目标机器上,各自文件下(不知道密码使用 passwd root 重新设置)

ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104

.ssh文件夹下(~/.ssh)的文件功能解释

文件名含义
known_hosts记录ssh访问过计算机的公钥(public key)
id_rsa生成的私钥
id_rsa.pub生成的公钥
authorized_keys存放授权过得无密登录服务器公钥

1.7.4. 集群启停方式

1)各个模块分开启停(配置ssh是前提)

(1)如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode

hdfs namenode -format

(2)整体启停 HDFS/YARN

start-dfs.sh
stop-dfs.sh
start-yarn.sh
stop-yarn.sh

或者

$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/stop-dfs.sh
$HADOOP_HOME/etc/hadoop/sbin/start-yarn.sh
$HADOOP_HOME/etc/hadoop/sbin/stop-yarn.sh

如果使用的 hadoop 版本为 3.x 应该会出现在下述类型报错,显然是参数没有被定义

Starting namenodes on [hadoop102]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [hadoop104]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operati

下面我们需要在定义这些参数

方法一:/etc/profile 文件内配置参数

vim /etc/profile

内容如下:

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

方法二: 修改 start-dfs.shstop-dfs.shstart-yarn.shstop-yarn.sh 四个文件

修改 HDFS 文件

vim $HADOOP_HOME/sbin/start-dfs.sh
vim $HADOOP_HOME/sbin/stop-dfs.sh

在顶部添加以下参数

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

修改 YARN 文件

vim $HADOOP_HOME/sbin/start-yarn.sh
vim $HADOOP_HOME/sbin/stop-yarn.sh

在顶部添加以下参数

YARN_RESOURCEMANAGER_USER=root
HDFS_DATANODE_SECURE_USER=yarn
YARN_NODEMANAGER_USER=root

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

(1)启停 HDFS 组件

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

(2)启停 YARN

yarn --daemon start/stop resourcemanager/nodemanager

(3)启停 JobHistory

mr-jobhistory-daemon.sh start historyserver
mr-jobhistory-daemon.sh stop historyserver

3.x 版本的应该会出现下述警告

WARNING: Use of this script to start the MR JobHistory daemon is deprecated.
WARNING: Attempting to execute replacement "mapred --daemon start" instead.

不想看到的话,可以改为使用下述命令

mapred --daemon start historyserver
mapred --daemon stop historyserver

1.7.5. 编写集群常用脚本

集群启停脚本
vim myhadoop.sh

添加内容如下:

#!/bin/bash

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

case $1 in
"start")
        echo "=========== 启动 hadoop 集群 ==========="

        echo "----------- 启动 hdfs -----------------"
        ssh hadoop102 "$HADOOP_HOME/sbin/start-dfs.sh"
        echo "----------- 启动 yarn -----------------"
        ssh hadoop102 "$HADOOP_HOME/sbin/start-yarn.sh"
        echo "----------- 启动 historyserver --------"
        ssh hadoop103 "$HADOOP_HOME/bin/mapred --daemon start historyserver"
;;
"stop")
        echo "=========== 关闭 hadoop 集群 ==========="

        echo "----------- 关闭 historyserver --------"
        ssh hadoop103 "$HADOOP_HOME/bin/mapred --daemon stop historyserver"
        echo "----------- 关闭 yarn -----------------"
        ssh hadoop102 "$HADOOP_HOME/sbin/stop-yarn.sh"
        echo "----------- 关闭 hdfs -----------------"
        ssh hadoop102 "$HADOOP_HOME/sbin/stop-dfs.sh"
;;
*)
    echo "Input Args Error..."
;;
esac

修改脚本执行权限

chmod 777 myhadoop.sh
查看集群所有服务器进程脚本 jpsall
vim jpsall

添加内容如下:

#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
        echo =============== $host ===============
        ssh $host jps 
done

修改脚本执行权限

chmod 777 jpsall
集群分发脚本 xsync

/usr/local/bin 目录下创建 xsync 文件

cd /usr/local/bin
vim xsync

添加内容如下:

#!/bin/bash

#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
 echo no args;
 exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for i in hadoop102 hadoop103 hadoop104
do
 echo ------------------- $i --------------
 rsync -rvl $pdir/$fname $user@$i:$pdir
done

修改脚本执行权限

chmod 777 xsync

1.7.6. 脚本使用

1)启停 Hadoop 集群全部模块

./myhadoop.sh start
./myhadoop.sh stop

2)查看 Hadoop 集群所有进程

./jpsall

运行代码可以看到 hdfs,yarm,historyserver 三个模块全部启动

如果无法使用可能环境变量问题(把 /etc/profile 里的 java 环境变量添加到 ~/.bashrc

vim ~/.bashrc
source ~/.bashrc

查看三台机器所有进程:

hadoop102:NameNode,DataNode,ResourceManager,NodeManager,Jps
hadoop103:DataNode,NodeManager,JobHistoryServer,Jps
hadoop104:DataNode,SecondaryNameNode,NodeManager,Jps

3)分发文件

退回根目录,准备一个 test.txt 文件,

xsync test.txt

在另外两个服务器的根目录下存在 test.txt 即分发成功。

备注

每次重启容器需要重新启动 ssh 服务,同时容器的 IP 与其启动顺序有关会出现不对应的情况,可以自行写一个 shell 文件每次启动完运行一下,例如:

# 找到并打开文件/root/.bashrc
$ vim /root/.bashrc
# 在.bashrc末尾添加如下代码
$ service ssh start

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

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

相关文章

win32汇编环境,对话框程序模版,含文本框与菜单简单功能

;运行效果 ;win32汇编环境,对话框程序模版&#xff0c;含文本框与菜单简单功能 ;直接抄进RadAsm可编译运行。 ;下面为asm文件 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g…

【赵渝强老师】MongoDB文档级别的并发控制

MongoDB在执行写操作时&#xff0c;WiredTiger存储引擎会在文档级别进行并发控制。换句话说在同一时间点上&#xff0c;多个写操作能够修改同一个集合中的不同文档&#xff1b;而当多个写操作修改同一个文档时&#xff0c;必须以序列化方式执行。这意味着如果当前文档正在被修改…

Java开发 PDF文件生成方案

业务需求背景 业务端需要能够将考试答卷内容按指定格式呈现并导出为pdf格式进行存档&#xff0c;作为紧急需求插入。导出内容存在样式复杂性&#xff0c;包括特定的字体&#xff08;中文&#xff09;、字号、颜色&#xff0c;页面得有页眉、页码&#xff0c;数据需要进行表格聚…

C++文件流 例题

问题&#xff1a; 设计一个留言类&#xff0c;实现以下的功能&#xff1a; 1) 程序第一次运行时&#xff0c;建立一个 message.txt 文本文件&#xff0c;并把用 户输入的信息存入该文件&#xff1b; 2) 以后每次运行时&#xff0c;都先读取该文件的内容并显示给用户&#xf…

Xilinx DCI技术

Xilinx DCI技术 DCI技术概述Xilinx DCI技术实际使用某些Bank特殊DCI要求 DCI级联技术DCI端接方式阻抗控制驱动器&#xff08;源端接&#xff09;半阻抗控制阻抗驱动器&#xff08;源端接&#xff09;分体式DCI&#xff08;戴维宁等效端接到VCCO/2&#xff09;DCI和三态DCI&…

「Mac畅玩鸿蒙与硬件51」UI互动应用篇28 - 模拟记账应用

本篇教程将介绍如何创建一个模拟记账应用&#xff0c;通过账单输入、动态列表展示和实时统计功能&#xff0c;学习接口定义和组件间的数据交互。 关键词 UI互动应用接口定义动态列表实时统计数据交互 一、功能说明 模拟记账应用包含以下功能&#xff1a; 账单输入&#xff1…

阴阳师の新手如何速刷5个SP/SSR?!(急速育成)

目标&#xff1a;攒5个SP/SSR式神&#xff0c;参与急速育成&#xff0c;省四个黑蛋&#xff08;想要快速升级技能而且经常上场的式神在攒够5个式神前先不升级&#xff09;【理论上组成&#xff1a;10蓝40蓝预约召唤福利20修行or抽卡】 关键点&#xff1a;蓝票&#xff0c;新手…

Linux应用软件编程-多任务处理(进程,线程)-通信(管道,信号,内存共享)

多任务处理&#xff1a;让系统具备同时处理多个事件的能力。让系统具备并发性能。方法&#xff1a;进程和线程。这里先讲进程。 进程&#xff08;process&#xff09;&#xff1a;正在执行的程序&#xff0c;执行过程中需要消耗内存和CPU。 进程的创建&#xff1a;操作系统在…

使用 TensorFlow 打造企业智能数据分析平台

文章目录 摘要引言平台架构设计核心架构技术栈选型 数据采集与预处理代码详解 数据分析与预测代码详解 数据可视化ECharts 配置 总结未来展望参考资料 摘要 在大数据时代&#xff0c;企业决策正越来越依赖数据分析。然而&#xff0c;面对海量数据&#xff0c;传统分析工具常因…

初始JavaEE篇 —— Maven相关配置

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 目录 介绍 创建第一个Maven项目 Maven的核心功能 项目构建 依赖管理 添加依赖 依赖排除 依赖调解 Maven仓库 配置本地仓…

Linux套接字通信学习

Linux套接字通信 代码源码&#xff1a;https://github.com/say-Hai/TcpSocketLearn/tree/CThreadSocket 在网络通信的时候, 程序猿需要负责的应用层数据的处理(最上层)&#xff0c;而底层的数据封装与解封装&#xff08;如TCP/IP协议栈的功能&#xff09;通常由操作系统、网络协…

职场常用Excel基础01-数据验证

大家好&#xff0c;excel在职场中使用非常频繁&#xff0c;今天和大家一起分享一下excel中数据验证相关的内容~ 在Excel中&#xff0c;数据验证&#xff08;Data Validation&#xff09;是一项非常有用的功能&#xff0c;它可以帮助用户限制输入到单元格中的数据类型和范围&am…

建造者设计模式学习

1.介绍 建造者模式是一种创建型设计模式&#xff0c;它将一个复杂对象的构建过程与它的表示分离&#xff0c;使得相同的构建过程可以创建不同的表示。通过分步骤地构建对象&#xff0c;建造者模式提供了更细粒度的控制和灵活性&#xff0c;特别适合需要灵活创建复杂对象的场景…

ROS2+OpenCV综合应用--10. AprilTag标签码追踪

1. 简介 apriltag标签码追踪是在apriltag标签码识别的基础上&#xff0c;增加了小车摄像头云台运动的功能&#xff0c;摄像头会保持标签码在视觉中间而运动&#xff0c;根据这一特性&#xff0c;从而实现标签码追踪功能。 2. 启动 2.1 程序启动前的准备 本次apriltag标签码使…

mysql乱码、mysql数据中文问号

网上排出此错误方法的很多&#xff0c;但是 都不简洁&#xff0c;找不到根本原因 主要排查两点&#xff1a; 1.代码中jdbc链接的编码规则 urljdbc:mysql://localhost:3306/title?useUnicodetrue&amp;characterEncodingutf8 将characterEncoding设置为utf8 2.设置mysq…

Presto-简单了解-230403

presto是什么了解一下&#xff1a; 秒级查询引擎&#xff08;不做存储&#xff09;&#xff0c;GB-PB级不依赖于yarn&#xff0c;有自己的资源管理和执行计划支持多种数据源&#xff1a;hive、redis、kafka presto架构 presto优缺点 presto优点 内存到内存的传输&#xff0…

openGauss连接是报org.opengauss.util.PSQLException: 尝试连线已失败

安装好高斯数据库后然后用java连接时报如下错误: 解决方法: 在openGauss数据库的安装路径下/opt/opengauss/data/single_node&#xff08;这个路径根据自己实际情况变化&#xff09;有个pg_hba.conf文件&#xff0c;修改里面host内容如下&#xff0c;我这里设置的是所有ip都能…

mybatis-plus自动填充时间的配置类实现

mybatis-plus自动填充时间的配置类实现 在实际操作过程中&#xff0c;我们并不希望创建时间、修改时间这些来手动进行&#xff0c;而是希望通过自动化来完成&#xff0c;而mybatis-plus则也提供了自动填充功能来实现这一操作&#xff0c;接下来&#xff0c;就来了解一下mybatis…

【Java项目】基于SpringBoot的【人职匹配推荐系统】

【Java项目】基于SpringBoot的【人职匹配推荐系统】 技术简介&#xff1a;本系统使用采用B/S架构、Spring Boot框架、MYSQL数据库进行开发设计。 系统简介&#xff1a;人职匹配推荐系统分为管理员和用户、企业三个权限子模块。 管理员所能使用的功能主要有&#xff1a;首页、个…

Flutter 调试环境下浏览器网络请求跨域问题解决方案

本篇文章主要讲解&#xff0c;Flutter调试环境情况下&#xff0c;浏览器调试报错跨域问题的解决方法&#xff0c;通过本篇文章你可以快速掌握Flutter调试环境情况下的跨域问题。 日期&#xff1a;2024年12月28日 作者&#xff1a;任聪聪 报错现象&#xff1a; 报文信息&#xf…