大数据系列之:深入理解学习使用腾讯COS和COS Ranger权限体系解决方案,从hdfs同步数据到cos

大数据系列之:深入理解学习使用腾讯COS和COS Ranger权限体系解决方案,从hdfs同步数据到cos

  • 对象存储COS
  • 对象存储基本概念
  • COS Ranger权限体系解决方案
  • 部署组件
    • COS Ranger Plugin
    • 部署COS-Ranger-Service
    • 部署COS Ranger Client
    • 部署 COSN
  • 从hdfs同步数据到cos

对象存储COS

  • 对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。

对象存储基本概念

基本概念:

  • 存储桶(Bucket):是对象的载体,可理解为存放对象的“容器”。一个存储桶可容纳无数个对象。
  • 对象(Object):是对象存储的基本单元,可理解为任何格式类型的数据,例如图片、文档和音视频文件等。
  • 地域(Region):是腾讯云托管机房的分布地区,对象存储 COS 的数据存放在这些地域的存储

COS Ranger权限体系解决方案

Hadoop Ranger 权限体系是大数据场景下的权限解决方案。用户使用存算分离后,将数据托管在对象存储(Cloud Object Storage,COS)上。COS 使用的是腾讯云访问管理(Cloud Access Management,CAM)权限体系,无论是用户身份,权限策略等,都与本地 Hadoop Ranger 体系不同。为维持客户的使用习惯,我们提供 COS 的 Ranger 接入解决方案。

优势

  • 细粒度的权限控制,兼容 Hadoop 权限逻辑,用户统一管理大数据组件与云端托管存储的权限。
  • 插件侧无需在 core-site 中设置密钥,密钥统一在 COS Ranger Service 中设置,避免明文密钥的泄露。

解决方案架构
在这里插入图片描述

Hadoop 权限体系中,认证由 Kerberos 提供,授权鉴权由 Ranger 负责。在此基础上,我们提供以下组件,来支持 COS 的 Ranger 权限方案。

  • COS Ranger Plugin:提供 Ranger 服务端的服务定义插件。它们提供了 Ranger 侧的 COS 服务描述,包括权限种类,必要参数定义(例如 COS 的 bucket 参数和 region 参数)。部署了该插件后,用户即可在 Ranger 的控制页面上,填写相应的权限策略。
  • COS Ranger Service:该服务集成了 Ranger 的客户端,周期性从 Ranger 服务端同步权限策略,在收到客户的鉴权请求后,在本地进行权限校验。 同时它提供了 Hadoop 中 DelegationToken 相关的生成、续租等接口,所有的接口都是通过 Hadoop IPC 定义。
  • COS Ranger Client:COSN 插件对其进行动态加载,把权限校验的请求转发给 COS Ranger Service。

部署环境

  • Hadoop 环境。
  • ZooKeeper、Ranger。
  • Kerberos 服务。

推荐EMR-V350版本使用的组件版本。

  • Hadoop-3.2.2
  • Zookeeper-3.6.3
  • Ranger-2.3.0
  • Kerberos-1.15.1

部署组件

部署组件请按照 COS Ranger Plugin、COS Ranger Service、COS Ranger Client、COSN 次序进行。

COS Ranger Plugin

COS-Ranger-Plugin 拓展了 Ranger Admin 控制台上的服务种类,用户可在 Ranger 控制台上,设置和 COS 相关的操作权限。

在 Ranger 的服务定义目录下新建 COS 目录(注意,目录权限需要保证至少有 x 与 r 权限)。

  • a. 腾讯云的 EMR 环境,路径位于部署了ranger服务的Master节点的 /usr/local/service/ranger/ews/webapp/WEB-INF/classes/ranger-plugins。
  • b. 自建的 hadoop 环境,可以通过在 ranger 目录下查找 hdfs 等已经接入到 ranger 服务的组件,查找目录位置。

在这里插入图片描述
在 COS 目录下,放入 cos-chdfs-ranger-plugin-xxx.jar。(注意 jar 包至少有 r 权限)。同时需要放入 cos-ranger.json 文件。
https://github.com/tencentyun/cos-ranger-service/blob/main/ranger-plugin/cos-chdfs-json-for-ranger-2.x/cos-ranger.json

重启 Ranger 服务。

在 Ranger 上注册 COS Service。可参考如下命令:

##生成服务,需传入 Ranger 管理员账号密码,以及 Ranger 服务的地址。
##对于腾讯云 EMR 集群,管理员用户是 root,密码是构建 emr 集群时设置的 root 密码,ranger 服务的 IP 换成 EMR 的 master 节点 IP。
adminUser=root
##构建 EMR 集群时设置的密码,也是 ranger 服务 web 页面的登录密码
adminPasswd=xxxxxx
##如果 ranger 服务有多个 master 节点,任选一个 master 即可
rangerServerAddr=10.0.0.1:6080
##命令行中 -d 指定步骤 2 中的 json 文件
curl -v -u${adminUser}:${adminPasswd} -X POST -H "Accept:application/json" -H "Content-Type:application/json" -d @./cos-ranger.json http://${rangerServerAddr}/service/plugins/definitions
##如果要删除刚定义的服务,则传入刚刚创建服务时,返回的服务 ID
serviceId=102
curl -v -u${adminUser}:${adminPasswd} -X DELETE -H "Accept:application/json" -H "Content-Type:application/json" http://${rangerServerAddr}/service/plugins/definitions/${serviceId}

创建服务成功后,可在 Ranger 控制台看到 COS 服务。如下所示:

在这里插入图片描述
在 COS 服务侧单击**+**,定义新服务实例,服务实例名可自定义,例如cos或者cos_test,服务的配置如下所示。

在这里插入图片描述
配置项需添policy.grantrevoke.auth.users和policy.download.auth.users。value设置后续启动 COS Ranger Service 服务的用户名(即允许拉取权限策略的用户)。通常建议设置成 hadoop,后续 COS Ranger Service 可使用此用户名进行启动。

单击新生成的 COS 服务实例。

在这里插入图片描述

添加 policy,如下所示:
在这里插入图片描述
在跳转界面中,配置以下参数,说明如下:

  • bucket:存储桶名称,例如 examplebucket-1250000000,可登录 COS 控制台 查看。
  • path:COS 对象路径。注意 COS 的对象路径不以/开始。
    • include:表示设置的权限适用于 path 本身,还是除了 path 以外的其他路径。
    • recursive:表示权限不仅适用于 path,还适用于 path 路径下的子成员(即递归子成员)。通常用于 path 设置为目录的情况。

user/group:用户名和用户组。这里是或的关系,即用户名或者用户组满足其中一个,即可拥有对应的操作权限。

Permissions:

  • Read:读操作。对应于对象存储里面的 GET、HEAD 类操作,包括下载对象、查询对象元数据等。
  • Write:写操作。对应于对象存储里面的 PUT 类等修改操作,例如上传对象。
  • Delete:删除操作。 对应于对象存储里删除 Object。对于 Hadoop 的 Rename 操作,需要有对原路径的删除操作权限,对新路径的写入操作权限。
  • List:遍历权限。对应于对象存储里面的 List Object。

在这里插入图片描述
验证

使用 hadoop cmd 执行访问 COSN 的相关操作。查看当前用户执行的操作是否符合主账号的权限设置预期,示例如下所示:

#将bucket,路径等替换为主账号的实际信息。
hadoop fs -ls cosn://examplebucket-1250000000/doc
hadoop fs -put ./xxx.txt cosn://examplebucket-1250000000/doc/
hadoop fs -get cosn://examplebucket-1250000000/doc/exampleobject.txt
hadoop fs -rm cosn://examplebucket-1250000000/doc/exampleobject.txt

部署COS-Ranger-Service

COS-Ranger-Service 是整个权限体系的核心,负责集成 ranger 的客户端,接收 ranger client 的鉴权请求,token 生成续租请求和临时密钥生成请求。同时也是敏感信息(腾讯云密钥信息)所在的区域,通常部署在堡垒机器上,只允许集群管理员操作,查看配置等。

COS-Ranger-Service 支持多节点的 HA 部署,DelegationToken 状态持久化到 DB上。通过 ZK 互相感知彼此节点的存在。通过客户端配置的任何一个存活的 cos-ranger-server 的地址, 即可知道全量的列表。 客户端通过 round-robin 的方式, 把请求发送给所有 cos-ranger-server 的节点. 因此可以通过平行扩容 cos-ranger-server,来提升整体的鉴权能力。

版本

V6.0 版本及以上。

部署步骤

将 COS Ranger Service 服务代码拷贝到集群的几台机器上,生产环境建议至少两台机器。因为涉及到敏感信息,建议是堡垒机或者权限严格管控的机器。

如果是 kerberos 集群, 则需要一个 db 来保存 Delegation Token(有关 kerberos 的 Delegation token 的作用, 搜索相关博文即可), db 规格推荐16c32g,100g磁盘以上。在负载不高的集群上,可混用 Hive meta store 的 db。 初始化 database 和表的 sql 语句可前往 Github 的 cos-ranger-service/sql 目录下获取.

修改 cos-ranger.xml 文件中的相关配置,其中必须修改的配置项如下所示。配置项说明请参见文件中的注释说明。

  • qcloud.object.storage.rpc.address
  • qcloud.object.storage.status.port
  • qcloud.object.storage.enable.cos.ranger
  • qcloud.object.storage.zk.address (zk 地址,cos ranger service 启动后注册到 zk 上)
  • qcloud.object.storage.cos.secret.id
  • qcloud.object.storage.cos.secret.key
  • qcloud.object.storage.kerberos.principal (kerberos 集群下的 principal, 非 kerberos 请忽略)
  • qcloud.object.storage.kerberos.keytab (kerberos 集群下的 keytab 文件, 非 kerberos 请忽略)
  • sql-dt-secret-manager.connection.url(kerberos 集群, 保存 delegation token 的db, 非 kerberos 请忽略)
  • sql-dt-secret-manager.connection.username (kerberos 集群, 访问 delegation token 的db的用户名, 非 kerberos 请忽略)
  • hadoop.security.credential.provider.path (kerberos 集群, 访问 delegation token 的db的用户密码的 jceks 文件路径, 非 kerberos 请忽略)

修改 ranger-cos-security.xml 文件中的相关配置。其中必须修改的配置项有如下所示。配置项说明请参见文件中的注释说明。

  • ranger.plugin.cos.policy.cache.dir
  • ranger.plugin.cos.policy.rest.url
  • ranger.plugin.cos.service.name

修改 start_rpc_server.sh 中 hadoop_conf_path 和 java.library.path 的配置。这两个配置分别指向 hadoop 配置文件所在的目录(例如 core-site.xml、hdfs-site.xml)以及 hadoop native lib 路径。

执行如下命令启动服务。

chmod +x start_rpc_server.sh
nohup ./start_rpc_server.sh &> nohup.txt &

如果启动失败,查看 log 下 error 日志是否有错误信息。

COS Ranger Service 支持展示 HTTP 端口状态(端口名为 qcloud.object.storage.status.port,默认值为9998)。用户可通过以下命令获取状态信息(例如目前全量的cos-ranger-server列表、鉴权数量统计等)。

# 请将下面的10.xx.xx.xxx替换为部署 ranger service 的机器 IP
# port 9998 设置为 qcloud.object.storage.status.port 配置值
curl -v http://10.xx.xx.xxx:9998/status

验证

使用 hadoop cmd 执行访问 COSN 的相关操作。查看当前用户执行的操作是否符合主账号的权限设置预期,示例如下所示:

#将bucket,路径等替换为主账号的实际信息。
hadoop fs -ls cosn://examplebucket-1250000000/doc
hadoop fs -put ./xxx.txt cosn://examplebucket-1250000000/doc/
hadoop fs -get cosn://examplebucket-1250000000/doc/exampleobject.txt
hadoop fs -rm cosn://examplebucket-1250000000/doc/exampleobject.txt

使用 MR Job 进行验证,验证前需重启相关的服务,例如 Yarn、Hive 等。

获取统计信息
可以通过以下 curl 命令手动获取 COS Ranger 的统计信息


curl http://${ranger_ip}:9998/status | jq# 返回
{"allMemberAddress": "10.0.0.7:9999",//集群中所有成员的地址"currentNodeIsLeader": true, // 当前节点是否是leader节点"leaderAddress": "10.0.0.7:9999", // leader地址(对于客户端v5.x版本有意义,v6.x后是全对等模式,leader信息没有意义"authStat": {// 自定义鉴权认证的次数统计信息(对于为实现自定义认证的服务,始终是认证成功)"authSuccessStat": { // 认证成功统计信息"qps_5m": 0,// 最近 5 分钟的每秒查询数(QPS)"total_1m": 0,//最近 1 分钟的总成功认证次数"qps_1m": 0,// 最近 1 分钟的每秒查询数"total_5m": 0,//最近 5 分钟的总成功认证次数"qps": 0//当前的每秒查询数},"authFailedStat": {// 鉴权认证失败统计信息,字段含义与 authSuccessStat 相同"qps_5m": 0,"total_1m": 0,"qps_1m": 0,"total_5m": 0,"qps": 0}},"rpcMethodStat": {//包含不同 RPC 方法的调用次数的统计信息"checkPermission": {//检查权限的方法统计信息"qps_5m": 10,"total_1m": 3000,"qps_1m": 50,"total_5m": 3000,"qps": 1000},"getAvailableService": {//获取可用服务的方法统计信息"qps_5m": 0,"total_1m": 1,"qps_1m": 0.02,"total_5m": 1,"qps": 0}},"checkPermissionAllowAfterRetryCnt": 0,// 经过重试后允许的权限检查次数"checkPermissionAllowCnt": 4000,//允许的权限检查总次数"becomeLeaderTime": "2024-12-10T12:56:52.888Z",//当前节点成为leader的时间"checkAuthDenyCnt": 0,//被拒绝的认证检查次数"serviceStartTime": "2024-12-10T12:56:52.884Z",//服务启动的时间"checkPermissionDenyCnt": 0,//被拒绝的权限检查次数"accessStat": {//包含不同访问类型的统计信息"READ": {//读取操作的统计信息"qps_5m": 10,"total_1m": 3000,"qps_1m": 50,"total_5m": 3000,"qps": 1000}},"checkCostStat": {//checkPermission(检查权限)耗时的统计信息"checkFailStat": {//失败"avg_5m": 0,"min_1m": 0,"avg": 0,"min": 0,"max": 0,"max_1m": 0,"avg_1m": 0,"max_5m": 0,"min_5m": 0},"checkSuccessStat": {//成功"avg_5m": 5,//最近 5 分钟的平均耗时"min_1m": 0,//最近1分钟最小耗时"avg": 4,//平均耗时"min": 0,//最小耗时"max": 1263,//最大耗时"max_1m": 1263,//最近一分钟最大耗时"avg_1m": 5,//最近一分钟平均耗时"max_5m": 1263,//最近五分钟最大耗时"min_5m": 0//最近五分钟最小耗时}},"authCostStat": {// 权限认证耗时统计"authSuccessStat": {"avg_5m": 0,"min_1m": 0,"avg": 0,"min": 0,"max": 0,"max_1m": 0,"avg_1m": 0,"max_5m": 0,"min_5m": 0},"authFailedStat": {"avg_5m": 0,"min_1m": 0,"avg": 0,"min": 0,"max": 0,"max_1m": 0,"avg_1m": 0,"max_5m": 0,"min_5m": 0}},"rpcMethodCostStat": {//RPC接口耗时统计"checkPermission": {"avg_5m": 5,"min_1m": 0,"avg": 4,"min": 0,"max": 1263,"max_1m": 1263,"avg_1m": 5,"max_5m": 1263,"min_5m": 0},"getAvailableService": {"avg_5m": 280,"min_1m": 280,"avg": 280,"min": 280,"max": 280,"max_1m": 280,"avg_1m": 280,"max_5m": 280,"min_5m": 280}},"statsTimestamp": "2024-12-12T05:28:38.688Z",//统计时间"checkStat": {// check policy统计信息"checkFailStat": {"qps_5m": 0,"total_1m": 0,"qps_1m": 0,"total_5m": 0,"qps": 0},"checkSuccessStat": {"qps_5m": 10,"total_1m": 3000,"qps_1m": 50,"total_5m": 3000,"qps": 1000}}
}

部署COS Ranger Client

COS Ranger Client 由 hadoop cosn 插件动态加载,并代理访问 COS Ranger Service 的相关请求。例如获取临时密钥、获取 token、鉴权操作等。

版本

cos-ranger-client 要求V6.0 版本及以上。cosn-ranger-interface 要求 v1.0.5版本及以上。

腾讯云 EMR 环境中默认安装目录在 common/lib 下,例如 /usr/local/service/hadoop/share/hadoop/common/lib 下。请根据自己的环境,放在对应的common/lib 路径下。 对于 ranger-client 的包名,例如 hadoop-ranger-client-for-hadoop-2.8.5-6.0.jar,2.8.5 是 hadoop 版本号,6.0是该包的版本号。for-hadoop 是通常组件使用的版本,其他一些组件,例如 presto, impala 以及高版本的 spark(spark-3.2.0版本及以后) 等,由于对依赖的 hadoop-common做了 shade,因此 ranger-client 也必须做 shade,否则会报类找不到。这些包请下载对应的 for-presto, for-impala, for-spark 版本等。

部署方式
将 cos-ranger-client jar 包和cosn-ranger-interface jar 包拷贝到与 COSN 同一目录下通常在/usr/local/service/hadoop/share/hadoop/common/lib/目录下;请选择拷贝与自身 hadoop 大版本一致的 jar 包,最后确保 jar 包有可读权限。

在 core-site.xml 添加如下配置项:

<configuration><!--*****必须配置********--><!-- 上一步部署的 cos ranger server 的地址 --><property><name>qcloud.object.storage.ranger.service.address</name><value>10.0.0.8:9999,10.0.0.10:9999</value></property><!--***可选配置****-->           <!-- 设置 cos ranger service 端用的 kerberos 凭据,参考 cos ranger service 端的配置,须保持一致,如果没有认证的需求,不需要配置 --><property>                <name>qcloud.object.storage.kerberos.principal</name><value>hadoop/_HOST@EMR-XXXX</value></property>
</configuration>

部署 COSN

部署 COSN 插件方法请参考 Hadoop 工具 文档,但需注意以下几点:

使用 ranger 后,fs.cosn.userinfo.secretId 和 fs.cosn.userinfo.secretKey 密钥信息不需要配置。COSN 插件后续通过 COSRangerService 获取临时密钥。

fs.cosn.credentials.provider 需设置为 org.apache.hadoop.fs.auth.RangerCredentialsProvider 才可通过 Ranger 进行认证鉴权。如下所示:

<property><name>fs.cosn.credentials.provider</name><value>org.apache.hadoop.fs.auth.RangerCredentialsProvider</value>
</property>

从hdfs同步数据到cos

from pyspark.sql import SparkSession
import argparse# 初始化 Spark 会话
spark = SparkSession.builder \.appName("Write Parquet Example") \.getOrCreate()parser = argparse.ArgumentParser()
parser.add_argument('--dt', type=str)
arg = parser.parse_args()
date_time = arg.dt# 读取 Parquet 文件
df = spark.read.parquet(f"{HDFS路径}/datetime={date_time}")# 重新分区为 1 个分区
df_repartitioned = df.repartition(1)# 指定输出路径
output_path = f"cosn://{HDFS路径}/datetime={date_time}"# 写入 Parquet 文件到指定路径
df_repartitioned.write.mode("overwrite").parquet(output_path)# 关闭 Spark 会话
spark.stop()

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

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

相关文章

1月第一讲:WxPython跨平台开发框架之前后端结合实现附件信息的上传及管理

1、功能描述和界面 前端&#xff08;wxPython GUI&#xff09;&#xff1a; 提供文件选择、显示文件列表的界面。支持上传、删除和下载附件。展示上传状态和附件信息&#xff08;如文件名、大小、上传时间&#xff09;。后端&#xff08;REST API 服务&#xff09;&#xff1a…

12.29~12.31[net][review]need to recite[part 2]

网络层 IP 首部的前一部分是固定长度&#xff0c;共 20 字节&#xff0c;是所有 IP 数据报必须具有的 路由器 路由选择协议属于网络层控制层面的内容 l 路由器 的 主要工作&#xff1a; 转发分组。 l 路由 信息协议 RIP (Routing Information Protocol ) 是 一种 分布式的…

免费下载 | 2024网络安全产业发展核心洞察与趋势预测

《2024网络安全产业发展核心洞察与趋势预测》报告的核心内容概要&#xff1a; 网络安全产业概况&#xff1a; 2023年中国网络安全产业市场规模约992亿元&#xff0c;同比增长7%。 预计2024年市场规模将增长至1091亿元&#xff0c;2025年达到1244亿元。 网络安全企业数量超过4…

记忆旅游系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

微信小程序:定义页面标题,动态设置页面标题,json

1、常规设置页面标题 正常微信小程序中&#xff0c;设置页面标题再json页面中进行设置&#xff0c;例如 {"usingComponents": {},"navigationBarTitleText": "标题","navigationBarBackgroundColor": "#78b7f7","navi…

理解生成协同促进?华为诺亚提出ILLUME,15M数据实现多模态理解生成一体化

多模态理解与生成一体化模型&#xff0c;致力于将视觉理解与生成能力融入同一框架&#xff0c;不仅推动了任务协同与泛化能力的突破&#xff0c;更重要的是&#xff0c;它代表着对类人智能&#xff08;AGI&#xff09;的一种深层探索。通过在单一模型中统一理解与生成&#xff…

学习vue3的笔记

一、vue和react的对比 1、基础介绍 vue&#xff1a;https://cn.vuejs.org/ vue3是2020年创建的 react&#xff1a;https://react.dev/ react是一个2013年开源的JavaScript库&#xff0c;严格意义上来说不是一个框架 2、diff算法 两个框架采用的都是同级对比策略 两节点对…

SQLiteDataBase数据库

XML界面设计 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_paren…

k8s部署nginx+sshd实现文件上传下载

要通过 nginx 和 sshd 实现文件的上传和下载&#xff0c;通常的做法是结合 SSH 协议和 HTTP 协议&#xff0c;使用 nginx 提供 Web 服务器功能&#xff0c;同时使用 sshd&#xff08;即 SSH 服务&#xff09;来处理通过 SSH 协议进行的文件传输。 SSH 实现文件的上传和下载&…

clickhouse-backup配置及使用(Linux)

一、下载地址 Releases Altinity/clickhouse-backup GitHub 二、上传到服务器解压安装 自行上传至服务器&#xff0c;解压命令&#xff1a; tar xvf clickhouse-backup-linux-amd64.tar.gz 三、创建软连接 sudo ln -sv build/linux/amd64/clickhouse-backup /usr/local/bin/…

如何在群晖NAS上安装并配置MySQL与phpMyAdmin远程管理数据库

文章目录 前言1. 安装MySQL2. 安装phpMyAdmin3. 修改User表4. 本地测试连接MySQL5. 安装cpolar内网穿透6. 配置MySQL公网访问地址7. 配置MySQL固定公网地址8. 配置phpMyAdmin公网地址9. 配置phpmyadmin固定公网地址 前言 大家是不是经常遇到需要随时随地访问自己数据的情况&am…

《向量数据库指南》——Milvus Cloud 2.5:Sparse-BM25引领全文检索新时代

Milvus Cloud BM25:重塑全文检索的未来 在最新的Milvus Cloud 2.5版本中,我们自豪地引入了“全新”的全文检索能力,这一创新不仅巩固了Milvus Cloud在向量数据库领域的领先地位,更为用户提供了前所未有的灵活性和效率。作为大禹智库的向量数据库高级研究员,以及《向量数据…

ESP32-CAM开发板入门 (下载示例程序)

ESP32-CAM开发板例程使用 1、准备工作1.1、硬件准备1.2、软件准备 2、选择示例程序并录入第一步 1、准备工作 1.1、硬件准备 1.2、软件准备 Arduino IDE &#xff1a; 编程与写入&#xff08;下载地址 https://www.arduino.cc/en/software&#xff09; 安装好后将软件设置到…

企业赋能是什么意思-国际数字影像产业园解读

在当今竞争激烈的商业环境中&#xff0c;企业赋能已成为推动企业发展、提升竞争力的关键策略。国际数字影像产业园作为数字影像产业的重要集聚地&#xff0c;通过一系列创新举措为入驻园区的我众多企业赋能。那么&#xff0c;企业赋能究竟是什么意思呢&#xff1f; 企业赋能是…

混合并行训练框架性能对比

混合并行训练框架性能对比 1. 框架类型 DeepSpeed、Megatron - LM、Colossal - AI、SageMaker、Merak、FasterMoE、Tutel、Whale、Alpa、DAPPLE、Mesh - TensorFlow 2. 可用并行性(Available parallelisms) DNN framework(深度神经网络框架)DP(数据并行,Data Parallelis…

客户案例:基于慧集通集成平台,打通屠宰管理系统与用友U8C 系统的全攻略

一、引言 本原型客户成立于2014年&#xff0c;是一家集饲草种植、肉牛养殖、精深加工、冷链物流、餐饮服务于一体的大型农牧综合体。公司下设三个子公司分别涵盖农业、畜牧业、肉制品加工业与餐饮物流服务业。公司严格按照一二三产业融合发展要求&#xff0c;以肉牛产业化为支…

HTML5滑块(Slider)

HTML5 的滑块&#xff08;Slider&#xff09;控件允许用户通过拖动滑块来选择数值。以下是如何实现一个简单的滑块组件的详细说明。 HTML5 滑块组件 1. 基本结构 使用 <input type"range"> 元素可以创建一个滑块。下面是基本实现的代码示例&#xff1a; <…

25. C++继承 1 (继承的概念与基础使用, 继承的复制兼容规则,继承的作用域)

⭐上篇模板文章&#xff1a;24. C模板 2 (非类型模板参数&#xff0c;模板的特化与模板的分离编译)-CSDN博客 ⭐本篇代码&#xff1a;c学习 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) ⭐标⭐是比较重要的部分 目录 一. 继承的基础使用 1.1 继承的格式 1.2 …

露营小程序搭建有哪些步骤?小程序里面可以找个露营搭子

露营不仅仅是走进大自然的旅程&#xff0c;它也成为了一种社交和体验式的活动。随着小程序的普及&#xff0c;露营活动也越来越多地开始在线上开展。通过搭建一个露营小程序&#xff0c;商家不仅可以为用户提供更多的露营选择&#xff0c;还可以帮助他们找到合适的露营搭子。那…

XIAO ESP32 S3网络摄像头——2视频获取

本文主要是使用XIAO Esp32 S3制作网络摄像头的第2步,获取摄像头图像。 1、效果如下: 2、所需硬件 3、代码实现 3.1硬件代码: #include "WiFi.h" #include "WiFiClient.h" #include "esp_camera.h" #include "camera_pins.h"// 设…