元数据管理Atlas

文章目录

  • 一、Atlas概述
    • 1、Atlas入门
    • 2、Atlas架构原理
  • 二、Atlas安装
    • 1、安装环境准备
      • 1.1 安装Solr-7.7.3
      • 1.2 Atlas2.1.0安装
    • 2、Atlas配置
      • 2.1 Atlas集成Hbase
      • 2.2 Atlas集成Solr
      • 2.3 Atlas集成Kafka
      • 2.4 Atlas Server配置
      • 2.5 Kerberos相关配置
      • 2.6 Atlas集成Hive
    • 3、Atlas启动
  • 三、Atlas使用
    • 1、介绍
    • 2、Hive元数据初次导入
    • 3、Hive元数据增量同步
  • 四、扩展内容
    • 1、Atlas源码编译
      • 1.1 安装Maven
      • 1.2 编译Atlas源码
    • 2、Atlas内存配置
    • 3、配置用户名密码

一、Atlas概述

1、Atlas入门

Apache Atlas为组织提供开放式元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和管理,并为数据分析师和数据治理团队,提供围绕这些数据资产的协作功能。同时可以配合ranger对某个元数据进行权限管理

元数据分类支持对元数据进行分类管理,例如个人信息,敏感信息等
元数据检索可按照元数据类型、元数据分类进行检索,支持全文检索
血缘依赖支持表到表和字段到字段之间的血缘依赖,便于进行问题回溯和影响分析等

例如表与表之间的血缘依赖

2、Atlas架构原理

二、Atlas安装

Atlas官网地址:https://atlas.apache.org/
文档查看地址:https://atlas.apache.org/2.1.0/index.html
下载地址:https://www.apache.org/dyn/closer.cgi/atlas/2.1.0/apache-atlas-2.1.0-sources.tar.gz

1、安装环境准备

Atlas安装分为:集成自带的HBase + Solr;集成外部的HBase + Solr。通常企业开发中选择集成外部的HBase + Solr,方便项目整体进行集成操作

服务名称子服务服务器hadoop102服务器hadoop103服务器hadoop104
JDK
ZookeeperQuorumPeerMain
KafkaKafka
HBaseHMaster
HRegionServer
SolrJar
HiveHive
Atlasatlas
服务数总计1377

1.1 安装Solr-7.7.3

# 在每台节点创建系统用户solr,三台机器都创建
useradd solr
echo solr | passwd --stdin solr

# 解压solr-7.7.3.tgz到/opt/module目录,并改名为solr,102节点
wget https://archive.apache.org/dist/lucene/solr/7.7.3/solr-7.7.3.tgz
tar -zxvf solr-7.7.3.tgz -C /opt/module/
mv solr-7.7.3/ solr

# 修改solr目录的所有者为solr用户
chown -R solr:solr /opt/module/solr

# 修改solr配置文件
# 修改/opt/module/solr/bin/solr.in.sh文件中的以下属性
ZK_HOST="hadoop102:2181,hadoop103:2181,hadoop104:2181"

# 分发solr
xsync /opt/module/solr

# 启动solr集群
# 启动Zookeeper集群
zk.sh start
# 启动solr集群,出于安全考虑,不推荐使用root用户启动solr,此处使用solr用户,在所有节点执行以下命令启动solr集群
# 三台机器依次执行
sudo -i -u solr /opt/module/solr/bin/solr start
# 出现 Happy Searching! 字样表明启动成功。
# 说明:若出现警告内容是:solr推荐系统允许的最大进程数和最大打开文件数分别为65000和65000,而系统默认值低于推荐值。如需修改可参考以下步骤,修改完需要重启方可生效,此处可暂不修改。
# 修改打开文件数限制
# 修改/etc/security/limits.conf文件,增加以下内容
# * soft nofile 65000
# * hard nofile 65000
# 修改进程数限制,修改/etc/security/limits.d/20-nproc.conf文件
# *          soft    nproc     65000
# 最后重启

# 默认端口为8983,可指定三台节点中的任意一台IP,http://hadoop102:8983 
# 提示:UI界面出现Cloud菜单栏时,Solr的Cloud模式才算部署成功

1.2 Atlas2.1.0安装

# 文档:https://atlas.apache.org/#/BuildInstallation
# 可执行包涉及编译
# 把apache-atlas-2.1.0-server.tar.gz 上传到hadoop102的/opt/software目录下
tar -zxvf apache-atlas-2.1.0-server.tar.gz -C /opt/module/
mv /opt/module/apache-atlas-2.1.0 /opt/module/atlas
# # 资源获取:https://download.csdn.net/download/lemon_TT/87961006

2、Atlas配置

2.1 Atlas集成Hbase

# 修改/opt/module/atlas/conf/atlas-application.properties配置文件中的以下参数
atlas.graph.storage.hostname=hadoop102:2181,hadoop103:2181,hadoop104:2181
# 修改/opt/module/atlas/conf/atlas-env.sh配置文件
export HBASE_CONF_DIR=/opt/module/hbase/conf

2.2 Atlas集成Solr

# 修改/opt/module/atlas/conf/atlas-application.properties配置文件中的以下参数
atlas.graph.index.search.backend=solr
atlas.graph.index.search.solr.mode=cloud
atlas.graph.index.search.solr.zookeeper-url=hadoop102:2181,hadoop103:2181,hadoop104:2181
# 创建solr collection
sudo -i -u solr /opt/module/solr/bin/solr create  -c vertex_index -d /opt/module/atlas/conf/solr -shards 3 -replicationFactor 2
sudo -i -u solr /opt/module/solr/bin/solr create -c edge_index -d /opt/module/atlas/conf/solr -shards 3 -replicationFactor 2
sudo -i -u solr /opt/module/solr/bin/solr create -c fulltext_index -d /opt/module/atlas/conf/solr -shards 3 -replicationFactor 2

2.3 Atlas集成Kafka

# 修改/opt/module/atlas/conf/atlas-application.properties配置文件中的以下参数
atlas.notification.embedded=false
atlas.kafka.data=/opt/module/kafka/data
atlas.kafka.zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka
atlas.kafka.bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092

2.4 Atlas Server配置

# 修改/opt/module/atlas/conf/atlas-application.properties配置文件中的以下参数
#########  Server Properties  #########
atlas.rest.address=http://hadoop102:21000
# If enabled and set to true, this will run setup steps when the server starts
atlas.server.run.setup.on.start=false

#########  Entity Audit Configs  #########
atlas.audit.hbase.zookeeper.quorum=hadoop102:2181,hadoop103:2181,hadoop104:2181

记录性能指标,进入/opt/module/atlas/conf/路径,修改当前目录下的atlas-log4j.xml

<!--去掉如下代码的注释-->
<appender name="perf_appender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="file" value="${atlas.log.dir}/atlas_perf.log" />
    <param name="datePattern" value="'.'yyyy-MM-dd" />
    <param name="append" value="true" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d|%t|%m%n" />
    </layout>
</appender>

<logger name="org.apache.atlas.perf" additivity="false">
    <level value="debug" />
    <appender-ref ref="perf_appender" />
</logger>

2.5 Kerberos相关配置

若Hadoop集群开启了Kerberos认证,Atlas与Hadoop集群交互之前就需要先进行Kerberos认证。若Hadoop集群未开启Kerberos认证,则本节可跳过。

# 为Atlas创建Kerberos主体,并生成keytab文件
kadmin -padmin/admin -wadmin -q"addprinc -randkey atlas/hadoop102"
kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/atlas.service.keytab atlas/hadoop102"
# 修改/opt/module/atlas/conf/atlas-application.properties配置文件
atlas.authentication.method=kerberos
atlas.authentication.principal=atlas/hadoop102@EXAMPLE.COM
atlas.authentication.keytab=/etc/security/keytab/atlas.service.keytab

2.6 Atlas集成Hive

# 解压Hive Hook
tar -zxvf apache-atlas-2.1.0-hive-hook.tar.gz
# 将Hive Hook依赖复制到Atlas安装路径
cp -r apache-atlas-hive-hook-2.1.0/* /opt/module/atlas/
# 修改/opt/module/hive/conf/hive-env.sh配置文件
mv hive-env.sh.template hive-env.sh
# 增加如下参数
export HIVE_AUX_JARS_PATH=/opt/module/atlas/hook/hive

# 修改Hive配置文件,在/opt/module/hive/conf/hive-site.xml文件中增加以下参数,配置Hive Hook。
<property>
      <name>hive.exec.post.hooks</name>
      <value>org.apache.atlas.hive.hook.HiveHook</value>
</property>

# 修改/opt/module/atlas/conf/atlas-application.properties配置文件中的以下参数
######### Hive Hook Configs #######
atlas.hook.hive.synchronous=false
atlas.hook.hive.numRetries=3
atlas.hook.hive.queueSize=10000
atlas.cluster.name=primary

# 将Atlas配置文件/opt/module/atlas/conf/atlas-application.properties拷贝到/opt/module/hive/conf目录
cp /opt/module/atlas/conf/atlas-application.properties  /opt/module/hive/conf/

3、Atlas启动

# 启动Atlas所依赖的环境
# 在NameNode节点执行以下命令,启动HDFS
start-dfs.sh
# 在ResourceManager节点执行以下命令,启动Yarn
start-yarn.sh
# 启动Zookeeper集群
zk.sh start
# 启动Kafka集群
kf.sh start
# 启动Hbase集群
# 在HMaster节点执行以下命令,使用hbase用户启动HBase
sudo -i -u hbase start-hbase.sh
# 启动Solr集群
# 在所有节点执行以下命令,使用solr用户启动Solr
sudo -i -u solr /opt/module/solr/bin/solr start
# 进入/opt/module/atlas路径,启动Atlas服务
bin/atlas_start.py
# 错误信息查看路径:/opt/module/atlas/logs/*.out和application.log
# 停止Atlas服务命令为atlas_stop.py

# 访问Atlas的WebUI
# 访问地址:http://hadoop102:21000
# 注意:等待若干分钟。账户:admin,密码:admin

三、Atlas使用

1、介绍

Atlas的使用相对简单,其主要工作是同步各服务(主要是Hive)的元数据,并构建元数据实体之间的关联关系,然后对所存储的元数据建立索引,最终未用户提供数据血缘查看及元数据检索等功能。

Atlas在安装之初,需手动执行一次元数据的全量导入,后续Atlas便会利用Hive Hook增量同步Hive的元数据。

2、Hive元数据初次导入

Atlas提供了一个Hive元数据导入的脚本,直接执行该脚本,即可完成Hive元数据的初次全量导入。

# 导入Hive元数据
/opt/module/atlas/hook-bin/import-hive.sh 
# 按提示输入用户名:admin;输入密码:admin
# 等待片刻,出现以下日志,即表明导入成功:Hive Meta Data import was successful!!!

# 查看Hive元数据
# 搜索hive_table类型的元数据,可已看到Atlas已经拿到了Hive元数据

任选一张表查看血缘依赖关系,发现此时并未出现期望的血缘依赖,原因是Atlas是根据Hive所执行的SQL语句获取表与表之间以及字段与字段之间的依赖关系的,例如执行insert into table_a select * from table_b语句,Atlas就能获取table_a与table_b之间的依赖关系。此时并未执行任何SQL语句,故还不能出现血缘依赖关系

3、Hive元数据增量同步

Hive元数据的增量同步,无需人为干预,只要Hive中的元数据发生变化(执行DDL语句),Hive Hook就会将元数据的变动通知Atlas。除此之外,Atlas还会根据DML语句获取数据之间的血缘关系

四、扩展内容

1、Atlas源码编译

1.1 安装Maven

# Maven下载:https://maven.apache.org/download.cgi
# 把apache-maven-3.6.1-bin.tar.gz上传到linux的/opt/software目录下
# 解压apache-maven-3.6.1-bin.tar.gz到/opt/module/目录下面
tar -zxvf apache-maven-3.6.1-bin.tar.gz -C /opt/module/
# 修改apache-maven-3.6.1的名称为maven
mv apache-maven-3.6.1/ maven
# 添加环境变量到/etc/profile中
#MAVEN_HOME
export MAVEN_HOME=/opt/module/maven
export PATH=$PATH:$MAVEN_HOME/bin

source /etc/profile
# 测试
mvn -v

修改setting.xml,指定为阿里云vim /opt/module/maven/conf/settings.xml

<!-- 添加阿里云镜像-->
<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
    <id>UK</id>
    <name>UK Central</name>
    <url>http://uk.maven.org/maven2</url>
    <mirrorOf>central</mirrorOf>
</mirror>
<mirror>
    <id>repo1</id>
    <mirrorOf>central</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://repo1.maven.org/maven2/</url>
</mirror>
<mirror>
    <id>repo2</id>
    <mirrorOf>central</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://repo2.maven.org/maven2/</url>
</mirror>

1.2 编译Atlas源码

https://www.apache.org/dyn/closer.cgi/atlas/2.1.0/apache-atlas-2.1.0-sources.tar.gz

# 把apache-atlas-2.1.0-sources.tar.gz上传到hadoop102的/opt/software目录下
# 解压apache-atlas-2.1.0-sources.tar.gz到/opt/module/目录下面
tar -zxvf apache-atlas-2.1.0-sources.tar.gz -C /opt/module/
# 下载Atlas依赖
export MAVEN_OPTS="-Xms2g -Xmx2g"
cd /opt/module/apache-atlas-sources-2.1.0/
mvn clean -DskipTests install
mvn clean -DskipTests package -Pdis
# 一定要在${atlas_home}执行
cd distro/target/
mv apache-atlas-2.1.0-server.tar.gz /opt/software/
mv apache-atlas-2.1.0-hive-hook.tar.gz /opt/software/

# 提示:执行过程比较长,会下载很多依赖,大约需要半个小时,期间如果报错很有可能是因为TimeOut造成的网络中断,重试即可

2、Atlas内存配置

如果计划存储数万个元数据对象,建议调整参数值获得最佳的JVM GC性能。以下是常见的服务器端选项

# 修改配置文件/opt/module/atlas/conf/atlas-env.sh
#设置Atlas内存
export ATLAS_SERVER_OPTS="-server -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+PrintTenuringDistribution -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dumps/atlas_server.hprof -Xloggc:logs/gc-worker.log -verbose:gc -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1m -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCTimeStamps"
#建议JDK1.7使用以下配置
export ATLAS_SERVER_HEAP="-Xms15360m -Xmx15360m -XX:MaxNewSize=3072m -XX:PermSize=100M -XX:MaxPermSize=512m"
#建议JDK1.8使用以下配置
export ATLAS_SERVER_HEAP="-Xms15360m -Xmx15360m -XX:MaxNewSize=5120m -XX:MetaspaceSize=100M -XX:MaxMetaspaceSize=512m"
#如果是Mac OS用户需要配置
export ATLAS_SERVER_OPTS="-Djava.awt.headless=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc="
# 参数说明: -XX:SoftRefLRUPolicyMSPerMB 此参数对管理具有许多并发用户的查询繁重工作负载的GC性能特别有用

3、配置用户名密码

Atlas支持以下身份验证方法:File、Kerberos协议、LDAP协议,通过修改配置文件atlas-application.properties文件开启或关闭三种验证方法

atlas.authentication.method.kerberos=true|false
atlas.authentication.method.ldap=true|false
atlas.authentication.method.file=true|false

如果两个或多个身份证验证方法设置为true,如果较早的方法失败,则身份验证将回退到后一种方法。例如,如果Kerberos身份验证设置为true并且ldap身份验证也设置为true,那么,如果对于没有kerberos principal和keytab的请求,LDAP身份验证将作为后备方案。

本文主要讲解采用文件方式修改用户名和密码设置。其他方式可以参见官网配置即可。

# 打开/opt/module/atlas/conf/users-credentials.properties文件
vim users-credentials.properties
#username=group::sha256-password
# admin时用户名称,8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918是采用sha256加密的密码,默认密码为admin
admin=ADMIN::8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
rangertagsync=RANGER_TAG_SYNC::e3f67240f5117d1753c940dae9eea772d36ed5fe9bd9c94a300e40413f1afb9d

# 例如:修改用户名称为atguigu,密码为atguigu
# 获取sha256加密的atguigu密码
echo -n "atguigu"|sha256sum
# 获得2628be627712c3555d65e0e5f9101dbdd403626e6646b72fdf728a20c5261dc2
# 修改用户名和密码
vim users-credentials.properties
#username=group::sha256-password
atguigu=ADMIN::2628be627712c3555d65e0e5f9101dbdd403626e6646b72fdf728a20c5261dc2
rangertagsync=RANGER_TAG_SYNC::e3f67240f5117d1753c940dae9eea772d36ed5fe9bd9c94a300e40413f1afb9d

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

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

相关文章

Python可视化数据分析-柱状图/折线图

一、前言 使用python编写一个图表生成器&#xff0c;输入各公司的不良品数量&#xff0c;可以在一张图中同时展示数据的柱状图和折线图。 效果如下&#xff1a; 二、基础知识 绘制折线图和柱状图主要使用到了 pyecharts.charts 模块中的 Line 和 Bar 类。它们允许用户通过简…

拓展网络技能:利用lua-http库下载www.linkedin.com信息的方法

引言 在当今的数字时代&#xff0c;网络技能的重要性日益凸显。本文将介绍如何使用Lua语言和lua-http库来下载和提取LinkedIn网站的信息&#xff0c;这是一种扩展网络技能的有效方法。 背景介绍 在当今科技潮流中&#xff0c;Lua语言以其轻量级和高效的特性&#xff0c;不仅…

【单调栈】力扣85.最大矩形

好久没更新了 ~ 我又回来啦&#xff01; 两个好消息&#xff1a; 我考上研了&#xff0c;收到拟录取通知啦&#xff01;开放 留言功能 了&#xff0c;小伙伴对于内容有什么疑问可以在文章底部评论&#xff0c;看到之后会及时回复大家的&#xff01; 前面更新过的算法&#x…

经典目标检测YOLOV1模型的训练及验证

1、前期准备 准备好目录结构、数据集和关于YOLOv1的基础认知 1.1 创建目录结构 自己创建项目目录结构&#xff0c;结构目录如下&#xff1a; network CNN Backbone 存放位置 weights 权重存放的位置 test_images 测试用的图…

OpenFeign使用demo

OpenFeign使用demo 1. OpenFeign的作用2. OpenFeign使用demo2.1 使用方2.2 提供方 1. OpenFeign的作用 原来我们调用别人的接口&#xff0c;通常都是通过Http请求来(如下图1)&#xff0c;而现在有了OpenFeign我们就可以像调用接口的方式来完成调用。 OpenFeign 并不是一个严格…

Leetcode算法训练日记 | day31

专题九 贪心算法 一、分发饼干 1.题目 Leetcode&#xff1a;第 455 题 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的…

Matlab|含sop的配电网重构(含风光|可多时段拓展)

目录 1 主要内容 2 部分程序 3 下载链接 1 主要内容 之前分享了很多配电网重构的程序&#xff0c;每个程序针对场景限定性比较大&#xff0c;程序初学者修改起来难度较大&#xff0c;本次分享一个基础程序&#xff0c;针对含sop的配电网重构模型&#xff0c;含风电和光伏&am…

LeetCode刷题总结 | 图论2—深度优先搜索广度优先搜索较为复杂应用

深搜广搜的标准模版在图论1已经整理过了&#xff0c;也整理了几个标准的套模板的题目&#xff0c;这一小节整理一下较为复杂的DFS&BFS应用类问题。 417 太平洋大西洋水流问题&#xff08;medium&#xff09; 有一个 m n 的矩形岛屿&#xff0c;与 太平洋 和 大西洋 相邻…

算法打卡day52|单调栈篇03| 84.柱状图中最大的矩形

算法题 Leetcode 84.柱状图中最大的矩形 题目链接:84.柱状图中最大的矩形 大佬视频讲解&#xff1a;84.柱状图中最大的矩形视频讲解 个人思路 这题和接雨水是相似的题目&#xff0c;原理上基本相同&#xff0c;也是可以用双指针和单调栈解决&#xff0c;只是有些细节不同。…

树莓派3B长时间不操作屏幕息屏无信号处理

树莓派外接显示器&#xff0c;需长时间展示某个网页&#xff0c;经过一段时间&#xff0c;显示器屏幕会黑掉显示无信号。 需修改 /etc/lightdm/lightdm.conf 配置文件中新增如下两行并重启。 xserver-commandX -s 0 dpms sleep-inactive-timeout0

C++相关概念和易错语法(7)(初始化列表、隐式类型转换、友元)

1.初始化列表 初始化列表是集成在构造函数里面的&#xff0c;对象在创建的时候一定会调用构造函数&#xff08;就算不显式定义&#xff0c;也会自动生成并调用&#xff09;。初始化列表就是这些对象的成员变量在创建的时候初始化的地方。 下面是使用的例子&#xff0c;可以先…

CCIE-16-PIM

目录 实验条件网络拓朴实验环境实验目的 开始实验实验1&#xff1a;PIM-DM配置PIM域中的路由&#xff0c;开启PIM-DM组播路由功能&#xff0c;验证组播情况 实验2&#xff1a;PIM-SM&#xff08;静态RP&#xff09;配置PIM域中的路由&#xff0c;开启PIM-SM组播路由功能&#x…

3-内核开发-第一个字符设备模块开发案例

3-内核开发-第一个字符设备模块开发案例 目录 3-内核开发-第一个字符设备模块开发案例 (1) 字符设备背景介绍 (2) 简单版本字符设备模块 (3) 继续丰富我们的字符驱动模块&#xff0c;增加write,read 功能 (4) 编译执行验证 (5)总结 (6)后记 (7)参考 课程简介&#xff…

[Meachines][Easy]Crafty

Main $ sudo nmap -p- -sS -T4 10.10.11.249 发现25565端口是我的世界服务器端口 CVE-2021-44228: https://nodecraft.com/blog/service-updates/minecraft-java-edition-security-vulnerability在阿帕奇Log4j图书馆&#xff0c;广泛使用的记录框架&#xff0c;在Java应用程序…

一起Talk Android吧(第五百五十七回:如何获取文件读写权限)

文章目录 1. 概念介绍2. 使用方法3. 示例代码4. 内容总结各位看官们大家好,上一回中分享了一个Retrofit使用错误的案例,本章回中将介绍 如何获取文件读写权限。闲话休提,言归正转,让我们一起Talk Android吧! 1. 概念介绍 我们在本章回中说的文本读写权限是指读写手机中的…

0-1背包问题:贪心算法与动态规划的比较

0-1背包问题&#xff1a;贪心算法与动态规划的比较 1. 问题描述2. 贪心算法2.1 贪心策略2.2 伪代码 3. 动态规划3.1 动态规划策略3.2 伪代码 4. C语言实现5. 算法分析6. 结论7. 参考文献 1. 问题描述 0-1背包问题是组合优化中的一个经典问题。假设有一个小偷在抢劫时发现了n个…

CCF-CSP真题《202312-3 树上搜索》思路+c++满分题解

想查看其他题的真题及题解的同学可以前往查看&#xff1a;CCF-CSP真题附题解大全 问题描述 试题编号&#xff1a;202312-3试题名称&#xff1a;树上搜索时间限制&#xff1a;1.0s内存限制&#xff1a;512.0MB问题描述&#xff1a; 题目背景 问题描述 输入格式 输出格式 样…

BioTech - 使用 Amber 工具 松弛(Relaxation) 蛋白质三维结构 (Python)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/137889532 Amber 工具在蛋白质 松弛(Relaxation) 过程中起着重要的作用。在分子动力学模拟中,蛋白质松弛是指模拟过程中蛋白质结构达到一个较为稳定的状态。这个过程通…

SQLite轻量级会话扩展(三十四)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite R*Tree 模块&#xff08;三十三&#xff09; 下一篇&#xff1a;SQLite—系列文章目录 1. 引言 会话扩展提供了一种方便记录的机制 对 SQLite 数据库中某些表的部分或全部更改&#xff0c;以及 将这些…

视频质量评价 SSIM 算法详细介绍

SSIM SSIM(Structural Similarity Index Measure)是一种用于衡量两幅图像之间相似度的指标,是属于全参考视频质量评价算法范畴;它在图像质量评估领域得到了广泛的应用。SSIM是基于人类视觉系统的特性设计的,它考虑了图像的亮度、对比度和结构信息。SSIM的值范围在-1到1之…