数据治理之元数据管理:Apache Atlas

Apache Atlas 是一个开源的数据治理和元数据管理框架 ‌,主要帮企业管好数据资产目录、分类和血缘关系,让数据更透明、更安全 。‌‌‌ Apache Atlas‌ 官网

一、Apache Atlas的作用

  • 元数据管理:Apache Atlas 能够追踪和管理各种数据源(如:HBase、Hive、Sqoop、Storm、Kafka)的元数据信息,包括数据实体、关系和属性等(数据库表结构、字段信息、数据血缘关系、数据的业务含义等),从而帮助用户更好的理解数据资产。

  • 数据分类:对数据进行分类和打标签,以便更好地组织和检索数据。例如,可以将数据分为客户数据、销售数据、财务数据等不同类别,并为每个数据资产添加相应的标签,如"敏感数据""高价值数据"等。这样可以方便数据使用者快速找到所需的数据,同时也有助于企业实施数据安全和合规策略。

  • 数据血缘:以直观的图形化界面展示数据从产生到消费的完整链路,是数据溯源、影响分析和问题排查的核心工具。

  • 搜索与发现:提供强大的搜索和浏览功能,用户可以通过关键字搜索快速找到相关的数据资产。同时,Atlas 还提供了可视化的界面,用户可以直观地浏览数据资产的元数据信息、血缘关系等。

  • 安全与策略 :提供细粒度的元数据访问控制。最重要的是,它能与Apache Ranger深度集成,实现基于数据分类的动态数据屏蔽(如对"国家ID"列自动脱敏)。

二、Apache Atlas的架构

Atlas的组件可以分为以下四大类:核心层(Core)集成层(Integration)元数据源(Metadata Sources)应用层(Applications)

1. 核心层(Core)------ 存储与索引的基石

这是Atlas的大脑和存储中枢,负责元数据的建模、持久化和内部流转。

1.1 类型系统(Type System)

类型系统是Atlas的元数据建模引擎 ,本质上是一套面向大数据资产的"面向对象建模语言"。它负责定义元数据的结构、类型、关系及约束,是整个Atlas存储、检索和分析数据的元模型基石。

Atlas允许用户为要管理的元数据对象定义模型。该模型由称为"类型(Type)"的定义构成。"类型"的实例称为"实体(Entity)",代表实际被管理的元数据对象。类型系统组件让用户能定义和管理这些类型与实体。Atlas开箱即管的所有元数据对象(如Hive表)都基于类型建模并表现为实体。

  • **Type(类型):**是元数据对象定义的模板(相当于Class类),用于定义属性结构。

    • **五大元类型(Metatype):**是Atlas内置的类型分类体系,包括:

      • 原始类型(Primitive)booleanbyteshortintlongfloatdoublebigintegerbigdecimalstringdate

      • 枚举类型(Enum):限定值列表。

      • 集合类型(Collection)arraymap

      • 复合类型(Composite)Entity(存独立对象Struct(存嵌入属性Classification(动态打标签且可沿血缘传播 )、Relationship(定义实体间双向关联,支撑图谱导航)。

  • Entity(实体): 是Type(类型)的实例(相当于Object对象),用于存储具体元数据值,通过GUID全局唯一标识,实现具体资产的管理。

  • 属性(Attributes): 属性在EntityStructClassificationRelationship等元类型内部定义。属性除了名称和元类型值外,还有更多特性。

    属性名 类型 含义
    name string 属性名称
    typeName string 属性的元类型名称(原始/集合/复合类型)
    isOptional boolean 是否可选(false表示必须赋值)
    isIndexable boolean 是否创建索引(支持高效查询)
    isUnique boolean 是否唯一(创建唯一索引,类似主键)
    cardinality enum 基数:SINGLE(单值)、LIST(列表)、SET(集合)
  • 系统预定义类型(System Specific Types) **:**Atlas预置了一些系统类型,用于提供一致的建模基类和约定。
系统类型 继承自 核心属性 用途说明
Referenceable qualifiedName(唯一限定名) 所有可通过唯一属性qualifiedName搜索的实体的基类。
Asset Referenceable name(必填)、descriptionowner 为实体提供名称、描述、所有者等通用元数据,方便UI和应用程序做约定式展示。
Infrastructure Asset (继承上述) 作为基础设施元数据(如集群、主机)的通用父类型。
DataSet Referenceable (继承) 代表存储数据 的类型。hive_tablehbase_table等都继承自它。这类类型通常拥有"模式(Schema)"属性(如columns),其实例会参与数据转换,形成数据血缘(Lineage)
Process Asset inputs(array<DataSet>)、outputs(array<DataSet>) 代表数据转换操作 (如ETL任务)。通过inputsoutputs属性,Process类型的实例完整记录了数据集的血缘演变过程。

一句话贯穿:通过Type定义模板,用Entity填充数据,借Classification打标和Relationship连线,再依托DataSet/Process基类自动形成血缘,最终靠属性约束保证质量。 这就是Atlas类型系统的全部精髓。


1.2 图引擎(Graph Engine)

Atlas的图引擎 是其核心层的数据持久化与关系处理中间件。它扮演"翻译官"的角色,负责将类型系统定义的逻辑模型(Type/Entity/Relationship)转换为底层的图结构(顶点/边)进行物理存储,并执行所有元数据的检索与遍历操作。

  1. 支撑复杂血缘(杀手锏) :专为数据血缘影响分析而生。当查询一张表的上下游链路时,图引擎利用图遍历算法(而非传统SQL的递归JOIN),能在毫秒级返回多层依赖关系,这是它区别于普通元数据库的根本原因。

  2. 高效关系导航:支持双向关联查询(如上查来源、下查影响),完美适配元数据网状结构的天然特性。

  3. 统一索引管理:统一管理属性索引(全文/精确)和图索引,保障搜索性能。

层级 技术选型(默认) 核心职责
图数据库引擎(API层) JanusGraph 作为抽象层,对外提供Gremlin图遍历语言接口,管理顶点、边和属性的生命周期。
持久化存储层(存数据) HBase(主流)或 RocksDB 将图结构(顶点ID、边ID、属性键值)以二进制形式落盘存储
外部索引层(建索引) Solr(主流)或 Elasticsearch 构建双重索引: ① 精确/全文属性索引(快速根据名称搜索表); ② 地理/数值范围索引,大幅提升复杂查询效率。

1.3 元数据导入/导出(Ingest / Export)

Ingest(导入)Export(导出) 是Atlas的**"元数据高速公路"** 。前者负责将外部元数据写入 Atlas,后者负责将Atlas内部的元数据变更广播 出去。两者共同构建了Atlas与外部生态双向实时同步的通道。

模式 Ingest(导入)实现 Export(导出)实现
同步(API) 应用调用 REST API 直接提交元数据(适合一次性批量导入或管理界面操作)。 无(导出不支持同步拉取,均为异步推送)。
异步(消息) 数据源(如Hive)的 Hook(钩子) 捕获变更,发送至 Kafka,Atlas订阅消费后写入。 Atlas内部发生变更后,主动将事件写入 Kafka 特定Topic,下游应用(如Ranger、审计系统)订阅消费,实现实时响应。
🏗️ 底层架构(数据流全景)
  1. Hook(埋点插件) :嵌入在Hive/Spark等数据源进程中的拦截器。异步非阻塞设计,即使Atlas宕机也不影响源端业务,事件会暂存Kafka。

  2. 消息总线(Kafka) :充当解耦缓冲层

    • ATLAS_HOOK Topic:接入层,防止数据洪峰冲垮Atlas。

    • ATLAS_ENTITIES Topic:出口层,保证事件不丢失,支持多下游订阅。

  3. 线程池(内部处理) :Atlas Server内部有专门的Consumer线程池 拉取Kafka消息,经过图引擎 持久化后,再触发Notification派发线程将事件发出。


2. 集成层(Integration)------ 与外部世界的通道

集成层(Integration) 是Atlas对外提供的**"交互通道"** ,本质上是同步与异步双模接口 。它的作用是让外部系统能够管理元数据 (增删改查),也能感知元数据变更 ,实现与大数据生态的无缝对接

对比维度 API(RESTful API) 消息接口(Messaging - Kafka)
通信模式 同步(请求-响应) 异步(发布-订阅)
交互方向 双向(外部↔Atlas) 双向(外部→Atlas Hook ;Atlas→外部 通知
核心作用 直接操作:创建/更新/删除类型与实体;执行元数据检索与发现(UI后台主力)。 事件驱动:实时捕获数据源变更(Ingest);广播元数据变更事件给下游(Export)。
使用场景 Atlas管理界面、运维脚本、一次性批量导入。 Hive/Spark Hook 发送元数据;Ranger消费事件做动态权限;审计系统订阅。
一致性 强一致性(操作立即生效并返回结果)。 最终一致性(延迟秒级,通过Kafka缓冲解耦)。
可靠性保障 依赖HTTP重试机制。 Kafka持久化保证消息不丢失,Atlas重启后可回溯消费。

3. 元数据源(Metadata Sources)------ 开箱即用的连接器

元数据源 是Atlas预置的**"生态适配器"** ,即针对各类大数据组件内置的元数据模型(TypeDefs) + 采集通道(Hook/Bridge) 。其作用是从这些外部系统中自动、实时或批量地捕获元数据,灌入Atlas核心存储,实现"零代码"接入。

  • 采集方式(两种模式)
模式 实现机制 适用场景
实时钩子(Hook) 嵌入在数据源进程中的拦截器,捕获变更后发往Kafka。 Hive/Spark等,要求秒级感知表结构变更。
批量桥接(Bridge) 独立运行的周期性同步任务,通过JDBC或API拉取元数据。 传统关系型数据库、云服务,容忍分钟级延迟。
  • 元数据源(分类清单)
分类 具体组件 采集方式 说明
Hadoop生态(经典) HiveHBaseKafkaStormSqoop Hook(实时) 开箱即管,官方首批支持的经典组件。
计算引擎(现代) Apache Spark(含SQL/Streaming) Hook(实时) 捕获表、列、ETL作业及血缘。
数据湖/云服务(扩展) AWS GlueGCP BigQueryAzure Data Lake Bridge(批量) 通过桥接器周期性同步云上数据目录。
传统数据库(延伸) MySQLPostgreSQLOracle 等(通过JDBC) Bridge(批量) 通过第三方桥接工具(如Apache Nifi)或自定义脚本接入。

注:每个数据源由两部分构成 :① 类型模型 (如hive_table定义);② 采集组件(Hook或Bridge)。


4. 应用层(Applications)------ 治理价值落地的舞台

应用层 是Atlas的**"价值出口"** ,即元数据最终被消费和落地的场景层。它的作用是将底层存储的"技术元数据"转化为实际业务价值,满足数据治理、安全合规、资产发现等企业级需求。

4.1 Atlas管理界面(Admin UI)

"人"看数据的窗口 :提供搜索与类SQL查询,实现资产快速查找;核心是数据血缘可视化 (展示表和ETL任务的上下游流转);支持业务注释(为字段添加业务含义,打通技术与业务隔阂)。

4.2 基于标签的策略(Tag Based Policies - 与Apache Ranger集成)

"机器"执行安全管控 :消费Atlas的元数据变更事件(通过Kafka)。安全员可在Ranger中定义规则(如"打上PII标签的列,普通用户查询时脱敏"),实现动态数据屏蔽与行/列过滤 ,且策略随标签自动传播(下游派生表自动继承脱敏规则),无需修改业务SQL。

工作流示例 :数据管理员在Atlas中给"身份证号"列打上PII分类 -> Atlas通过Kafka通知Ranger -> 安全管理员在Ranger中配置一条策略:"凡属于PII的分类,普通用户查询时返回***" -> 生效后,下游所有组件(Hive、HBase、Spark SQL)查询该列时自动脱敏,全程无需修改业务SQL代码,实现了"安全策略与数据位置解耦"。

5. 架构全景总结图(概念理解)

  1. 存储底座(核心层) :JanusGraph存关系,Solr建索引,Kafka传事件, Hbase存储元数据

  2. 接入窗口(集成层):同步查用API,异步稳调用Kafka。

  3. 生态触手(元数据源):Hook实时抓取Hive/Spark的数据变更。

  4. 价值出口(应用层):UI给人看血缘,Ranger给机器做动态安全控制。

三、实践:自动导入Hive的元数据(待验证)

基于 Metastore 事件监听器

📋 前置条件

  • Atlas 服务已部署并正常运行(含 Kafka、HBase、Solr)。

  • Hive 版本 ≥ 3.0.0 (因为要用到 transactional.event.listeners 特性)。

  • Atlas 与 Hive 集群网络互通,能访问同一 Kafka 集群。


第 1 步:部署 Atlas Hive Hook 插件(JAR 包)

Atlas 自带了 Hive 的钩子实现,需要将其放到 Hive 的类路径下。

bash 复制代码
# 进入 Atlas 安装目录的 hook 文件夹
cd /opt/apache-atlas-2.2.0/hook/hive

# 将 Atlas 的 Hive Hook JAR 包和依赖复制到 Hive 的 lib 目录
cp atlas-hive-hook-2.2.0.jar /opt/hive-3.1.3/lib/
cp ../common/atlas-common-2.2.0.jar /opt/hive-3.1.3/lib/
# 同时需要把 Atlas 依赖的图库、日志库一并复制(具体文件见下文注意点)

注意 :为了避免 jar 包冲突,建议通过设置环境变量 HIVE_AUX_JARS_PATH 的方式加载,而不是直接拷贝到 lib,因为直接拷贝可能覆盖 Hive 原有包。推荐做法:

bash 复制代码
export HIVE_AUX_JARS_PATH=/opt/apache-atlas-2.2.0/hook/hive/*:/opt/apache-atlas-2.2.0/hook/common/*

第 2 步:配置 Hive Metastore(核心)

修改 $HIVE_HOME/conf/hive-site.xml,添加以下属性:

XML 复制代码
<!-- 1. 启用 Metastore 事务性事件监听器(核心配置) -->
<property>
    <name>hive.metastore.transactional.event.listeners</name>
    <value>org.apache.atlas.hive.hook.HiveMetastoreHookImpl</value>
</dependency>

<!-- 2. 允许 Metastore 接收外部 API 通知(默认 false,必须改为 true) -->
<property>
    <name>hive.metastore.event.db.notification.api.auth</name>
    <value>false</value>
</property>

<!-- 3. 指定 Atlas Hook 的配置文件路径(用于读取 Kafka 地址等) -->
<property>
    <name>atlas.hook.hive.conf.dir</name>
    <value>/opt/apache-atlas-2.2.0/conf/</value>
</property>

<!-- 4. 开启 Metastore 事件通知持久化(避免漏记 DDL) -->
<property>
    <name>hive.metastore.notifications.add.thrift.objects</name>
    <value>true</value>
</property>

<!-- 5. 可选:Hook 处理超时时间,防止影响 Hive 正常执行 -->
<property>
    <name>atlas.hook.hive.synchronous</name>
    <value>false</value>   <!-- 异步执行,不影响 Hive 性能 -->
</property>

第 3 步:配置 Atlas 服务器端(接收端)

修改 $ATLAS_HOME/conf/atlas-application.properties,确保以下 Kafka 消费配置正确(通常默认已配好,只需确认):

css 复制代码
# 指定监听的 Kafka Topic(默认即为 ATLAS_HOOK)
atlas.kafka.topic.input=ATLAS_HOOK

# 消费者组 ID(唯一标识,多个 Atlas 实例需区分)
atlas.kafka.consumer.group.id=atlas-group

# Kafka 集群地址(务必与 Hive 侧访问的是同一个)
atlas.kafka.bootstrap.servers=node1:9092,node2:9092,node3:9092

# 自动创建 Topic 分区数(默认即可)
atlas.kafka.topic.input.partitions=1

第 4 步:复制 Atlas 全局配置文件到 Hive 节点

为了让 Hive 端的 Hook 能读取到 Kafka 地址,需要把 Atlas 的配置文件放到 Hive 节点上(已在第 2 步通过 atlas.hook.hive.conf.dir 指定):

bash 复制代码
# 在 Hive 节点创建目录(如 /usr/hdp/current/atlas-client/conf)
mkdir -p /usr/hdp/current/atlas-client/conf

# 复制 Atlas 服务的核心配置文件
cp $ATLAS_HOME/conf/atlas-application.properties /usr/hdp/current/atlas-client/conf/
cp $ATLAS_HOME/conf/atlas-log4j.xml /usr/hdp/current/atlas-client/conf/

第 5 步:重启 Hive Metastore 服务

配置改动需要重启 Hive Metastore 才能生效。

bash 复制代码
# 根据你的集群管理方式(以 Ambari 或原生命令为例)
# 原生命令:
ps -ef | grep HiveMetastore  # 找到 PID,先 kill
nohup hive --service metastore &  # 重启

# 若使用 Ambari/CM,直接在 Web 界面点击 Restart Hive Metastore
复制代码
注意:Atlas 服务不需要重启,因为它一直在监听 Kafka Topic,只要 Kafka 地址正确即可。

第 6 步:验证测试

  1. 执行一条 Hive DDL

    sql 复制代码
    CREATE DATABASE test_atlas;
    CREATE TABLE test_atlas.employee (id int, name string);
    INSERT INTO test_atlas.employee VALUES (1, 'zhang');
  2. 查看 Atlas UI

    • 搜索 employee 表,应能看到该表实体。

    • 点击该表,查看数据血缘(Lineage) ,应能看到 insert 操作产生的 Process 节点。

    • 查看 test_atlas 数据库,应能正确显示所属关系。

  3. 检查日志(排错)

    • 查看 Hive Metastore 日志:$HIVE_HOME/logs/hive.log,搜索 Atlas 字样,确认无报错。

    • 查看 Atlas Server 日志:$ATLAS_HOME/logs/application.log,确认消费消息正常。


⚙️ 备用方案:传统 Hive Hook(适用于 Hive 1.x/2.x)

如果 Hive 版本低于 3.0,无法使用 Metastore 监听器,则采用传统方案,在 hive-site.xml 中配置:

XML 复制代码
<property>
    <name>hive.exec.post.hooks</name>
    <value>org.apache.atlas.hive.hook.HiveHook</value>
</property>

缺点 :只能捕获通过 hive CLI 或 Beeline 提交的 SQL,无法感知其他引擎(如 Spark)通过 Metastore 直接创建的表。


⚠️ 常见踩坑点

问题现象 可能原因 解决方案
Atlas 界面查不到表 Hook 未加载,或 Kafka 消息未发送。 检查 hive-site.xml 中监听器类名是否拼写正确(HiveMetastoreHookImplatlas-hive-hook 包中)。
血缘显示不完整 INSERT 语句中的表别名或 CTE(公用表表达式)解析失败。 升级 Atlas 版本或调整 SQL 写法(避免过于复杂的嵌套子查询)。
Hive 启动报 ClassNotFound Atlas Hook 依赖的 jar 包缺失(如 Jackson、Guava 版本冲突)。 采用 HIVE_AUX_JARS_PATH 方式加载,避免污染 Hive 原生 lib。
Kafka 消息堆积 Atlas 消费者处理太慢或未启动。 检查 Atlas 服务状态,适当增加 atlas.kafka.consumer.threads 并发数。

四、Atlas集成Ranger

1. 核心工作原理(逻辑流)

整个集成的本质是 "标签(Tag)从 Atlas 流向 Ranger"。执行逻辑分为 5 步:

  1. 打标(Tagging) :数据管理员在 Atlas UI 上,给某张 Hive 表的 id_card 列打上 PII(个人身份信息)分类标签。

  2. 通知(Notify) :Atlas 检测到实体变更,立即将"PII 标签已附加到某列"的增量事件,发送至 Kafka 的 ATLAS_ENTITIES Topic。

  3. 同步(Sync) :Ranger 的 TagSync 组件 (专门用来接 Atlas 消息的进程)持续消费该 Topic,收到事件后,将映射关系(PII -> 某集群某表某列)写入 Ranger 自己的 标签数据库(Tag DB)

  4. 策略(Policy) :安全管理员在 Ranger Admin UI 中,创建一条全局策略------"凡是拥有 PII 分类的列,对普通用户(user组)进行 数据脱敏 (显示为 ***)"。

  5. 执行(Enforce) :普通用户执行 SELECT * FROM table,SQL 经过 Hive Server 的 Ranger 插件 时,插件会拦截并询问 Ranger:"这个列有没有标签?有什么策略?"。Ranger 返回"脱敏指令",Hive 在返回结果前将真实数据替换为 ***

2. 底层架构与组件图谱

3. 详细配置操作步骤(生产环境标准流程)

第一步:Atlas 侧配置(开启 Tag 通知)

确保 Atlas 已经配置了 Ranger 所需的 Kafka 出口 Topic。在 atlas-application.properties 中检查:

css 复制代码
atlas.kafka.topic.output=ATLAS_ENTITIES  # 默认即为此
atlas.kafka.bootstrap.servers=xxx:9092   # 指向正确的Kafka

无需额外操作,只要 Atlas 处理元数据变更,就会自动向该 Topic 发消息。

第二步:Ranger 侧配置(部署 TagSync 服务)

Ranger 需要启动一个专门同步 Atlas 标签的服务------TagSync

  1. 连接配置 :修改 Ranger TagSync 的配置文件(通常在 install.propertiesranger-tagsync-site.xml):

    XML 复制代码
    <property>
      <name>ranger.tagsync.atlas.host</name>
      <value>http://atlas-host:21000</value>   <!-- Atlas 服务地址 -->
    </property>
    <property>
      <name>ranger.tagsync.kafka.bootstrap.servers</name>
      <value>kafka-host:9092</value>
    </property>
    <property>
      <name>ranger.tagsync.kafka.topic</name>
      <value>ATLAS_ENTITIES</value>            <!-- 消费 Atlas 主题 -->
    </property>
  2. 启动服务 :执行 ./start.sh 启动 Ranger TagSync 进程。它会持续运行,类似于一个守护线程。

第三步:在 Ranger Admin 中定义"标签策略"(核心操作)

这是集成后的关键动作,需要登录 Ranger Web UI:

  1. 创建服务(Service):确保已添加 Hive/Spark 等服务实例。

  2. 新建策略(Policy)

    • 选择 "Tag Based Policy"(基于标签的策略)。

    • 策略内容:指定标签(例如 PII)、指定用户/组(例如 analyst 组)、指定操作(select)。

    • 关键配置 :在 "Access Condition""Masking" 选项中,选择 动态脱敏(Dynamic Masking) ,例如设置为 MASK(显示前4位后4位)或 MASK_NULL(全展示为***)。

第四步:启用数据源端的 Ranger 插件(触发执行)

光有 Ranger 策略不够,执行 SQL 的 Hive Server 必须装上 Ranger 插件并启用标签策略感知。

  1. 在 Hive Server 的 ranger-hive-security.xml 中,增加:

    XML 复制代码
    <property>
      <name>ranger.plugin.hive.policy.rest.url</name>
      <value>http://ranger-admin:6080</value>
    </property>
    <property>
      <name>ranger.plugin.hive.enable.tag.policy</name>
      <value>true</value>   <!-- 关键:必须开启标签策略支持 -->
    </property>
  2. 重启 Hive Server 或相关组件,使插件重新加载配置。


4. 关键特性与高级玩法(为什么这么强大?)

  • 自动继承(Propagation Propagation) :这是最亮眼的功能。如果上游表 A 打上了 PII,通过 ETL 处理生成下游表 B,Atlas 血缘机制将 PII 标签自动传播给 B。Ranger 监听到 B 也有了该标签,无需人工操作,B 表自动套用相同的脱敏规则。

  • 行级过滤(Row-Level Filter) :不仅能脱敏列,还能过滤行。例如,给"地区"字段打上 Region_EU 标签,Ranger 策略可配置为"只有欧洲团队能看到欧洲数据行",实现精细化的数据隔离。

  • 多组件统一覆盖:一次策略定义,只要 Hive、HBase、Kafka、Spark SQL 都接了 Ranger 插件并开启了 Tag 策略,所有组件的访问行为都会被统一管控。


5. 避坑指南 & 注意事项

常见问题 原因分析 解决方案
Ranger 界面看不到新打的标签 TagSync 进程未启动,或 Kafka 网络不通。 检查 TagSync 日志,确认是否有 Atlas Tag Sync Success 日志。
SQL 执行未脱敏,数据依然可见 Hive 插件未启用 enable.tag.policy,或策略未下发至本地缓存。 检查 Hive 配置文件,并等待 1-2 分钟(Ranger 策略刷新有缓存间隔)。
延迟较大 标签从 Atlas 打标到 Ranger 生效需要经过 Kafka + TagSync 轮询。 默认有秒级延迟。如需秒级强一致性,需调整 TagSync 的拉取间隔参数(polling.interval),但会增加资源消耗。
标签爆炸 滥用标签传播,导致下游百万列都有标签,压垮 Ranger DB。 设置合理的 propagation 开关,避免无意义标签无限向下游传播。
相关推荐
Kina_C4 小时前
Apache HTTP Server 安装、配置与高级功能详解
linux·http·apache
java_logo8 小时前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
Zhu7581 天前
在k8s环境部署Apache Superset最新版
容器·kubernetes·apache
Zhu7581 天前
在k8s环境部署Apache zookeeper3.9.5,高可用,多pod
容器·kubernetes·apache
程序猿乐锅3 天前
【苍穹外卖 day11|统计报表接口与 Apache ECharts 图表展示】
前端·apache·echarts
硬核科技牛4 天前
AI生成的小程序,数据能导出换平台吗
小程序·apache
观远数据5 天前
连锁零售的BI落地清单:从门店日报到智能补货的6步推进路径
apache·零售
似璟如你5 天前
IoTDB 从零入门:安装、部署与第一个时序数据写入(Windows版本)
apache·时序数据库·iotdb
DolphinScheduler社区6 天前
Apache DolphinScheduler “僵尸任务”怎么处理?新旧版本安全清理方案
apache·海豚调度·大数据工作流调度