【Hadoop】一、Hadoop入门:基础配置、集群配置、常用脚本

基础设置

网络设置

创建好一个 centos 虚拟机,修改网络配置文件:

/etc/sysconfig/network-scripts/ifcfg-ens33

修改 BOOTPROTO 为 static

以及添加 IPADDR、GATEWAY、DNS1

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="896ed56e-1848-44a7-98ed-244ebc978e1c"
DEVICE="ens33"
ONBOOT="yes"IPADDR=192.168.202.142
GATEWAY=192.168.202.1
DNS1=192.168.202.1

修改主机名称:

/etc/hostname

修改为 hadoop100

在主机名映射文件中添加映射

/etc/hosts
192.168.202.142 hadoop100
192.168.202.143 hadoop101
192.168.202.144 hadoop102
192.168.202.145 hadoop103
192.168.202.146 hadoop104
192.168.202.147 hadoop105
192.168.202.148 hadoop106
192.168.202.149 hadoop107
192.168.202.150 hadoop108

关闭防火墙

systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld.service

之后检查 ifconfgi 中 ens33 的ip、hostname、ping www.baidu.com 进行检查,都通过则证明网络配置成功

文件设置

配置用户 root 权限:
打开

/etc/sudoers

并在这个位置这样配:

root    ALL=(ALL)       ALL## Allows members of the 'sys' group to run networking, software, 
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALLhadoop ALL=(ALL)      NOPASSWD:ALL

之后我们在 hadoop 用户下面的 sudo 指令就会生效

切换到 opt 目录

sudo rm -rf rh

在 opt 目录下进行后续操作:

创建两个目录module 用于存放安装包、software 用与存放软件
sudo mkdir -p module
sudo mkdir -p software

现在我们创建的这两个文件是属于 root 的,所以我们要修改这两个目录的归属:

sudo chown hadoop:hadoop module
sudo chown hadoop:hadoop software

将这两个目录的归属全部改为 hadoop(自己的用户)

之后我们需要将自带的 jdk 删除:

rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

注意这句话的前半句话意思是找到所有文件名带有 java 的文件,后半句话是依次独立删除

注意这个操作必须在 root 的场景下进行

  • 虚拟机克隆:注意克隆完整虚拟机

    克隆三台虚拟机,之后修改其 网络配置文件中的 ip 地址和主机名

JDK与Hadoop的安装

hadoop下载地址:

https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/

将下载好的文件发送到虚拟机的 /opt/software 路径中

将 JDK 压缩包解压到 module 目录下,同时配置环境变量

环境变量位置的配置,我们的常用做法是在 /etc/profile 下进行配置,但是此处我们选择在 /etc/profile.d 目录下新建 .sh 文件的方式进行配置,这样也可以配置的原因是 /etc/profile 文件中声明了遍历 /etc/profile.d 目录中所有以 .sh 结尾的文件,将其所有的文件都遍历执行一遍

在 /etc/profile.d 目录中创建:

my_env.sh

#JAVA_ENV
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$JAVA_HOME/bin

之后还是需要进行 source 操作 就可以使用 java -version 看到 jdk 版本了

解压 Hadoop 到 module 目录,之后同样在 my_env.sh 上配置环境变量,注意 hadoop 的环境变量需要配置 /bin 和 /sbin

# BASE_PATH
export PATH=/bin:/usr/bin:$PATH#JAVA_ENV
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin# HADOOP
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

配置好 hadoop 之后,文件应该是上面这样

  • hadoop基础文件结构介绍

    hadoop 文件中 bin 目录中存放hadoop中可执行的许多命令,例如:hdfs、yarn、mapred 等

    etc/hadoop 目录中存放配置文件信息,关键的配置文件信息有:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

    sbin 目录中存放的是 我们需要使用到的一些命令:例如 start-all.sh 这种

  • 分布式介绍

    本地分布式:仅用于测试,数据存储在本地

    伪分布式:仅有一台服务器,假装是很多台服务器,数据存储在 HDFS

    完全分布式:有很多服务器,数据分布式存储在多台服务器上,是标准的分布式

wordcount 案例测试:

随意新建一个 txt 里面补充一些单词

之后像下面这样执行就可以尝试进行一个大数据计算

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput

后面的wcoutput 是输出文件夹,要求这个输出文件夹不存在,里面会生成两个文件,cat 其中一个文件就可以看到结果,另一个文件是成功或者失败的标识。

使用SCP 命令编写集群文件分发脚本

首先保证目录是创建好的

之后使用下面的命令将 102 中的文件传入 自己,自己传给别人,别人传给别人

scp -r /opt/module/jdk1.8.0_212/ hadoop@hadoop102:/opt/module
scp -r hadoop@hadoop102:/opt/module/jdk1.8.0_212 /opt/module
scp -r hadoop@hadoop102:/opt/module/hadoop-3.1.3 hadoop@hadoop104:/opt/module

但是如果我们不需要全部复制,而是需要同步文件内容,比如说有某个文件修改了,就可以使用同步命令进行修正:rsync…(注意:第一次同步等同于拷贝)具体用法和远程同步的方法和 scp 命令一致

rsync -av /from /to

但要注意 rsync 要求目的地和出发地不能都是远程连接

  • 我们创建一个脚本(在 ~/bin 下创建),实现同步两台机器上的文件内容,致使文件内容的同步,同时实现配置环境变量以达到在任意位置都可以使用

    #!/bin/bash# 检查是否至少有一个参数传递给脚本
    if [ "$#" -lt 1 ]; thenecho "Not Enough Argument!"exit 1 # 通常使用非零值来表示异常退出
    fi# 遍历所有集群中的机器
    for host in hadoop102 hadoop103 hadoop104
    doecho "=================== $host ==================="# 遍历所有目录,挨个发送for file in $@doif [ -e $file ]; then# 获取父目录pdir=$(cd -P $(dirname $file); pwd)# 获取当前文件名称fname=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$fname $host:$pdirelseecho  "$file does not exists"fidonedone
    

    这个脚本这样子就实现了 xsync from 直接在另两台机器上的对应位置直接进行同步的操作】

接下来,就使用这个脚本来同步环境变量信息 /etc/profile.d/my-env.sh

sudo ./xsync /etc/profile.d/my_env.sh

之后就同步完成了

配置 ssh 免密登录

我们为三台机器实现免密登录

在家目录中键入下面的命令可以生成一个密钥对,这个密钥对存储在 .ssh 文件夹中,公钥为 id_rsa.pub 这个公钥是要发送到所有主机的(保存在 连接目的地主机的 authorized 文件中),id_rsa 则为私钥,私钥自己保存

ssh-keygen -t rsa

之后进行公钥的拷贝(注意自己也要拷贝):

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

对三台机器都这样进行操作,就可以实现三台机器的相互免密登录

注意,这里的免密登录是针对于 用户的,也就是说,这个登录在 root 上也需要再配置一遍

集群配置

集群结构:

Hadoop 集群结构:

  • hadoop102:
    • HDFS:NameNode、DataNode
    • YARN:NodeManager
  • hadoop103:
    • HDFS:DataNode
    • YARN:ResourceManager、NodeManager
  • hadoop104:
    • HDFS:SecondaryNameNode、DataNode
    • YARN:NodeManager

配置 core-site.xml:

这里第一个是 hadoop 的对内数据传输暴露地址,第二个是hadoop数据文件的存储地址

<configuration><property><name>fs.defaultFS</name><value>hdfs://hadoop102:8020</value></property><property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop-3.1.3/data</value></property>
</configuration>

配置 hdfs-site.xml:

这里的两个配置分别是 hadoop外部访问地址和secondarynamenode的地址:

<configuration><property><name>dfs.namenode.http-address</name><value>hadoop102:9870</value></property><property><name>dfs.namenode.secondary.http-address</name><value>hadoop104:9868</value></property>
</configuration>

配置 yarn-site.xml:

第一个是建议的配置、第二个是 resourcemanager的地址、第三个是环境变量白名单

<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.hostname</name><value>hadoop103</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>
</configuration>

配置 mapred-site.xml 令 mapreduce在yarn 上运行

<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>

之后进行分发:

xsync /opt/module/hadoop-3.1.3/etc/hadoop

workers的配置:只有配置了 workers,我们的启动命令才能够找到正确的服务器地址进行启动

/opt/module/hadoop-3.1.3/etc/hadoop/workers

hadoop102
hadoop103
hadoop104

之后进行分发

xsync workers

初始化,只有第一次启动需要初始化

hdfs namenode -format

初始化完毕后,hadoop-3.1.3 中会多出两个文件,分别是 data 和 logs

此时我们使用:

.../sbin/start-dfs.sh

就可以启动集群的hadoop服务了,这里启动之后只会启动 hadoop相关的服务:

NameNode、DataNode 和 SecondaryNameNode

此时还差 ResourceManager、NodeManager,这个需要我们在 103服务器中使用

.../sbin/start-yarn.sh 

命令进行启动

此时我们可以打开两个页面,一个是 hdfs 的文件管理界面,另一个是yarn的资源调度界面:

hadoop102:9870
hadoop103:8088

集群基本测试

创建目录

hadoop fs -mkdir /wcinput

我们将 wordcount 上传

hadoop fs -put wcinput/test.txt /wcinput

之后,我们可以在前端展示界面找到我们的文件,这个文件的真实存储是存在于 hadoop的 data目录内的,其原路径是:/data/dfs/data/current/xxxxxx/current/finalized/subdir0/subdir0 小文件会存储在一块中,大文件会存储在多块中,我们可以使利用 cat xxx >> tmp.tar.gz 的方式来追加,从而实现拼接处源文件的效果,但这只是一个尝试,正常不会这么做。

注意,在默认情况下,我们上传上去的数据会被复制两份,共计三份存储在不同的服务器上

此时,我们运行一下 wordcount 程序尝试一下,注意这里的所有操作都是基于 HDFS 文件系统的

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /output

此时程序正常运行

  • 注意此处:若集群因为配置失败或操作不当删除导致集群无法启动

    应先关闭集群:sbin/stop-dfs.sh、sbin/stop-yarn.sh

    之后删除每个集群上的 data 和 logs 命令,然后初始化:hdfs namenode -format

    之后再启动就可以了,但是这样会删除历史记录。

  • 此时还有一个问题需要注意,就是此处执行的任务无法保存,无法在历史中查看,这是我们必要的功能,所以我们进一步进行配置:

    我们 配置 mapred-site.xml 文件:

    添加如下配置,上面是内部通信地址,下面是web页面展示地址

     <property><name>mapreduce.jobhistory.address</name><value>hadoop102:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop102:19888</value></property>
    

    之后我们使用如下指令启动历史服务:

    bin/mapred --daemon start historyserver

    之后就可以通过 jps 看到启动了jobHistoryServer 服务

    关闭指令:

    bin/mapred --daemon stop historyserver
    
  • 配置日志

    在 yarn-site.xml 中进行日志功能的配置,注意日志需要集成在 jobhistory对应的端口,并且只需要保存七天

    配置分别是:开启日志聚集、对应日志端口、保存时间

     <property><name>yarn.log-aggregation-enable</name><value>true</value></property><property><name>yarn.log.server.url</name><value>http://hadoop102:19888/jobhistory/logs</value></property><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property>
    

    之后记得分发重启就可以实现日志操作啦

  • 对于Manager的服务:

    yarn --daemon start/stop xxxxmanager
    

    对于 node 的服务

    hdfs --daemon start/stop xxx
    

    这两个命令可以实现单个服务的启停

服务一键启停脚本和jps全部脚本

一键启停脚本(myhadoop.sh):

记得要添加权限以允许所有用户都执行脚本

chmod 777 myhadoop.sh

#!/bin/bashif [ $# -lt 1 ]
thenecho "No Args Input..."exit ;
ficase $1 in
"start")echo " ========== 启动 hadoop 集群 ========== "echo " ---------- 启动 hdfs ---------- "ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"echo " ---------- 启动 yarn ----------"ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"echo " ---------- 启动 historyserver ---------- "ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")echo " ========== 关闭 hadoop 集群 ========== "echo " ---------- 关闭 historyserver ----------"ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"echo " ---------- 关闭 yarn  ----------"ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"echo " ---------- 关闭 hdfs  ---------- "ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)echo "Input Args Error..."
;;
esac

chmod 777 jpsall

jps集群脚本(jpsall):

#!/bin/bashfor host in hadoop102 hadoop103 hadoop104
doecho ========== $host =========ssh $host jps
done

同样,两个脚本都放在 ~/bin 中

如果需要的话,也可以使用 xsync 进行分发来让所有集群都使用到这两个脚本

其他问题

  • hadoop 常用端口号

    HDFS Namenode 内部端口:8020/9000/9820

    HDFS Namenode 对外暴露端口:9870

    Yarn 查看任务运行情况端口:8088

    历史服务器查看端口:19888

时间同步

使用 ntpd 服务实现时间同步功能

在 hadoop102 中进行时间服务的配置

systemctl status ntpd
systemctl start ntpd
systemctl is-enabled ntpd	# 自启动情况

之后进行时间服务器配置的修改:

sudo vim /etc/ntp.conf

修改几项:

  • 打开 restrict 192.168.xx.0 mask 255.255.255.0 nomodify notrap 的注释,这代表允许所有在 192.168.xx.0 网段的服务器访问自己

  • 之后注释掉 server 0、server 1、server 2、server 3 这四行,这代表从互联网获取时间信息,若我们是公网服务器,则无需进行修改

  • 在文件最末尾添加如下信息:

    server 127.127.1.0
    fudge 127.127.1.0 stratum 10
    

    这段代码允许当丢失网络连接时依然使用本地服务器作为集群中心为其他节点提供时间同步

  • 之后配置硬件时间信息:

    在末尾添加

    sudo vim /etc/sysconfig/ntpdSYNC_HWCLOCK=yes
    
  • 之后我们先关闭所有节点上的 ntpd 服务并关闭其自启动,这是为了避免一会在配置的时候出现外网和内网交替同步的乱象

    sudo systemctl stop ntpd
    sudo systemctl disable ntpd
    
  • 在其他机器上配置时间同步机制:一分钟同步一次

    sudo crontab -e
    

    之后进行编写定时同步

    在编辑crontab文件时,你可以添加新的计划任务或者修改现有的计划任务。每一行都代表一个计划任务,格式如下:
    0 3 * * * /path/to/command*/1 * * * * /usr/sbin/ntpdate hadoop102
    
  • 之后我们可以进行测试,输入 date 可以查看系统时间

    sudo date -s "2015-6-5 11:11:15"
    

    这样调整系统时间之后,我们过一分钟就会自动将时间同步

注意在修改完之后,这子服务器的 ntpd 是关闭的状态,时间服务器的 ntpd 是启用的状态

ENS33 消失的处理方式

systemctl stop NetworkManager #关闭NetworkManager
systemctl disable NetworkManager #开机禁用NetworkManager
systemctl start network.service #开启网卡
service network restart #重启网卡

添加用户展示页面的操作权限

在正常情况下,hdfs 页面只有展示查询权限,是没有修改和删除权限的,基于这种情况,我们可以在 core-site.xml 中添加配置来添加用户的查询权限:

 <property><name>hadoop.http.staticuser.user</name><value>hadoop</value></property>

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

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

相关文章

Xinstall全链路解决方案,让社交App推广效果倍增!

随着互联网的飞速发展&#xff0c;社交App如雨后春笋般涌现&#xff0c;然而&#xff0c;如何在激烈的市场竞争中脱颖而出&#xff0c;成为每个推广者亟待解决的问题。今天&#xff0c;就让我们来揭秘Xinstall如何助力社交App打破运营推广瓶颈&#xff0c;让你的推广之路更加顺…

MyBatis 基本操作 - XML版

目录 配置xml文件 一&#xff0c;查询 - Select 1.1 全列查询 1.2 赋值问题 二&#xff0c;新增 - insert 2.1 使用对象插入 2.2 获取主键 三&#xff0c;删除 - delete 四&#xff0c;修改 - update 配置xml文件 <?xml version"1.0" encoding"U…

井盖状态检测数据集

井盖状态检测数据集 yolo格式 五种类别&#xff1a;broke(井盖破损)&#xff0c;good(完好)&#xff0c;circle(边圈破损)&#xff0c;lose(井盖丢失)&#xff0c;uncovered(井盖位移/未覆盖全) 训练数据已划分&#xff0c;配置文件稍做路径改动即可训练。 训练集&#xff1a;1…

k8s 中的 Ingress 简介

一、关于 Ingress Ingress 是 K8s 中的一个 API 对象&#xff0c;用于管理和配置外部对集群内服务的访问。它可定义 HTTP 和 HTTPS 路由规则&#xff0c;将请求从集群外部的负载均衡器引导到相应的服务。Ingress 的灵活性使得我们能够实现高级的应用程序路由、SSL 终端和负载均…

【代码随想录Day22】回溯算法Part01

理论基础 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;带你学透回溯算法&#xff08;理论篇&#xff09;| 回溯法精讲&#xff01;_哔哩哔哩_bilibili 回溯算法模板框架&#xff1a; void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&…

深兰科技荣获“2024年度人工智能最具商业合作价值企业”奖

9月19日&#xff0c;以“释放AI应用价值&#xff0c;发展新质生产力”为主题的“AIAC2024人工智能应用大会”在北京隆重举行。大会揭晓了“AI卓智奖”年度人工智能创新评选的获奖榜单&#xff0c;深兰科技荣获“2024年度人工智能最具商业合作价值企业”称号&#xff0c;同时&am…

【老板必看!】电脑怎么看使用软件时间记录?一文读懂5种超实用的方法!

在企业管理中&#xff0c;电脑虽不善言语、不会说话&#xff0c;但会留下无数线索&#xff0c;就像一场未解之谜&#xff0c;等待着各位福尔摩斯得到来&#xff0c;去揭开它的秘密面纱。 你是否曾好奇过&#xff0c;当你不在的时候&#xff0c;员工都在用电脑都在忙些什么&…

超重磅!青否交互式数字人2.0正式发布,支持流式输入!

青否交互式数字人自今年1月10日发布后&#xff0c;好评不断&#xff01;是行业内第一家支持交互式数字人源码独立部署的。 今天&#xff0c;交互式数字人2.0版本重磅发布&#xff01; 0.5秒反应速度 数字人克隆和声音克隆算法深度优化&#xff0c;支持流式输入&#xff0c;交互…

全志A133 android10 适配EC20 4G模块

一&#xff0c;移植适配 1. 驱动移植 代码路径&#xff1a;longan/kernel/linux-4.9/drivers/usb/serial/option.c diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 9f96dd2..2f25466 100644 --- a/drivers/usb/serial/option.cb/drivers/us…

12.第二阶段x86游戏实战2-CE找基地址

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…

规模化电动汽车接入配电网调度方法

规模日益增长的电动汽车和可再生能源带来的不确定性给配电网的安全运营带来了严峻挑战。为综合考虑多重不确定性、平衡运营成本与系统可靠性,首先,提出一种基于分布鲁棒联合机会约束的电动汽车-配电网充放电调度模型。该模型将节点电压、支路功率、备用需求等通过联合机会约束建…

常用函数式接口的使用

FunctionalInterface注解 函数式接口在java中是指:有且仅有一个抽象方法的接口。 虽然知道怎么使用&#xff0c;但是没有搞懂使用场景&#xff0c;暂且记录下使用方法吧&#xff0c;不至于看到源码的时候不知所云。 要我自己写代码&#xff0c;我是想不起来这样用的&#xff0…

轻松掌控资产:企业必备的智能管理解决方案

在信息化管理日益重要的今天&#xff0c;高效管理企业的固定资产成为亟待解决的问题。我们深知企业在资产管理方面面临的挑战&#xff0c;因此推出了一款全新的资产管理解决方案&#xff0c;旨在帮助企业轻松应对资产管理中的各种难题。 特色功能 1. 资产申购 员工可通过系统便…

计算机毕业设计之:教学平台微信小程序(

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

YOLOv5的训练技巧汇总

文章目录 前言训练技巧1.训练预热 Warmup1.1 什么是训练预热 Warmup&#xff1f;1.2 常见的训练预热类型1.3 yolov5里面的warmup 2.余弦退火调整学习率 CosineAnnealingLR2.1 解释2.2 yolov5中的余弦退火 3.自适应锚框 Autoanchor3.1 什么是anchor?3.1 yolov5中的默认锚框3.3 …

【网络编程】socket套接字|sockaddr|sockaddr_in|通信过程

目录 ​编辑 源IP地址和目的IP地址 Socket 网络字节序 socket编程接口 sockaddr结构 sockaddr sockaddr_in(IPv4) sockaddr_in(IPv6) 完整的套接字&#xff08;socket&#xff09;通信过程 创建socket套接字 bind绑定套接字 listen建立监听 accept接受连接 connect…

OpenCV系列教程二:基本图像增强(数值运算)、滤波器(去噪、边缘检测)

文章目录 一、基本图像增强&#xff08;数值运算&#xff09;1.1 加法 &#xff08;cv2.add&#xff09;1.1.1 图像与标量相加&#xff08;调节亮度&#xff09;1.1.2 图像与图像相加&#xff08;两个图像shape要相同&#xff09;1.1.3 图像的加权加法&#xff08;渐变切换&…

身份证识别接口的应用场景和作用

引言 在信息化与数字化高速发展的今天&#xff0c;身份证作为个人身份的重要证明文件&#xff0c;在各行各业的应用越来越广泛。传统的身份证信息录入和审核过程通常需要人工操作&#xff0c;不仅效率低下&#xff0c;而且容易出现错误。为了解决这些问题&#xff0c;身份证识别…

C++入门基础知识八

1.介绍new与delete 1.malloc和free是函数&#xff0c;new和delete是操作符 2.malloc申请的空间不会初始化&#xff0c;new可以初始化 3.malloc申请空间失败时&#xff0c;返回的是NULL&#xff0c;因此必须判空&#xff0c;new不需要&#xff0c;但是new需要捕获异常 4.申请…

Kyutai 开源对话模型 Moshi;李飞飞空间智能公司已筹集超过 2.3 亿美元丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。 我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、…