Hudi部署

news2025/4/16 2:34:52

目录

前言

Hudi的介绍

一、Hudi是什么?

二、Hudi的特点功能和优势

三、Hudi的使用场景

Hudi的搭建部署

一、准备

二、搭建

1)搭建JAVA环境和Hadoop环境

2)部署zookeeper

3)部署Spark on yarn

4)部署maven环境

5)部署Hudi环境

三、执行编译,构建maven

Hudi的简单使用

一、准备案例

二、启动spark-shell,配置启动序列化参数


前言

随着大数据技术的飞速发展,企业对于数据处理的效率和实时性的要求也越来越高。Hadoop作为大数据领域的领军技术,长久以来一直承载着海量数据的存储和处理任务。然而,传统的Hadoop数据模型在处理更新和删除操作时的局限性,使得它难以满足实时数据湖等复杂场景的需求。

正是在这样的背景下,Hudi应运而生。Hudi,即Hadoop Upserts Deletes and Incrementals,是一个开源的数据存储层,它旨在解决Hadoop在处理更新和删除操作时的不足,使得大规模分析数据集的实时更新和增量处理成为可能。

本文旨在详细介绍如何搭建和部署Hudi,帮助读者了解并掌握这一强大的数据存储工具。我们将从环境准备、软件安装、配置调整、数据加载到性能优化等各个方面进行阐述,确保读者能够按照步骤顺利地搭建起自己的Hudi环境。

通过本文的学习,读者将能够了解到Hudi的基本原理和架构,掌握其安装和配置方法,并能够利用Hudi实现数据的实时更新和增量处理。无论是数据工程师、数据科学家还是大数据爱好者,都可以通过本文获得Hudi搭建和部署的实用知识和经验。

让我们一同走进Hudi的世界,探索它如何为实时数据湖的建设提供强大的技术支持,并为企业带来更高效、更灵活的数据处理能力。

Hudi的介绍

一、Hudi是什么?

Hudi(Hadoop Upserts Deletes and Incrementals)是一个开源的数据存储层,旨在优化Hadoop和HDFS上大规模分析数据集的更新、删除和增量处理。Hudi特别关注实时数据湖用例,使得数据工程师和数据科学家能够轻松地管理、查询和分析实时或几乎实时更新的数据集。

二、Hudi的特点功能和优势

  1. 支持增量更新和删除:传统上,Hadoop和HDFS是为批量处理而设计的,不支持对数据的更新或删除。然而,随着实时数据处理的需求增长,这种限制变得越来越明显。Hudi通过引入新的数据模型解决了这个问题,允许用户在不重写整个数据集的情况下,对特定记录进行更新或删除。

  2. 高效的数据摄取:Hudi提供了多种数据摄取方法,包括批量加载、流式摄取和实时摄取。这使得Hudi能够灵活适应不同的数据处理需求,无论是定期批量加载数据还是持续不断地从数据源摄取数据。

  3. 与Hadoop生态系统集成:Hudi与Hadoop生态系统中的其他组件(如Hive、Spark、Flink等)紧密集成,使得用户能够利用这些工具进行数据分析、查询和转换。

  4. 优化查询性能:Hudi使用列式存储格式,并结合索引和分区策略,优化了查询性能。这有助于加速数据分析任务,特别是在处理大规模数据集时。

  5. 版本控制和回滚:Hudi支持数据的版本控制,这意味着用户可以跟踪数据的更改历史,并在必要时回滚到之前的版本。

  6. 简化数据管理:通过使用Hudi,用户可以更容易地管理数据湖中的数据,包括处理数据的生命周期、保留策略和归档等。

  7. 优化存储和查询性能:Hudi 采用了多种技术来优化存储和查询性能,如列式存储、索引、分区等。这些技术使得用户可以更快地查询和分析数据。

三、Hudi的使用场景

1)近实时写入

减少碎片化工具的使用。
CDC 增量导入 RDBMS 数据。
限制小文件的大小和数量。


2)近实时分析

相对于秒级存储(Druid, OpenTSDB),节省资源。
提供分钟级别时效性,支撑更高效的查询。
Hudi作为lib,非常轻量。


3)增量 pipeline

区分arrivetime和event time处理延迟数据。
更短的调度interval减少端到端延迟(小时 -> 分钟) => Incremental Processing。


4)增量导出

替代部分Kafka的场景,数据导出到在线服务存储 e.g. ES。

Hudi的搭建部署

一、准备

准备下图的安装包:

具体准备要求:

1)确保安装了JAVA开发工具包(JDK),因为Hudi是基于Java开发的,因此JDK是必需的。确保安装了与Hudi兼容的JDK版本,并配置好环境变量,以便在命令行中能够直接使用。

2)由于Hudi依赖于Apache Hadoop和Apache Spark,因此在安装Hudi之前,需要先安装和配置这两个组件。

3)需要安装并配置 Apache Maven:

Maven是一个项目管理工具,用于自动化构建Java项目,并管理项目的依赖关系。安装Maven后,需要设置其环境变量,并确保可以在命令行中调用Maven命令。

部署maven的原因:

在搭建和部署Hudi的过程中,之所以需要搭建Maven环境,主要是因为Hudi项目本身是基于Java开发的,并且采用了Maven作为项目管理工具。Maven在Java项目开发中扮演了重要的角色,它提供了项目构建、依赖管理等功能,能够大大简化项目的开发和维护过程。

具体来说,Maven通过定义项目对象模型(POM),帮助开发者管理项目的构建过程、依赖关系、生命周期等。对于Hudi项目而言,Maven可以自动处理其所需的Java依赖库,包括其他Java项目或库,确保项目在编译、测试和运行时能够正确引用这些依赖。

此外,Maven还提供了丰富的插件生态系统,这些插件可以扩展Maven的功能,实现诸如代码编译、打包、发布等操作。在Hudi的搭建和部署过程中,这些插件可以帮助我们自动化地完成一些繁琐的任务,提高开发效率。

因此,为了顺利搭建和部署Hudi,我们需要先搭建Maven环境,以便利用Maven的强大功能来管理Hudi项目的构建和依赖关系。这样,我们可以确保Hudi项目在开发和运行过程中能够正确、高效地运行,为后续的数据处理和分析工作提供有力的支持。

4)需要下载Hudi的发布版本

二、搭建

1)搭建JAVA环境和Hadoop环境

https://blog.csdn.net/2301_78038072/article/details/136498258icon-default.png?t=N7T8https://blog.csdn.net/2301_78038072/article/details/136498258

2)部署zookeeper

https://blog.csdn.net/2301_78038072/article/details/136505364icon-default.png?t=N7T8https://blog.csdn.net/2301_78038072/article/details/136505364

3)部署Spark on yarn

生产生活中 因为数据量比较大,是以TB、PB级别的数据量,所以建议部署在yarn上

https://blog.csdn.net/2301_78038072/article/details/136632914icon-default.png?t=N7T8https://blog.csdn.net/2301_78038072/article/details/136632914

4)部署maven环境

①解压缩安装包到/opt/module目录下

tar -zxvf /opt/software/apache-maven-3.6.3-bin.tar.gz -C /opt/module/

②配置maven的环境变量

vim /etc/profile.d/bigdata_env.sh

添加:

#MAVEN_HOME
export MAVEN_HOME=/opt/module/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin

退出保存,刷新环境,使其生效:

source /etc/profile

③验证是否成功

mvn -v

④修改apache-maven-3.6.1/conf目录下的settings.xml文件

(1)添加maven本地仓库路径

跳转到大概55行左右,添加内容:

<localRepository>/opt/software/RepMaven</localRepository>

(2)修改阿里云镜像

跳转到大概160行左右,添加内容:

<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</namw>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

5)部署Hudi环境

①解压缩安装包到/opt/module目录下

tar -zxvf /opt/software/hudi-0.11.0.src.tgz -C /opt/module/

②修改hudi-0.11.0文件夹目录下的pom.xml文件

(1)111行和113行左右 修改hadoop与hive版本兼容

(2)1170行左右 新增中央仓库repository加速依赖下载

<repository>
        <id>nexus-aliyun</id>
        <name>nexus-aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
</repository>

  修改源码兼容hadoop3 

vim /opt/module/hudi-0.11.0/hudi-common/src/main/java/org/apache/hudi/common/table/log/block/HoodieParquetDataBlock.java

113左右

④修改hudi-0.11.0/packaging/hudi-spark-bundle/文件夹目录下的pom.xml文件

vim /opt/module/hudi-0.11.0/packaging/hudi-spark-bundle/pom.xml

解决spark模块依赖冲突

(1)380行左右 hive

<exclusions>
        <exclusion>
          <artifactId>guava</artifactId>
          <groupId>com.google.guava</groupId>
        </exclusion>
        <exclusion>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.pentaho</groupId>
          <artifactId>*</artifactId>
        </exclusion>
</exclusions>

(2)410行左右  hive-jdbc

<exclusions>
        <exclusion>
          <groupId>javax.servlet</groupId>
          <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>*</artifactId>
        </exclusion>
</exclusions>

(3)430行左右 hive-metastore

<exclusions>
        <exclusion>
          <groupId>javax.servlet</groupId>
          <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.datanucleus</groupId>
          <artifactId>datanucleus-core</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
          <artifactId>guava</artifactId>
          <groupId>com.google.guava</groupId>
        </exclusion>
</exclusions>

(4)455行左右 hive-common

<exclusions>
        <exclusion>
          <groupId>org.eclipse.jetty.orbit</groupId>
          <artifactId>javax.servlet</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>*</artifactId>
        </exclusion>
</exclusions>

(5) 在最后手动增加jetty (hive最下边,zookeeper上边)

排除低版本jetty,添加hudi指定版本的jetty

    <!-- 增加hudi配置版本的jetty -->
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-server</artifactId>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-util</artifactId>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-webapp</artifactId>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-http</artifactId>
      <version>${jetty.version}</version>
    </dependency>

⑤修改hudi-0.11.0/packaging/hudi-utilities-bundle/文件夹目录下的pom.xml文件

vim /opt/module/hudi-0.11.0/packaging/hudi-utilities-bundle/pom.xml

(1)350行左右 

      <exclusions>
        <exclusion>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>

(2)361行左右

      <exclusions>
        <exclusion>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>

(3)423行左右 hive-service

      <exclusions>
		<exclusion>
          <artifactId>servlet-api</artifactId>
          <groupId>javax.servlet</groupId>
        </exclusion>
        <exclusion>
          <artifactId>guava</artifactId>
          <groupId>com.google.guava</groupId>
        </exclusion>
        <exclusion>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.pentaho</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>

(4)455行左右 hive-jdbc

      <exclusions>
        <exclusion>
          <groupId>javax.servlet</groupId>
          <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>

(5)476行左右 hive-metastore

      <exclusions>
        <exclusion>
          <groupId>javax.servlet</groupId>
          <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.datanucleus</groupId>
          <artifactId>datanucleus-core</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
          <artifactId>guava</artifactId>
          <groupId>com.google.guava</groupId>
        </exclusion>
      </exclusions>

(6)501行左右 hive-common

      <exclusions>
        <exclusion>
          <groupId>org.eclipse.jetty.orbit</groupId>
          <artifactId>javax.servlet</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>

(7)520行 最后增加hudi配置版本的jetty

    <!-- 增加hudi配置版本的jetty -->
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-server</artifactId>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-util</artifactId>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-webapp</artifactId>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-http</artifactId>
      <version>${jetty.version}</version>
    </dependency>

三、执行编译,构建maven

mvn clean package -DskipTests -Dspark3.0 -Dscala-2.12 -Dhadoop.version=3.1.3 -Pflink-bundle-shade-hive3

参数解析:

  1. mvn: 这是Maven命令行工具的调用,Maven是一个用于自动化构建Java项目的工具。

  2. clean: 这个目标(goal)用于清理项目构建的输出目录,通常包括target/目录,确保从干净的状态开始构建。

  3. package: 这个目标用于编译项目源代码,执行测试(如果未使用-DskipTests参数),并打包项目为一个可发布的格式,比如JAR、WAR或EAR文件。

  4. -DskipTests: 这个参数告诉Maven在构建过程中跳过单元测试。这对于只想构建项目而不运行测试的场景很有用,可以节省构建时间。

  5. -Dspark3.0: 这个参数可能是一个自定义属性,用于指定项目应该使用Apache Spark 3.0版本的相关依赖。这通常用于项目的pom.xml文件中,通过Maven属性来控制依赖的版本。

  6. -Dscala-2.12: 类似地,这个参数可能用于指定项目应该使用Scala 2.12版本的相关依赖。

  7. -Dhadoop.version=3.1.3: 这个参数用于指定Hadoop的版本为3.1.3。Maven将使用这个版本来解析Hadoop相关的依赖。

  8. -Pflink-bundle-shade-hive3: 这个参数用于激活一个或多个Maven profile。在这里,它激活了名为flink-bundle-shade-hive3的profile。Profiles是Maven中用于定义不同构建逻辑的一种方式,可以根据不同的环境或需求激活不同的profile。(这个profile与Apache Flink的捆绑、shade(重命名依赖以避免冲突)和Hive 3相关。

接下来就是等待编译,过程很漫长

………………

………………………………

………………………………………………

………………………………………………………………

………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………………………

就这样等啊等,你等了20分钟左右,出现了下面的画面,就证明你成功了

成功编译之后,进入Hudi自带的客户端

hudi-cli/hudi-cli.sh

Hudi的简单使用

一、准备案例

import org.apache.hudi.QuickstartUtils._
import scala.collection.JavaConversions._
import org.apache.spark.sql.SaveMode._
import org.apache.hudi.DataSourceReadOptions._
import org.apache.hudi.DataSourceWriteOptions._
import org.apache.hudi.config.HoodieWriteConfig._
import org.apache.hudi.common.model.HoodieRecord

val tableName = "hudi_trips_cow"
val basePath = "file:///tmp/hudi_trips_cow"
val dataGen = new DataGenerator

val inserts = convertToStringList(dataGen.generateInserts(10))
val df = spark.read.json(spark.sparkContext.parallelize(inserts, 2))
df.write.format("hudi").
  options(getQuickstartWriteConfigs).
  option(PRECOMBINE_FIELD_OPT_KEY, "ts").
  option(RECORDKEY_FIELD_OPT_KEY, "uuid").
  option(PARTITIONPATH_FIELD_OPT_KEY, "partitionpath").
  option(TABLE_NAME, tableName).
  mode(Overwrite).
  save(basePath)

val tripsSnapshotDF = spark.read.format("hudi").load(basePath + "/*/*/*/*")
tripsSnapshotDF.createOrReplaceTempView("hudi_trips_snapshot")
spark.sql("select fare, begin_lon, begin_lat, ts from  hudi_trips_snapshot where fare > 20.0").show()

二、启动spark-shell,配置启动序列化参数

spark-shell --conf "spark.serializer=org.apache.spark.serializer.KryoSerializer"

直接复制案例进入spark-shell里面,会得到

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

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

相关文章

Avalonia11.0.2+.Net6.0支持多语言,国际化

Avalonia11.0.2+.Net6.0支持多语言,国际化 操作系统项目结构最终效果具体实现安装Prism.Avalonia准备多语言文件语言资源加载类界面标记扩展类界面中使用国际化VM具体实现VM里面使用多语言方法操作系统 项目结构 最

【前端Vue】Vue3+Pinia小兔鲜电商项目第3篇:静态结构搭建和分类实现,1. 整体结构创建【附代码文档】

Vue3ElementPlusPinia开发小兔鲜电商项目完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;认识Vue3&#xff0c;使用create-vue搭建Vue3项目1. Vue3组合式API体验,2. Vue3更多的优势,1. 认识create-vue,2. 使用create-vue创建项目,1. setup选项的写法和执行…

007 日期类型相关工具类

推荐一篇文章 http://t.csdnimg.cn/72F7Jhttp://t.csdnimg.cn/72F7J

【TB作品】430单片机,单片机串口多功能通信,Proteus仿真

文章目录 题目功能仿真图程序介绍代码、仿真、原理图、PCB 题目 60、单片机串口多功能通信 基本要求: 设计一串口通信程序,波特率38400,通过RS232与PC机通信。 自动循环发送数据串(设计在程序中) 接收并存储和显示该数据串 在发送端定义10个ASCII码键0-9 按键发送单字节,PC机接…

uboot - pinctrl - FPGA回片前测试阶段 - 设置GPIO引脚复用失败

问题描述 pinctrl设置引脚复用失败&#xff0c;没有调用到controller中的set_groups_function函数。 问题定位 pinctrl如何注册dm节点如何进行设备树中各个设备节点下的复用配置为什么没调用到控制器实现的set_groups_function函数 &gpio0 {status "okay";p…

数据结构进阶篇 之 【二叉树】详细概念讲解(带你认识何为二叉树及其性质)

有朋自远方来&#xff0c;必先苦其心志&#xff0c;劳其筋骨&#xff0c;饿其体肤&#xff0c;空乏其身&#xff0c;鞭数十&#xff0c;驱之别院 一、二叉树 1、二叉树的概念 1.1 二叉树中组分构成名词概念 1.2 二叉树的结构概念 1.3 特殊的二叉树 2、二叉树的存储结构 …

c语言--实用调试技巧

1什么是bug 2调试是什么&#xff0c;有多重要&#xff1f; 3debug与release 4windows环境调试简绍 5一些调试的实例 6如何写出好的代码&#xff08;便于调试&#xff09; 7编程常见错误 1什么是bug 导致计算机出现问题就叫bug 2调试是什么&#xff0c;有多重要&#x…

4.线性数据结构——1.vector弥补数组的缺陷及其底层逻辑

数组的缺陷 数组在定义时大小固定&#xff0c;不能改变如果要定义在main内部&#xff0c;数组大小不能超过一百万&#xff08;6个0&#xff09;&#xff0c;超过需要定义为全局变量 定义在main内部&#xff0c;数组创建在内存的栈中&#xff0c;作为局部变量&#xff0c;但栈的…

基于stm32与TJC3224T124_011串口屏的PID调参器(附完整工程)

电赛在即&#xff0c;每次比赛调PID都是一件比较繁琐的事。每次都要在程序中改完再烧录到板子上&#xff0c;特别耗时。正好最近发现实验室的一块串口屏比较好玩。 于是就做了这个调PID的东西。它可以通过串口直接修改PID的值&#xff0c;从而达到快速调PID的目的。下面我将完整…

c++初阶------c++代码模块

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

MATLAB 公共区域的点云合并(46)

MATLAB 公共区域的点云合并(46) 一、算法介绍二、算法实现1.代码2.效果一、算法介绍 点云配准后,或者公共区域存在多片点云对场景进行冗余过量表达时,我们需要将点云进行合并,Matlab点云工具中提供了这样的合并函数,通过指定网格步长,对初始点云进行过滤。 函数主要实…

[STL]priority_queue类及反向迭代器的模拟实现

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 今日主菜&#xff1a; priority_queue类及反向迭代器 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;c大冒险 向着c&…

特征融合篇 | YOLOv8改进之将主干网络SPPF更换为SimSPPF / SPP-CSPC / SPPF-CSPC

前言:Hello大家好,我是小哥谈。SimSPPF是YOLOv6中提出的一种改进的空间金字塔池化方法,它是SPPF的升级版。SimSPPF通过在不同尺度上使用不同大小的池化核来提取特征,从而提高了检测器的性能。与SPPF相比,SimSPPF可以在不增加计算成本的情况下提高检测器的性能。本节课就教…

【软件设计师】原码反码补码移码

数值1数值-1原码0000000110000001反码0000000111111110补码0000000111111111移码1000000101111111 正数 00000001 负数 10000001 正数&#xff1a;原码、反码、补码一样 负数&#xff1a;反码是原码符号位不变&#xff0c;其他取反&#xff1b;补码是反码1 移码是补码首位取…

八、C#计数排序算法

简介 计数排序是一种非比较性的排序算法&#xff0c;适用于排序一定范围内的整数。它的基本思想是通过统计每个元素的出现次数&#xff0c;然后根据元素的大小依次输出排序结果。 实现原理 首先找出待排序数组中的最大值max和最小值min。 创建一个长度为max-min1的数组count…

Ambari——编译——解决替换yarn 版本后 系mvn 打包找不到yarn 文件问题

您的支持是我继续创作与分享的动力源泉!!! 您的支持是我继续创作与分享的动力源泉!!! 您的支持是我继续创作与分享的动力源泉!!! 报错原因&#xff1a; [ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.4:yarn (yarn install) on project amb…

入驻抖音小店后这些设置必须打开! 非常重要!否则小店无法运行!

哈喽~我是电商月月 大家入驻完抖音小店后是不是就不管了&#xff0c;直接去选品&#xff1f; 我现在告诉你&#xff0c;直接选品后你会发现你的抖音小店根本运行不了&#xff01; 为什么&#xff1f;那是因为这些设置你没打开&#xff1a; 一抖音号绑定店铺官方账号 抖音小…

Covalent Network(CQT)的以太坊时光机:在 Rollup 时代确保长期数据可用性

以太坊正在经历一场向 “Rollup 时代” 的转型之旅&#xff0c;这一转型由以太坊改进提案 EIP-4844 推动。这标志着区块链技术的一个关键转折&#xff0c;采用了一种被称为“数据块&#xff08;blobs&#xff09;”的新型数据结构。为了与以太坊的扩容努力保持一致&#xff0c;…

面试笔记——Java集合篇

Java集合框架体系 重点&#xff1a;单列集合——ArrayList、LinkedList&#xff1b;双列集合——HashMap、ConcurrentHashMap。 List相关 数组&#xff08;Array&#xff09; 是一种用连续的内存空间存储相同数据类型数据的线性数据结构。 数组获取其他元素&#xff1a; 为什…

【微服务】接口幂等性常用解决方案

一、前言 在微服务开发中&#xff0c;接口幂等性问题是一个常见却容易被忽视的问题&#xff0c;同时对于微服务架构设计来讲&#xff0c;好的幂等性设计方案可以让程序更好的应对一些高并发场景下的数据一致性问题。 二、幂等性介绍 2.1 什么是幂等性 通常我们说的幂等性&…