一篇文章带你学会Hadoop-3.3.4集群部署

目录

​编辑

一、Hadoop集群部署

二、基础设施配置

2.1 设置网络

 2.1.1 设置主机名称

2.1.2 设置hosts配置文件

2.1.3 关闭防火墙

 2.1.4 关闭selinux

 2.1.5 更换语言环境

 2.1.6 更换时区

 2.1.7 ssh免密

2.1.7.1 生成.ssh文件夹

2.1.7.2 进入文件夹

2.1.7.3 生成密码和私钥

2.1.7.4 免密授权

三、软件安装

3.1 jdk 安装

3.1.1 解压jdk

3.1.2 移动解压目录

3.1.3 配置jdk,设置环境变量

3.1.4 修改系统默认JDK

3.1.4.1 查看系统当前默认配置

3.1.4.2 把自己安装的JDK加入系统备选中

3.1.4.3 将自己的JDK作为java首选

3.1.5 检查环境使用的JDK

3.1.6 分发JDK到其他节点

3.1.6.1 分发JDK

3.1.6.2 分发环境变量文件

3.1.7 分发环境生效

3.2 安装zookeeper 集群

3.2.1 解压

3.2.2 移动解压目录

3.2.3 配置zookeeper

3.2.3.1 拷贝生成zoo.cfg

3.2.3.2 建立zookeeper 目录

3.2.3.3 修改zoo.cfg文件

3.2.3.4 创建myid文件

3.2.3.5 设置环境变量

3.2.3.6 分发zookeeper

3.2.3.7 分发环境变量文件

3.2.3.8 生效环境

3.2.3.9 启动zookeeper

3.3 安装hadoop

3.3.1 解压hadoop

3.3.2 移动解压目录

3.3.3 配置hadoop

3.3.3.1 设置Hadoop JAVA_HOME

3.3.3.2 设置YARN JAVA_HOME

3.3.3.3 设置core-site.xml文件

3.3.3.4 设置hdfs-site.xml 文件

3.3.3.5 设置mapred-site.xml 文件

3.3.3.6 设置yarn-site.xml文件

3.3.3.7 修改workers文件

3.3.3.8 修改 start-dfs.sh 和stop-dfs.sh 文件

3.3.3.9 修改start-yarn.sh和stop-yarn.sh文件

3.3.4 分发复制到其他节点

3.4.4.1 分发Hadoop文件

3.4.4.2 分发/etc/profile 文件

3.4.5 启动hadoop集群

3.4.5.1 初始化namenode

3.4.5.2 初始化zk中的ha状态

3.4.5.3 启动整个集群

3.3.5 集群验证及简单使用

3.3.5.1 查看yarn 集群状态

3.3.5.2 查看namenode集群状态

3.3.5.3 访问hdfs 集群页面

3.3.5.4 访问yarn 集群页面

3.3.5.5 简单使用

3.3.5.5.1 创建bigdata 目录

3.3.5.5.2 创建 /user/root目录


一、Hadoop集群部署

系统环境描述:本教程基于CentOS 8.0版本虚拟机

机器节点信息:

软件版本:

jdk-8u211-linux-x64.tar.gz

apache-zookeeper-3.8.2-bin.tar.gz

hadoop-3.3.4.tar.gz

提示:如果想入门hadoop,特别是集群部署,hadoop涉及的角色还是比较多的,建议先从总体架构抓起,先熟悉总体架构,再熟悉HA部署模式的相关理论和知识,然后再跟着部署的过程中就会有豁然开朗的感觉,印象也会比较深刻,推荐先看下我前面的hadoop系列的理论文章YARN框架和其工作原理流程介绍_夜夜流光相皎洁_小宁的博客-CSDN博客、HDFS介绍_夜夜流光相皎洁_小宁的博客-CSDN博客、MapReduce介绍_夜夜流光相皎洁_小宁的博客-CSDN博客

二、基础设施配置

2.1 设置网络

 2.1.1 设置主机名称

分别登录进入 192.168.31.215、192.168.31.8、192.168.31.9、192.168.31.167、192.168.31.154等节点服务器,执行命令:

hostnamectl set-hostname master

hostnamectl set-hostname node1

hostnamectl set-hostname node2

hostnamectl set-hostname node3

hostnamectl set-hostname node4

2.1.2 设置hosts配置文件

vi /etc/hosts

192.168.31.215  master
192.168.31.8    node1
192.168.31.9    node2
192.168.31.167  node3
192.168.31.154  node4

2.1.3 关闭防火墙

systemctl stop firewalld
systemctl stop iptables

#永久关闭防火墙

systemctl disable firewalld

 2.1.4 关闭selinux

#临时关闭
setenforce 0
#永久关闭

vim /etc/selinux/config 然后设置 SELINUX=disabled

 2.1.5 更换语言环境

dnf install glibc-langpack-zh.x86_64
echo LANG=zh_CN.UTF-8 > /etc/locale.conf
source /etc/locale.conf

 2.1.6 更换时区

timedatectl list-timezones
timedatectl set-timezone Asia/Shanghai
timedatectl

 2.1.7 ssh免密

2.1.7.1 生成.ssh文件夹

ssh  localhost

2.1.7.2 进入文件夹

cd  /root/.ssh/

2.1.7.3 生成密码和私钥

ssh-keygen -t rsa

一路按回车键就行

2.1.7.4 免密授权

ssh-copy-id root@master

说明:在本环境中,我们需要将master的密钥,发送给其他node1、node2、node3、node4节点,其中,
master和node1要相互免密,原因是:1)启动start-dfs.sh脚本的机器需要将公钥分发给别的节点
2)在HA模式下,每一个NN身边会启动ZKFC,ZKFC会用免密的方式控制自己和其他NN节点的NN状态

三、软件安装

3.1 jdk 安装

3.1.1 解压jdk

tar -zxvf jdk-8u211-linux-x64.tar.gz

3.1.2 移动解压目录

mv jdk1.8.0_211/ /usr/local/

3.1.3 配置jdk,设置环境变量

export JAVA_HOME=/usr/local/jdk1.8.0_211
export PATH=$PATH:${JAVA_HOME}/bin
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

3.1.4 修改系统默认JDK

因为我安装的CentOS 8.0 操作系统,默认安装了自带的open jdk,显然不满足我们的需要,我又不想卸载open jdk,所以才选择使用update-alternatives来管理JDK,如果你们的环境没有多版本jdk 管理需求,可忽略本步骤。

3.1.4.1 查看系统当前默认配置

输入命令:update-alternatives --display java

3.1.4.2 把自己安装的JDK加入系统备选中

update-alternatives --install /usr/bin/java java /usr/local/jdk1.8.0_211/bin/java 1800265

-- 提示: 1800265为执行update-alternatives --display java 后看到的系统默认jdk的权限编号

3.1.4.3 将自己的JDK作为java首选

update-alternatives --config java

然后输入+2 回车。

3.1.5 检查环境使用的JDK

java -version

成功配置了我们自己安装的java版本

3.1.6 分发JDK到其他节点

3.1.6.1 分发JDK

scp -r /usr/local/jdk1.8.0_211/ root@node1:/usr/local/
scp -r /usr/local/jdk1.8.0_211/ root@node2:/usr/local/
scp -r /usr/local/jdk1.8.0_211/ root@node3:/usr/local/
scp -r /usr/local/jdk1.8.0_211/ root@node4:/usr/local/

3.1.6.2 分发环境变量文件

scp /etc/profile root@node1:/etc/profile
scp /etc/profile root@node2:/etc/profile
scp /etc/profile root@node3:/etc/profile
scp /etc/profile root@node4:/etc/profile

3.1.7 分发环境生效

node1、node2、node3、node4虚拟机上执行 source /etc/profile 使环境生效
提示:如果虚拟机默认了JDK,需要执行3.1.4小节的命令,切换系统默认JDK为你自己安装的JDK

3.2 安装zookeeper 集群

3.2.1 解压

tar -zxvf apache-zookeeper-3.8.2-bin.tar.gz

3.2.2 移动解压目录

mv apache-zookeeper-3.8.2-bin /usr/local/

3.2.3 配置zookeeper

3.2.3.1 拷贝生成zoo.cfg

cd /usr/local/apache-zookeeper-3.8.2-bin/conf

cp zoo_sample.cfg zoo.cfg

3.2.3.2 建立zookeeper 目录

cd /usr/local/apache-zookeeper-3.8.2-bin/

mkdir zkdata
mkdir logs

3.2.3.3 修改zoo.cfg文件

vim zoo.cfg

--zoo.cfg 添加内容:
dataDir=/usr/local/apache-zookeeper-3.8.2-bin/zkdata
dataLogDir=/usr/local/apache-zookeeper-3.8.2-bin/logs
server.1=node2:2888:3888
server.2=node3:2888:3888
server.3=node4:2888:3888

3.2.3.4 创建myid文件

node2、node3、node4虚拟机,分别在/usr/local/apache-zookeeper-3.8.2-bin/zkdata目录下创建myid
echo 1 > myid  //node2
echo 2 > myid  //node3
echo 3 > myid  //node4

3.2.3.5 设置环境变量

vim /etc/profile

export ZK_HOME=/usr/local/apache-zookeeper-3.8.2-bin
export PATH=$PATH:$ZK_HOME/bin

3.2.3.6 分发zookeeper

scp -r /usr/local/apache-zookeeper-3.8.2-bin/ root@node3:/usr/local/
scp -r /usr/local/apache-zookeeper-3.8.2-bin/ root@node4:/usr/local/

3.2.3.7 分发环境变量文件

scp /etc/profile root@node3:/etc/profile
scp /etc/profile root@node4:/etc/profile

3.2.3.8 生效环境

注意三台虚拟机分贝执行source /etc/profile 使环境生效

3.2.3.9 启动zookeeper

分别在node2、node3、node4节点启动zookeeper 服务
命令:zkServer.sh start

通过ps -ef|grep zookeeper 指令,我们查看到我们的zookeeper已经启动成功。

3.3 安装hadoop

3.3.1 解压hadoop

tar -zxvf hadoop-3.3.4.tar.gz

3.3.2 移动解压目录

mv hadoop-3.3.4/ /usr/local/

3.3.3 配置hadoop

3.3.3.1 设置Hadoop JAVA_HOME

cd /usr/local/hadoop-3.3.4/etc/hadoop

vim hadoop-env.sh

export JAVA_HOME=/usr/local/jdk1.8.0_211

3.3.3.2 设置YARN JAVA_HOME

vim yarn-env.sh

export JAVA_HOME=/usr/local/jdk1.8.0_211

3.3.3.3 设置core-site.xml文件

vim core-site.xml

<property><name>fs.defaultFS</name><value>hdfs://mycluster</value>
</property><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop-3.3.4/tmp</value>
</property><property><name>ha.zookeeper.quorum</name><value>node2:2181,node3:2181,node4:2181</value>
</property><property><name>hadoop.proxyuser.root.hosts</name><value>*</value>
</property><property><name>hadoop.proxyuser.root.groups</name><value>*</value>
</property>

3.3.3.4 设置hdfs-site.xml 文件

vim hdfs-site.xml

<property><name>dfs.replication</name><value>3</value>
</property><property><name>dfs.namenode.name.dir</name><value>/usr/local/hadoop-3.3.4/ha/dfs/name</value>
</property><property><name>dfs.datanode.data.dir</name><value>/usr/local/hadoop-3.3.4/ha/dfs/data</value>
</property><property><name>dfs.namenode.checkpoint.dir</name><value>/usr/local/hadoop-3.3.4/ha/dfs/secondary</value>
</property><!-- 以下是  一对多,逻辑到物理节点的映射 --><property><name>dfs.nameservices</name><value>mycluster</value>
</property><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value>
</property><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>master:9000</value>
</property><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>master:50070</value>
</property><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>node1:9000</value>
</property><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>node1:50070</value>
</property><!--节点宕机超时设置,默认10分钟+30秒,dfs.namenode.heartbeat.recheck-interval 单位是毫秒,dfs.heartbeat.interval单位是秒 -->
<property><name>dfs.namenode.heartbeat.recheck-interval</name><value>50000</value>
</property>
<property><name>dfs.heartbeat.interval</name><value>3</value>
</property><!-- 以下是JN在哪里启动,数据存那个磁盘 -->
<property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://master:8485;node1:8485;node3:8485/mycluster</value>
</property>
<property><name>dfs.journalnode.edits.dir</name><value>/usr/local/hadoop-3.3.4/ha/dfs/jn</value>
</property><!-- HA角色切换的代理类和实现方法,我们用的ssh免密 --><property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--HA模式下,要设置 shell(true) 这个值,不然namenode active节点宕机后,standby不会切换 -->
<property><name>dfs.ha.fencing.methods</name><value>sshfence</value><value>shell(true)</value>
</property>
<property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_dsa</value>
</property><property><name>dfs.ha.fencing.ssh.connect-timeout</name><value>30000</value>
</property><!-- 开启自动化: 启动zkfc -->
<property><name>dfs.ha.automatic-failover.enabled</name><value>true</value>
</property><!-- 开启webhdfs -->
<property><name>dfs.webhdfs.enabled</name><value>true</value>
</property>

3.3.3.5 设置mapred-site.xml 文件

vim mapred-site.xml

<property><name>mapreduce.framework.name</name><value>yarn</value>
</property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.3.4</value>
</property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.3.4</value>
</property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.3.4</value>
</property><property><name>mapreduce.map.memory.mb</name><value>2048</value>
</property><property><name>mapreduce.reduce.memory.mb</name><value>2048</value>
</property><property><name>mapreduce.map.java.opts</name><value>-Xmx1024m</value>
</property><property><name>mapreduce.reduce.java.opts</name><value>-Xmx1024m</value>
</property>

3.3.3.6 设置yarn-site.xml文件

vim yarn-site.xml

<property><name>yarn.resourcemanager.ha.enabled</name><value>true</value>
</property><property><name>yarn.resourcemanager.zk-address</name><value>node2:2181,node3:2181,node4:2181</value>
</property><property><name>yarn.resourcemanager.cluster-id</name><value>ningzhaosheng</value>
</property><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value>
</property><property><name>yarn.resourcemanager.hostname.rm1</name><value>node3</value>
</property>
<!-- 指定rm1 的web端地址-->
<property><name>yarn.resourcemanager.webapp.address.rm1</name><value>node3:8088</value>
</property>
<!--指定rm1的内部通讯地址 --><property><name>yarn.resourcemanager.address.rm1</name><value>node3:8032</value>
</property><property><name>yarn.resourcemanager.hostname.rm2</name><value>node4</value>
</property>
<!-- 指定rm2 的web端地址-->
<property><name>yarn.resourcemanager.webapp.address.rm2</name><value>node4:8088</value>
</property>
<!--指定rm2的内部通讯地址 --><property><name>yarn.resourcemanager.address.rm2</name><value>node4:8032</value>
</property><property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value>
</property><property><name>yarn.resourcemanager.ha.automatic-failover.enabled</name><value>true</value>
</property><property><name>yarn.resourcemanager.store.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property><property><name>yarn.nodemanager.resource.memory-mb</name><value>4096</value>
</property>

3.3.3.7 修改workers文件

vim workers

#添加hostname
master
node1
node2
node3
node4

3.3.3.8 修改 start-dfs.sh 和stop-dfs.sh 文件

start-dfs.sh、stop-dfs.sh文件头部加入:

HDFS_ZKFC_USER=root
HDFS_JOURNALNODE_USER=root
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

3.3.3.9 修改start-yarn.sh和stop-yarn.sh文件

start-yarn.sh、stop-yarn.sh文件头部加入:
YARN_RESOURCEMANAGER_USER=root
HDFS_DATANODE_SECURE_USER=root
YARN_NODEMANAGER_USER=root

3.3.4 分发复制到其他节点

3.4.4.1 分发Hadoop文件

scp -r /usr/local/hadoop-3.3.4/ root@node1:/usr/local/
scp -r /usr/local/hadoop-3.3.4/ root@node2:/usr/local/
scp -r /usr/local/hadoop-3.3.4/ root@node3:/usr/local/
scp -r /usr/local/hadoop-3.3.4/ root@node4:/usr/local/

3.4.4.2 分发/etc/profile 文件

scp /etc/profile root@node1:/etc/profile

scp /etc/profile root@node2:/etc/profile

scp /etc/profile root@node3:/etc/profile

scp /etc/profile root@node4:/etc/profile

注意:分发环境配置文件后,记得在各节点执行:source /etc/profile使环境配置生效

3.4.5 启动hadoop集群

3.4.5.1 初始化namenode

hdfs namenode -format

提示:初次启动需要,后续重启服务不再需要

3.4.5.2 初始化zk中的ha状态

hdfs zkfc  -formatZK

提示:初次启动需要,后续重启服务不再需要

3.4.5.3 启动整个集群

start-all.sh start

3.3.5 集群验证及简单使用

3.3.5.1 查看yarn 集群状态

yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2

查看状态显示,一个active状态,一个standby状态,启动正常。

3.3.5.2 查看namenode集群状态

hdfs haadmin -ns mycluster -getAllServiceState

查看状态显示,一个active状态,一个standby状态,符合预期,启动正常。

3.3.5.3 访问hdfs 集群页面

http://master:50070/

通过页面访问到了hadoop集群页面,且显示我们的节点都在线,启动正常。

3.3.5.4 访问yarn 集群页面

http://node3:8088/cluster

成功访问到了yarn调度集群页面,yarn启动正常。

3.3.5.5 简单使用

3.3.5.5.1 创建bigdata 目录

hdfs dfs -mkdir /bigdata

3.3.5.5.2 创建 /user/root目录

hdfs dfs -mkdir  -p  /user/root

今天Hadoop3.3.4集群部署的相关内容就分享到这里,如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!

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

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

相关文章

MySQL数据库查缺补漏——基础篇

MySQL数据库查缺补漏-基础篇 基础篇 net start mysql80[服务名] net stop mysql80 create database pshdhx default charset utf8mb4; 为什么不使用utf8&#xff1f;因为其字符占用三个字节&#xff0c;有四个字节的字符&#xff0c;所有需要设置为utf8mb4; 数值类型&…

Windows10/11无线网卡WIFI驱动详细下载安装教程

官网下载WIFI驱动 《intel官网》 找到下载Windows 10 and Windows 11* WiFi package drivers 查看详细信息 下载对应操作系统的WIFI驱动 安装驱动&#xff0c;然后重启电脑即可。

【操作系统】聊聊文件系统是如何工作的

文件系统其实是操作系统中存储的核心、计算、网络。除了使用寄存器、内存可以临时存储数据&#xff0c;使用磁盘持久化存储更重要。 磁盘为系统提供了数据持久化功能。文件系统在磁盘的基础上&#xff0c;抽象出了一个管理文件的树状结构 索引节点和目录项 Linux中一切皆是文…

HarmonyOS应用开发—资源分类与访问

应用开发过程中&#xff0c;经常需要用到颜色、字体、间距、图片等资源&#xff0c;在不同的设备或配置中&#xff0c;这些资源的值可能不同。 应用资源&#xff1a;借助资源文件能力&#xff0c;开发者在应用中自定义资源&#xff0c;自行管理这些资源在不同的设备或配置中的表…

7.4.4 【MySQL】索引字符串值的前缀

我们知道一个字符串其实是由若干个字符组成&#xff0c;如果我们在 MySQL 中使用 utf8 字符集去存储字符串的话&#xff0c;编码一个字符需要占用 1~3 个字节。假设我们的字符串很长&#xff0c;那存储一个字符串就需要占用很大的存储空间。在我们需要为这个字符串列建立索引时…

一键集成prometheus监控微服务接口平均响应时长

一、效果展示 二、环境准备 prometheus + grafana环境 参考博文:https://blog.csdn.net/luckywuxn/article/details/129475991 三、导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter

UE5学习笔记(1)——从源码开始编译安装UE5

目录 0. 前期准备1. Git bash here2. 克隆官方源码。3. 选择安装分支4. 运行Setup.bat&#xff0c;下载依赖文件5. 运行GenerateProjectFiles.bat生成工程文件6. 生成完成&#xff0c;找到UE5.sln/UE4.sln7. 大功告成 0. 前期准备 0.1 在windows的话&#xff0c;建议装一个Git…

Markdown(MD)——Typora Markdown安装教程(2023九月亲测可用!!!)

目录 一、简介 1.Markdown简介 2.Markdown特点 3.Typora简介 二、安装教程 1.下载安装包 2.解压到文件夹 3.安装 4.破解 ​编辑5.激活 三、Markdown常用语法 1.常用语法 2.用于编辑LaTex公式 四、其他编辑器 一、简介 1.Markdown简介 Markdown 是一种轻量级标记语…

WPF——Control与Template理解

文章目录 一、前言二、控件三、模板3.1 DataTemplate3.2 ControlTemplate3.3 ContentPresenter 四、结语 一、前言 最近又翻看了下刘铁猛的《深入浅出WPF》&#xff0c;发现对模板章节中的部分内容有了更深的体会&#xff0c;所以写篇文扯扯。 文章标题是Control与Template&a…

企业级数据仓库-理论知识

D3 AM 大数据中间件 Hive&#xff1a;将SQL转化成分布式Map/Reduce进行运算&#xff0c;也支持转换成Spark,需要单独安装Hive集群才能访问Spark,支持60%的SQL&#xff0c;延迟比较大。SparkSQL:属于Spark生态圈&#xff0c;Hive on Sqark。HBase: NoSQL,高并发读&#xff0c;适…

c语言进阶部分详解(指针进阶1)

大家好&#xff01;指针的初阶内容我已经写好&#xff0c;可移步至我的文章&#xff1a;c语言进阶部分详解&#xff08;指针初阶&#xff09;_总之就是非常唔姆的博客-CSDN博客 基本内容我便不再赘述&#xff0c;直接带大家进入进阶内容&#xff1a; 目录 一.字符指针 1.讲解…

Mac 安装软件各种报错解决方案

Mac 安装软件各种报错解决方案 文章目录 Mac 安装软件各种报错解决方案一. 打开允许“允许任何来源”二. 无法打开"xxx"&#xff0c;因为它不是从App Store下载三. 无法打开"xxx"&#xff0c;因为 Apple无法检查其是否包含恶意软件。四. "xxx"已…

【入门篇】ClickHouse最优秀的开源列式存储数据库

文章目录 一、什么是ClickHouse&#xff1f;OLAP场景的关键特征列式数据库更适合OLAP场景的原因输入/输出CPU 1.1 ClickHouse的定义与发展历程1.2 ClickHouse的版本介绍 二、ClickHouse的主要特性2.1 高性能的列式存储2.2 实时的分析查询2.3 高度可扩展性2.4 数据压缩2.5 SQL支…

C语言——通讯录管理系统

通讯录管理系统项目简介 功能说明 控制台黑窗口实现程序需要满足以下几个功能 程序开始运行时首先显示选择菜单界面&#xff0c;根据用户输入确定实现何种功能 程序界面 代码实现 多文件实现 和之前写的实战项目类似&#xff0c;这里同样采用多文件实现的方式 多文件写代码…

各种电机驱动原理

步进电机 步进电机参考资料 野火官方文档 步进电机驱动原理 上面参考文档中有的内容就不写了&#xff0c;写一下我自己的总结吧。 说明&#xff1a; 电机驱动器输入信号有电机转动方向信号DIR&#xff0c;电机转速信号PWM&#xff0c;电机使能信号EN&#xff1b;电机驱动器…

S7-1200PLC和LED电子看板通信(TCP/IP)

S7-200SMART PLC和LED电子看板通信应用,请查看下面文章链接: SMART 200 PLC UDP通讯应用LED看板_RXXW_Dor的博客-CSDN博客开放式用户通信 (OUC) 库:数据解析:https://rxxw-control.blog.csdn.net/article/details/121424897这篇博客我们主要介绍S7-1200PLC和LED电子看板通…

servlet 引用src目录下子目录的class文件方法

1、MyServlet class文件所处的目录结构如下&#xff1a; 2、如果在url里直接引用是不行的&#xff0c;http://localhost:9092/GetRequest_Web_exploded/MyServlet 3、需要在web.xml映射后才行&#xff1a; MyServlet com.example.MyServlet <servlet-mapping><ser…

HI_NAS linux 记录

dev/root 100% 占用解决记录 通过下面的命令查看各文件夹 大小 sudo du --max-depth1 -h # 统计当前文件夹下各个文件夹的大小显示为M 最终发现Var/log 占用很大空间 发现下面两个 log 占用空间很大&#xff0c;直接 rm-rf 即可 HI NAS python3 记录 # 安装pip3 sudo apt u…

Linux下C语言使用 netlink sockets与内核模块通信

netlink简介 Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。在Linux标准内核中&#xff0c;系统默认集成了很多netlink实例&#xff0c;比如日志上报、路由系统等&#xff0c;netlink消息是双向的&a…

【golang】调度系列之P

调度系列 调度系列之goroutine 调度系列之m 在前面两篇中&#xff0c;分别介绍了G和M&#xff0c;当然介绍的不够全面&#xff08;在写后面的文章时我也在不断地完善前面的文章&#xff0c;后面可能也会有更加汇总的文章来统筹介绍GMP&#xff09;。但是&#xff0c;抛开技术细…