Hadoop3.3.4 + HDFS Router-Based Federation配置

一、HDFS Router-based Federation

        官方文档见:

Apache Hadoop 3.4.0 – HDFS Router-based Federationicon-default.png?t=N7T8https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs-rbf/HDFSRouterFederation.html

二、集群规划

        本次测试采用6台虚拟机创建了2套HDFS集群,操作系统版本为centos7.6,Hadoop版本为3.3.4,其中Namenode采用HA高可用架构。

集群IP地址主机名fc zkHDFSrouterstatestore zk
ClusterA
ccns
192.168.121.101node101.cc.localserver.1

NameNode

DataNode

JournalNode

ClusterA
ccns
192.168.121.102node102.cc.localserver.2

NameNode

DataNode

JournalNode

ClusterA
ccns
192.168.121.103node103.cc.localserver.3

DataNode

JournalNode

dfsrouter
ClusterB
ccns02
192.168.121.104node104.cc.localserver.1

NameNode

DataNode

JournalNode

server.1
ClusterB
ccns02
192.168.121.105node105.cc.localserver.2

NameNode

DataNode

JournalNode

server.1
ClusterB
ccns02
192.168.121.106node106.cc.localserver.3

DataNode

JournalNode

dfsrouterserver.1

三、配置ClusterA集群

1、配置core-site.xml

  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://ccns</value>
  </property>

2、配置hdfs-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. --><configuration>
  <property>
    <name>dfs.nameservices</name>
    <value>ccns,ccns02,ccrbf</value>
  </property>
  <property>
    <name>dfs.ha.namenodes.ccns</name>
    <value>nn1,nn2</value>
  </property>
  <property>
    <name>dfs.ha.namenodes.ccns02</name>
    <value>nn1,nn2</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ccns.nn1</name>
    <value>node101.cc.local:9000</value>
  </property>
  <property>
    <name>dfs.namenode.servicerpc-address.ccns.nn1</name>
    <value>node101.cc.local:9040</value>
  </property>
  <property>
    <name>dfs.namenode.https-address.ccns.nn1</name>
    <value>node101.cc.local:9871</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ccns.nn2</name>
    <value>node102.cc.local:9000</value>
  </property>
  <property>
    <name>dfs.namenode.servicerpc-address.ccns.nn2</name>
    <value>node102.cc.local:9040</value>
  </property>
  <property>
    <name>dfs.namenode.https-address.ccns.nn2</name>
    <value>node102.cc.local:9871</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ccns02.nn1</name>
    <value>node104.cc.local:9000</value>
  </property>
  <property>
    <name>dfs.namenode.servicerpc-address.ccns02.nn1</name>
    <value>node104.cc.local:9040</value>
  </property>
  <property>
    <name>dfs.namenode.https-address.ccns02.nn1</name>
    <value>node104.cc.local:9871</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ccns02.nn2</name>
    <value>node105.cc.local:9000</value>
  </property>
  <property>
    <name>dfs.namenode.servicerpc-address.ccns02.nn2</name>
    <value>node105.cc.local:9040</value>
  </property>
  <property>
    <name>dfs.namenode.https-address.ccns02.nn2</name>
    <value>node105.cc.local:9871</value>
  </property>
  <property>
    <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node101.cc.local:8485;node102.cc.local:8485;node103.cc.local:8485;node104.cc.local:8485;node105.cc.local:8485;node106.cc.local:8485/ccns</value>
  </property>

  <!-- 配置失败自动切换实现方式,客户端连接可用状态的NameNode所用的代理类,默认值:org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider -->
  <property>
    <name>dfs.client.failover.proxy.provider.ccns</name>
 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  </property>

  <!-- 配置隔离机制,HDFS的HA功能的防脑裂方法。建议使用sshfence(hadoop:9922),括号内的是用户名和端口,注意,2台NN之间可免密码登陆.sshfences是防止脑裂的方法,保证NN中仅一个是Active的,如果2者都是Active的,新的会把旧的强制Kill -->
  <property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
  </property>
  
  <!-- 开启NameNode失败自动切换 -->
  <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>
  
  <!-- 指定上述选项ssh通讯使用的密钥文件在系统中的位置 -->
  <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/home/hadoop/.ssh/id_rsa</value>
  </property>

  <!-- 指定JournalNode在本地磁盘存放数据的位置。 -->
  <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/opt/hadoop/hadoop-3.3.4/data/journalnode</value>
  </property>
  
  <!--配置namenode存放元数据的目录,默认放到hadoop.tmp.dir下-->
  <property>   
    <name>dfs.namenode.name.dir</name>   
    <value>file:///opt/hadoop/hadoop-3.3.4/data/namenode</value>   
  </property>   

  <!--配置datanode存放元数据的目录,默认放到hadoop.tmp.dir下-->
  <property>   
    <name>dfs.datanode.data.dir</name>   
    <value>file:///opt/hadoop/hadoop-3.3.4/data/datanode</value>    
  </property>

  <!-- 打印客户端真实IP -->
  <property>
    <name>hadoop.caller.context.enabled</name>
    <value>true</value>
  </property>

  <!-- 副本数量配置 -->
  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>

  <!-- JournalNode的HTTP地址和端口。端口设置为0表示随机选择。-->
  <property>
    <name>dfs.journalnode.http-address</name>
    <value>0.0.0.0:8480</value>
  </property>

  <!-- JournalNode RPC服务地址和端口-->
  <property>
    <name>dfs.journalnode.rpc-address</name>
    <value>0.0.0.0:8485</value>
  </property>
  
  <!--设置用户的操作权限,false表示关闭权限验证,任何用户都可以操作-->                            <property>   
    <name>dfs.permissions</name>   
    <value>true</value>   
  </property>
  <property>
    <name>dfs.permissions.enabled</name>
    <value>true</value>
   </property>
  <property>
    <name>dfs.namenode.inode.attributes.provider.class</name>
    <value>org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer</value>
  </property>
  <property>
    <name>dfs.permissions.ContentSummary.subAccess</name>
    <value>true</value>
  </property>

  <!-- 访问DataNode数据块时需通过Kerberos认证 -->
  <property>
    <name>dfs.block.access.token.enable</name>
    <value>true</value>
  </property>

  <!-- NameNode服务的Kerberos主体,_HOST会自动解析为服务所在的主机名 -->
  <property>
    <name>dfs.namenode.kerberos.principal</name>
    <value>hadoop/_HOST@CC.LOCAL</value>
  </property>

  <!-- NameNode服务的Kerberos密钥文件路径 -->
  <property>
    <name>dfs.namenode.keytab.file</name>
    <value>/etc/security/keytab/hadoop.keytab</value>
  </property>

  <!-- DataNode服务的Kerberos主体 -->
  <property>
    <name>dfs.datanode.kerberos.principal</name>
    <value>hadoop/_HOST@CC.LOCAL</value>
  </property>

  <!-- DataNode服务的Kerberos密钥文件路径 -->
  <property>
    <name>dfs.datanode.keytab.file</name>
    <value>/etc/security/keytab/hadoop.keytab</value>
  </property>

  <!-- JournalNode服务的Kerberos主体 -->
  <property>
    <name>dfs.journalnode.kerberos.principal</name>
    <value>hadoop/_HOST@CC.LOCAL</value>
  </property>

  <!--  JournalNode服务的Kerberos密钥文件路径 -->
  <property>
    <name>dfs.journalnode.keytab.file</name>
    <value>/etc/security/keytab/hadoop.keytab</value>
  </property>

  <!-- Web服务的Kerberos主体 -->
  <property>
    <name>dfs.namenode.kerberos.internal.spnego.principal</name>
    <value>hadoop/_HOST@CC.LOCAL</value>
  </property>

  <!-- WebHDFS REST服务的Kerberos主体 -->
  <property>
    <name>dfs.web.authentication.kerberos.principal</name>
    <value>hadoop/_HOST@CC.LOCAL</value>
  </property>

  <!-- Web UI的Kerberos密钥文件路径 -->
  <property>
    <name>dfs.web.authentication.kerberos.keytab</name>
    <value>/etc/security/keytab/hadoop.keytab</value>
  </property>

  <!-- 启用DataNode之间的统计信息收集-->
  <property>
    <name>dfs.datanode.peer.stats.enabled</name>
    <value>true</value>
  </property>

  <!-- 配置DataNode数据传输保护策略为仅认证模式 -->
  <property>
    <name>dfs.data.transfer.protection</name>
    <value>authentication</value>
  </property>

  <property>
    <name>dfs.http.policy</name>
    <value>HTTPS_ONLY</value>
  </property>

</configuration>

注意:
1、rbf服务会监听namenode的jxm数据,需要请求web地址获取监控数据,如果因为HDFS安全模式仅开放https的web访问即dfs.http.policy为HTTPS_ONLY,需要配置dfs.namenode.https-address项,而不能配置dfs.namenode.http-address
2、rbf服务启动后需要

3、配置hdfs-rbf-site.xml

        从Hadoop-3.3.0 及以后版本,RBF作为一个单独模块从HDFS独立出来了,配置文件为hdfs-rbf-site.xml,其中Router主要的端口有3个:

  • dfs.federation.router.rpc-address: Router的默认RPC端口8888, Client发送RPC到此
  • dfs.federation.router.admin-address: Router的默认routeradmin命令端口8111
  • dfs.federation.router.https-address: Router的默认UI地址50072

<configuration>
  <!-- the default name service specifies the cluster A --> 
  <property>
    <name>dfs.federation.router.default.nameserviceId</name>
    <value>ccns</value>
  </property>
  <property>
    <name>dfs.federation.router.default.nameservice.enable</name>
    <value>true</value>
  </property>
  <!-- StateStore specify the ZooKeeper --> 
  <property>
    <name>dfs.federation.router.store.driver.class</name>  
    <value>org.apache.hadoop.hdfs.server.federation.store.driver.impl.StateStoreZooKeeperImpl</value>
  </property>
  <!-- ZK -->
  <property>
    <name>hadoop.zk.address</name>
    <value>node104.cc.local:2181,node105.cc.local:2181,node106.cc.local:2181</value>
  </property>
  <!-- Store ZK path -->
  <property>
    <name>dfs.federation.router.store.driver.zk.parent-path</name>
    <value>/hdfs-federation</value>
  </property>
  <!-- If Router and NameNode the same host True --> 
  <property>
    <name>dfs.federation.router.monitor.localnamenode.enable</name>
    <value>false</value>
  </property>
  <!-- Specifies the routing destination of the NameNode --> 
  <property>
    <name>dfs.federation.router.monitor.namenode</name>
    <value>ccns.nn1,ccns.nn2,ccns02.nn1,ccns02.nn2</value>
  </property>
  <property>
    <name>dfs.federation.router.quota.enable</name>
    <value>true</value>
  </property>
  <property>
    <name>dfs.federation.router.cache.ttl</name>
    <value>10s</value>
  </property>
  <property>
    <name>dfs.federation.router.rpc.enable</name>
    <value>true</value>
  </property>
  <property>
    <name>dfs.federation.router.rpc-address</name>
    <value>0.0.0.0:8888</value>
  </property>
  <property>
    <name>dfs.federation.router.rpc-bind-host</name>
    <value>0.0.0.0</value>
  </property>
  <property>
    <name>dfs.federation.router.handler.count</name>
    <value>20</value>
  </property>
  <property>
    <name>dfs.federation.router.handler.queue.size</name>
    <value>200</value>
  </property>
  <property>
    <name>dfs.federation.router.reader.count</name>
    <value>5</value>
  </property>
  <property>
    <name>dfs.federation.router.reader.queue.size</name>
    <value>100</value>
  </property>
  <property>
    <name>dfs.federation.router.connection.pool-size</name>
    <value>6</value>
  </property>
  <property>
    <name>dfs.federation.router.metrics.enable</name>
    <value>true</value>
  </property>
  
  <!-- client routing --> 
  <property>
    <name>dfs.client.failover.random.order</name>
    <value>true</value>
  </property>
  <!-- If you want to enable the mount function of multiple clusters --> 
  <property>
    <name>dfs.federation.router.file.resolver.client.class</name>
    <value>org.apache.hadoop.hdfs.server.federation.resolver.MultipleDestinationMountTableResolver</value>
  </property>
  
  <!-- kerberos --> 
  <property>
    <name>dfs.federation.router.keytab.file</name>
    <value>/etc/security/keytab/hadoop.keytab</value>
  </property>
  <property>
    <name>dfs.federation.router.kerberos.principal</name>
    <value>hadoop/_HOST@CC.LOCAL</value>
  </property>
  <property>
    <name>dfs.federation.router.kerberos.internal.spnego.principal</name>
    <value>hadoop/_HOST@CC.LOCAL</value>
  </property>
  <!-- secret.manager --> 
  <property>
  <name>dfs.federation.router.secret.manager.class</name>
  <value>org.apache.hadoop.hdfs.server.federation.router.security.token.ZKDelegationTokenSecretManagerImpl</value>
  </property>
  <property>
    <name>zk-dt-secret-manager.zkAuthType</name>
    <value>none</value>
  </property>
  <property>
    <name>zk-dt-secret-manager.zkConnectionString</name>
    <value>node104.cc.local:2181,node105.cc.local:2181,node106.cc.local:2181</value>
  </property>
  <property>
    <name>zk-dt-secret-manager.kerberos.keytab</name>
    <value>/etc/security/keytab/hadoop.keytab</value>
  </property>
  <property>
    <name>zk-dt-secret-manager.kerberos.principal</name>
    <value>hadoop/_HOST@CC.LOCAL</value>
  </property>
</configuration>

注意:
1、默认router的namespace需要配置为本集群的服务名称,ClusterA集群为ccns,CluserB集群就应该为ccns02
2、选择zk来作为statestore需要配置hadoop.zk.address,用来指定zk地址
3、dfs.federation.router.monitor.localnamenode.enable配置为false,因为rbf跟namenode不是在同个节点,监听时就会从配置文件中查找namenode的web地址,而不是查找localhost
4、dfs.federation.router.monitor.namenode配置所有需要监听的namenode
5、需要指定secret manager相关配置,不然rbf启动时,secret manager启动报错zookeeper connectione string为null,导致rbf启动失败,相关配置项如下:dfs.federation.router.secret.manager.class,zk-dt-secret-manager.zkAuthType,zk-dt-secret-manager.zkConnectionString,zk-dt-secret-manager.kerberos.keytab,zk-dt-secret-manager.kerberos.principal

四、配置ClusterB集群

1、配置core-site.xml

  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://ccns02</value>
  </property>

2、配置hdfs-site.xml

   与ClusterA集群配置基本相同,可参考。

3、配置配置hdfs-rbf-site.xml

   与ClusterA集群配置基本相同,唯一区别在于默认router的namespace需要配置为本集群的服务名称,ClusterA集群为ccns,ClusterB集群就应该时ccns02

五、启动集群服务

1、初始化ClusterB集群

        因为ClusterA之前验证中已创建好,所以本次除了修改其配置文件后重启之外,为了不丢失其上已有数据,只需要初始化ClusterB集群,相关步骤可参考新建集群部分的内容。

###在新集群的所有namenode节点上执行###
hdfs zkfc -formatZK
hdfs --daemon start zkfc
###在所有分配journalnode的节点上执行###
hdfs --daemon start journalnode
###选择NN1节点执行初始化,指定与Cluster A 相同的clusterId###
hdfs namenode -format -clusterId CID-a39855c3-952d-4d1f-86d7-eadf282d9000
hdfs --daemon start namenode
###选择NN2节点执行并启动服务###
hdfs namenode -bootstrapStandby
hdfs --daemon start namenode
###启动datanode###
hdfs --daemon start datanode

注意:clusterId可以在data目录下/opt/hadoop/hadoop-3.3.4/data/namenode/current/VERSION文件中查询获得。

2、启动router服务

hdfs --daemon start dfsrouter

        Router WebUI:https://192.168.121.103:50072/

3、配置挂载目录

        通过routeradmin命令增删改查路由表,dfsrouteradmin命令只能在 router所在节点执行

hdfs dfsrouteradmin -add /ccnsRoot ccns /
hdfs dfsrouteradmin -add /ccns02Root ccns02 /

        通过router查看

$ hdfs dfs -ls hdfs://node103.cc.local:8888/
Found 2 items
drwxr-xr-x   - hadoop supergroup          0 2024-06-20 17:12 hdfs://node103.cc.local:8888/ccns02Root
drwxr-xr-x   - hadoop supergroup          0 2024-06-20 17:12 hdfs://node103.cc.local:8888/ccnsRoot

六、附常用命令

# 核心是add(添加)命令, 有这些选项:
# -readonly -owner <owner> -group <group> -mode <permission> ?(通用)
# -faulttolerant -order [HASH|LOCAL|RANDOM|HASH_ALL|SPACE] (多映射专用)

1、添加一个映射, 用户test, 组admin
hdfs dfsrouteradmin -add /ccnsRoot/test ccns /test -owner test -group admin

2、添加一个映射, 读写权限设置为750
hdfs dfsrouteradmin -add /ccnsRoot/test2 ccns /test2 -mode 750

3、添加一个映射, 希望此目录是只读, 任何用户不可写入的
hdfs dfsrouteradmin -add /ccnsRoot/test3 sc1 /test3 -readonly

4、添加多(NS)对一映射, 让2个NS指向1个目录, 容忍多操作失败 (默认hash策略)
hdfs dfsrouteradmin -add /rbftmp1 ccns,ccns02 /tmp1 -faulttolerant

5、添加多对一映射, 让2个NS指向1个目录 (使用优选最近策略)
hdfs dfsrouteradmin -add /rbftmp2 ccns,ccns02 /tmp2 -order LOCAL

6、查看目前的mount信息
hdfs dfsrouteradmin -ls

7、修改已经创建过的映射, 参数同add (重复add不会覆盖已有)
hdfs dfsrouteradmin -update /ccnsRoot/test2 ccns /test2 -mode -mode 500

8、删除映射记录, 只用写映射的路径(source)
hdfs dfsrouteradmin -rm /ccnsRoot/test2

9、立刻刷新本机router同步操作, 默认ns才会同步刷新
/hdfs dfsrouteradmin -refresh

10、开启/关闭NS (后跟NS名)
hdfs dfsrouteradmin -nameservice enable/disbale sc1

11、获取关闭的NS
hdfs dfsrouteradmin -getDisabledNameservices

12、设置Router-Quota (生效需要修改配置文件么?)
# nsQuota代表文件数, ssQuota代表大小(单位字节)
hdfs dfsrouteradmin -setQuota /rbftmp1 -nsQuota 2 -ssQuota 2048

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

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

相关文章

Linux高并发服务器开发(四)进程间通信

文章目录 1 前言2 无名管道3 有名管道4 管道读写特点5 设置管道为非阻塞6 使用有名管道实现简单版本聊天7 共享存储映射7.1 mmap 存储映射函数7.2 共享映射实现父子进程通信7.3 共享映射实现无亲缘关系进程通信7.4 匿名映射实现父子进程通信 8 信号8.1 概念和特点8.2 信号的编号…

通用后台管理系统(一)——项目介绍

目录 二、文档结构 src文件夹&#xff1a; 三、技术和插件 1、Vue router 2、element-ui框架 3、样式插件less 4、vuex状态管理 5、axios.js 6、mock.js模拟数据 7、echarts图表工具 四、项目效果展示 总结 一、项目介绍 通用后台管理是采用vue2cli开发的项目&#…

国行版苹果Vision Pro即将发售 高昂定价吓退普通消费者?

2024年2月2日&#xff0c;苹果第一代空间计算设备Vision Pro在美国上市。6月28日&#xff0c;国行版苹果Vision Pro也将正式发售&#xff0c;别为256GB版29999元、512GB版31499元、1TB版32999元。不过从此前Vision Pro预售情况来看&#xff0c;Vision Pro的“杀手锏”在“价格”…

Arduino - 继电器

Arduino - 继电器 In a previous tutorial, we have learned how to turn on/off an LED. In this tutorial, we are going to learn how to turn on/off some kind of devices that use the high voltage power supply(such as a light bulb, fan, electromagnetic lock, lin…

# Kafka_深入探秘者(8):kafka 高级应用

Kafka_深入探秘者&#xff08;8&#xff09;&#xff1a;kafka 高级应用 一、kafka 消费组管理 1、kafka 命令行工具 参考官网: http://kafka.apache.org/22/documentation.html 2、kafka 消费组管理&#xff1a;查看消费组 # 切换到 kafka 安装目录 cd /usr/local/kafka/…

WIFI7技术之多重资源单元(Multi-RU)技术

什么是WIFI7及Multi-RU技术&#xff1f; 随着无线通信技术的不断进步&#xff0c;WiFi技术也在不断演变。WIFI7&#xff0c;即IEEE 802.11be&#xff0c;是下一代无线网络标准。它旨在提供更高的带宽、更低的延迟和更好的用户体验。WIFI7引入了许多新特性&#xff0c;其中之一…

PostgreSQL 连接器:在 SeaTunnel 中的应用与优势

在现代企业中&#xff0c;数据已经成为核心资产&#xff0c;基于开源数据集成平台SeaTunnel&#xff0c;工程师如何高效地连接和管理这些数据源&#xff0c;直接关系到企业的竞争力和运营效率。 本文将给大家介绍如何通过 JDBC PostgreSQL 数据源连接器&#xff0c;在 SeaTunne…

使用Flink CDC实时监控MySQL数据库变更

在现代数据架构中&#xff0c;实时数据处理变得越来越重要。Flink CDC&#xff08;Change Data Capture&#xff09;是一种强大的工具&#xff0c;可以帮助我们实时捕获数据库的变更&#xff0c;并进行处理。本文将介绍如何使用Flink CDC从MySQL数据库中读取变更数据&#xff0…

Docker部署常见应用之Oracle数据库

文章目录 安装部署参考文章 安装部署 使用Docker安装Oracle数据库是一个相对简便的过程&#xff0c;可以避免在本地环境中直接安装Oracle数据库的复杂性。 安装Docker环境&#xff1a;确保你的系统上已经安装了Docker&#xff0c;并且Docker服务正在运行。具体的安装方法可以根…

TikTok网页版使用指南:如何登录TikTok网页版?

海外版抖音TikTok&#xff0c;已成为连接全球观众的重要平台。据统计&#xff0c;在美国&#xff0c;TikTok的用户数量已达到近1.3亿&#xff0c;并且在国外的95后用户群体中很受欢迎。 TikTok网页版也提供了一个广阔的平台&#xff0c;让品牌和创作者在电脑端与全球观众互动&…

数据结构与算法基础(王卓)--学习笔记

1 数据结构分类 1.1 逻辑结构分类 集合结构线性结构&#xff1a;线性表、栈、队列、串树形结构图形结构 1.2 物理结构分类 逻辑结构在计算机中的真正表示方式&#xff08;又称为映射&#xff09;称为物理结构&#xff0c;也可叫做存储结构 顺序存储结构&#xff1a;数组链…

【Unity】Excel配置工具

1、功能介绍 通过Excel表配置表数据&#xff0c;一键生成对应Excel配置表的数据结构类、数据容器类、已经二进制数据文件&#xff0c;加载二进制数据文件获取所有表数据 需要使用Excel读取的dll包 2、关键代码 2.1 ExcelTool类 实现一键生成Excel配置表的数据结构类、数据…

Centos7源码方式安装sqle及开发相关

官方文档-源码安装 操作系统&#xff1a;centos:7.9,everything (DVD版应该也可以) (在ubuntu22.04装了两天之后乖乖开了一个新Centos7虚拟机) 镜像&#xff1a;清华大学开源软件镜像站 centos/7.9.2009 安装git sudo yum update -y sudo yum install -y git git --version安…

Sonia索尼娅:填补心理健康护理缺口的创新人工智能治疗师应用APP

聊天机器人可以取代人类治疗师吗&#xff1f;一些初创公司和患者声称他们可以。但这并不是完全确定的科学。 一项引人注目的研究发现&#xff0c;高达80%的使用OpenAI的ChatGPT寻求心理健康建议的人认为&#xff0c;这项技术可作为传统治疗的理想替代方案。与此同时&#xff0…

Android高级面试_2_IPC相关

Android 高级面试-3&#xff1a;语言相关 1、Java 相关 1.1 缓存相关 问题&#xff1a;LruCache 的原理&#xff1f; 问题&#xff1a;DiskLruCache 的原理&#xff1f; LruCache 用来实现基于内存的缓存&#xff0c;LRU 就是最近最少使用的意思&#xff0c;LruCache 基于L…

国外8年联培访学迎来逆袭|国家最高科学技术奖薛其坤成长史

国家最高科技奖花落薛其坤&#xff0c;他是该奖项史上最年轻得主。在追踪其成长史的过程中&#xff0c;知识人网小编注意到&#xff1a;薛其坤的学习研究开局并不顺利&#xff0c;直至到日本做联合培养博士研究生&#xff0c;他才真正迎来了自己学术生涯的重要转折点。后来到美…

面试相关-接口测试常问的问题

1.为什么要做接口测试 (1)现在大多系统都是前后端分离的项目,前端和后端的进度可能不一样,那为了尽早的进入测试,前端界面没有开发完成的情况下,只要后端的接口开发完了,就可以提前做接口测试了; (2)基于安全考虑,只依赖前端进行限制,已经完全不满足系统的安全性…

ELK日志集成

https://www.bilibili.com/video/BV1x94y1674x/?buvidXY705117E90F73A790429C9CFBD5F70F22168&vd_source939ea718db29535a3847d861e5fe37ef

Aigtek:为何要使用电压放大器

电压放大器在现代电子技术中起到了至关重要的作用。它是一种电子设备&#xff0c;用于将输入信号的电压增大到所需的输出电压水平。电压放大器的使用有以下几个方面的原因和优势。 电压放大器可以提高信号的强度和质量。许多实际应用中的输入信号往往很微弱&#xff0c;比如来自…

“管式加热炉简单控制系统和串级控制系统设计与Matlab仿真”,高分资源,匠心制作,下载可用。强烈推荐!!!

“管式加热炉简单控制系统和串级控制系统设计与Matlab仿真”毕业设计&#xff0c;高分资源&#xff0c;匠心制作&#xff0c;下载可用。强烈推荐&#xff01;&#xff01;&#xff01; 1.控制目标 加热炉的任务是把原油加热到一定温度&#xff0c;以保证下道工艺的顺利进行。…