峰会实录 | 基于StarRocks和腾讯云EMR构建云上Lakehouse

news2024/11/28 10:42:41

作者:腾讯云EMR业务负责人陈龙(本文为作者在 StarRocks Summit Asia 2022 上的分享)

我目前负责腾讯云EMR 的研发工作,此前先后在百度、支付宝做后端研发。2011年加入腾讯,先后参与了腾讯云Redis、腾讯云云数据库、Apache HBase(以下简称 HBase)以及 EMR 等多款云产品的开发。我个人也向 Apache Hive(以下简称 Hive)等多个社区贡献过代码。今天主要分享:

1. 云上 Lakehouse 基础架构。如何在云上基于高性能执行引擎 StarRocks 和 EMR 构建 Lakehouse?

2. 云上 Lakehouse 性能优化。在计算存储分离的场景下,如何有效保证 Lakehouse 高性能?

3. 云上 Lakehouse 成本控制。如何利用云的弹性能力进行架构改进,降低 Lakehouse 的资源成本?

4. EMR StarRocks 的产品特性。通过 EMR 的产品化能力,如何让云上的 StarRocks 更加易用好用?

#01

云上 Lakehouse 基础架构

1、Lakehouse 之我见

对于 Lakehouse,可能大家最直观的理解就是数据湖仓一体,到底什么是湖仓一体,Lakehouse 到底要解决什么样的问题,到目前为止没有统一的标准。我理解的 Lakehouse 是基于现代化云上存储计算分离架构,解决了如下问题:

1. 数据重复。尽可能解决维护多套数据分析系统,比如湖和仓的数据重复。去除数据重复性,真正做到 Single source of truth。

2. 低廉存储成本。在数据分析领域中,一般计算和存储都是不对等的。云上的对象存储大大降低了数据分析的存储成本和运维成本。

3. 在技术形态上有统一的架构。在现阶段数据分析场景中,面向不同的场景及不同的时延需求所需要的技术架构也不尽相同,造成系统复杂、运维成本高昂的问题。

4. 有效地降低数据分析的计算和 IO 成本。现在的数据分析系统大多是基于 Apache Hadoop(以下简称 Hadoop)生态技术栈构建,数据更新和删除需要通过 ETL 来进行,会造成大量的重复计算,从而导致计算和 IO 成本上升。

要解决如上问题,Lakehouse 从技术上要具备什么样的核心能力呢?

1. 事务支持和多版本控制。Lakehouse 需要处理多条不同的数据管道,需要在不破坏数据完整性的前提下支持并发读写事务。

2. 高效的更新。基于数据合规和数据更新是业务客观存在的需求。如何高效对数据更新是 Lakehouse 核心能力之一。

3. 高效数据消费。数据分析场景查询是非常复杂的,Lakehouse 需要具有面对复杂业务高效响应的能力。

4. 便捷的数据管理能力。数据管理在 Lakehouse 里面至关重要。数据管理不仅仅是业务数据上质量管理、数据关系的管理,还包含底层数据的索引、元数据版本管理等。

基于以上分析得出,Lakehouse 需要如下四个技术基础组件:

1. 统一的数据格式。基于这个数据格式,可以完成事务管理、高效更新等。

2. 统一的执行引擎。通过统一的执行引擎完成 ETL 类分析和机器查询类分析。

3. 统一的数据管理。提供完善的数据质量、数据分析、数据科学、数据格式等管理能力。

4. 统一的存储。价格低廉、高稳定性、高可靠性的统一存储。

2、Lakehouse 基础技术架构

基于这四个核心技术条件,在云基础平台上,如何一步一步去构建云上 Lakehouse 呢?首先从技术架构上拆解云上 Lakehouse。从技术角度看,可以分为如下五层:

1. 计算资源层。云上的云服务器、裸金属以及容器可以为 Lakehouse 提供海量的计算资源,同时还可以通过弹性实现资源随负载的变化而变化。

2. 云上的存储层。云上的对象存储、云 HDFS 、文件存储提供了面向不同业务场景的低成本、高可靠性、高稳定性的存储解决方案。而且云上存储是使用按量计费,成本更加低廉。

3. Data Lake Storage 层(表格式层)。本层使用开源的技术解决方案比如 Apache Iceberg(以下简称 Iceberg)、Apache Hudi(以下简称 Hudi)。同时云上的 Iceberg 和 Hudi 也针对云存储和计算做过大量的优化和扩展。基于开源的表格式的优势是开源开放、格式透明。

4. 统一的计算引擎层。统一计算引擎需要具备 ETL 和继续查询快速响应的能力。现阶段都是通过 Apache Spark(以下简称 Spark)来做 ETL,通过 StarRocks 做机器分析。

5. 统一的数据管理层。本层需提供完善的数据治理。数据管理可以通过 Wedata 来实现数据质量、血缘、数据科学等基础管理,通过 EMR、Lake Service 可以实现更底层的表格式的快照事务效文件以及索引管理的能力,降低 Lakehouse 使用的门槛。

3、构建云上 Lakehouse 

接下来介绍如何从数据角度使用云上的产品,把 Lakehouse 组建起来。数据分析面向的数据类型复杂,数据体积延时各不相同,数据延时大为大致分为三类:

1. 事务型数据库产生的数据,一般为应用系统应用程序产生的数据,比如 CRM、ERP 等。

2. 日志类数据,主要由应用程序产生。

3. 时序数据,由物联网、传感器等产生。

数据分析的第一步,使数据尽可能实时地流入到 Lakehouse 之中。数据的流入即数据集成,在云上可通过多个云产品实现。对于事物类型产生的数据,可以通过 EMR Sqoop 或 Spark 导入 Lakehouse 之中。对于日志类数据,可以通过 EMRFLOW、消息服务及、DataInLong 导入到 Lakehouse 之中。对于流式数据,可以通过 EMR、Spark、Oceanus 导入到 Lakehouse 之中。具体选用哪种方式,可根据实际具体的业务成本以技术栈来综合做选择。例如湖中数据可以根据业务场景统一存储为 TableFormat。那么具体选取哪一种湖格式可以根据自己业务的实际需求。

目前 EMR 支持 Iceberg、Hudi 两种湖格式。其中 Iceberg 做了类索引、SavePoint 等很多功能性的优化。流入湖中的数据可以使用对象存储 HDFS 或 CHDFS 作为底层的存储。同时云上的 Iceberg 和 Hudi 基于对象存储做了很多性能方面的优化。围绕湖格式对小文件快照清理、Clustering 索引管理等一直有着较高的门槛。虽然 Iceberg 和 Hudi 也提供了相应的 Produce,但是使用的门槛还是比较高。因此 EMR 提供 Lake service 可以很方便地自动化小文件合并、快照清理等。

对于湖格式内部的 ETL,比如 Clustering,可以通过 EMR 的离线 ETL 来实现。为了达到较好的性能,建议对湖格式定期的做 Clustering。做好 Clustering 后的数据,可以通过 EMR 里面 StarRocks 来分析这些数据。

StarRocks 在 plan 优化层面引入 CPU 和分区裁剪等功能。StarRocks 在执行层面,通过向量化执行引擎和 Native ORC Reader 来保证每一个 SQL 都会有良好的响应。同时在应用层面,应用层还可以通过 DLC 来查询湖里的数据以实现联邦分析,也可以通过 Oceanus 来实现 CDC 功能。

4、基于 StarRocks 的云上 Lakehouse

如何通过多个 EMR 集群来实现上述能力?分别从离线链路和实时链路,EMR 以搭建积木的方式来构建 Lakehouse。在离线链路,离线数据通过 DI 工具进行入湖,数据格式可以是 Iceberg 和 Hudi,也可以基于 Hive 的传统离线模式,使用 ORC 等作为文件格式来存储。

因为目前使用的 Iceberg 和 Hudi 缺乏完善的工具做小文件合并、数据的 Clustering。这些操作又会消耗计算资源,因此 EMR 提供了 Lake Service 服务管理服务来简化对 Iceberg 和 Hudi 的使用。EMR 的 Lake Service 提供了快照合并、事务管理、小文件合并以及索引管理的能力。同时云上 StarRocks 支持访问云上对象存储的能力,可以直接查询 Iceberg 和 Hudi 里的数据。结合云上对湖格式的优化以及 StarRocks、CBO 向量化执行等获得良好的性能。

5、构建云上 Lakehouse 面临的挑战

构建 Lakehouse 的目的是在数据分析时实现更好的性能、更低的成本。这里的成本包含技术成本、运维成本、使用的计算成本和存储成本,同时整个系统要有很好的可用性。接下来介绍在性能、成本和可用性等方面面临的问题。

1. 性能。在云上存储为统一的对象存储,对象存储和 Hadoop 生态的 HDFS 还是存在一定的差异性,如何保证数据入湖和查询效率是一个不小的挑战。同时还需要 StarRocks 高效的读写云存储。提高性能传统的方式是扫描,尽可能的扫描少的数据文件和良好的索引,在 IO 层面有很好的 IO 能力。

2. 成本。包含两部分成本,一是硬件成本。在大多数数据分析系统中,存储和计算并不对等,如何实现存储成本量化计算成本量化也需要对现有架构进行改进才能实现。另一方面数据分析系统非常复杂,如何高效运维是一个很大的挑战。

3. 可用性。对象存储保证了数据良好的可用性,但是如何高效稳定的使用湖格式是一个很大的挑战。尽管 Iceberg 和 Hudi 也提供了一定的管理工具,但是可用性依然很低。因此在云上需要提供标准化的产品能力提升湖的可用性。

#02

如何实现云上 Lakehouse 高性能

1、StarRocks 云上架构优化

在可用性方面,StarRocks 的架构简洁,整个系统核心只有 FE 和 BE 两类进程,不依赖外部任何主线,方便不属于维护。同时 FE 和 BE 模块可以在线水平扩散,元数据和数据都用副本机制,确保整个系统无单点。

FE 是 StarRocks 前端节点,负责管理元数据,管理客户端连接,进行查询规划查询调度。FE 配置根据配置有两种类型的角色, Follow 和观察者。Follow 选出一个 Leader,只有 Leader 会对元数据进行写操作,非 Leader 节点会自动将元数据写入路由到 Leader 节点,每次元数据写入的时候必须有多数的 Follow 写入成功才算成功。那么观察者不参与选组操作,只会异步同步并且回放日志,用于扩展集群的查询并发能力。每个 FE 节点在内存里都会保留一份完整的元数据,每个 FE 节点能提供无差别的服务。FE 为了保证性能,在 SQL 做完语义分析之后,还会进行分区裁剪,已过滤掉不必要的数据,同时还会基于 catalog 里面的统计数据进行 CBO 优化,以此生成的物理执行计划是最优的状态。

BE 是 StarRocks 的后端节点,负责数据存储以及 SQL 执行等工作。BE为了保证良好的性能和扩展性,在执行层面引入了向量化执行器,使用SIMD指令集来获得更高的性能,而同时设备又有着较低的负载。同时BE在IO接口方面有良好的扩展性设计,使得很可以很方便的去扩展实现云存储,比如对象存储、CHDFS等存储。

云侧为了降低应用侧的改造成本、同时拥有更高性能,实现了融合存储等技术,使得传统对象存储在调用文件系统 API 时和传统文件系统有着一样的性能表现。同时为了加速云上 StarRocks,引入了两层 Cache 和雾化视图技术。

LocalCache 技术,在 BE 级点缓存底层存储数据块实现就近访问,可以通过良好的淘汰算法保证上层有极致的性能。因为云上的 StarRocks 工作在计算存储模式下,BlockCache 主要是缓存对象;存储数据块到计算节点,通过 BlockCache 来降低访问对象存储的延时,以获得良好的性能。雾化视图技术,这里的雾化视图对,是指对经常使用的结果集进行雾化。在查询的时候,通过 FE 的 SQL rewrite 直接提取雾化结果来提升性能。

2、EMR Iceberg Data Layout

要获得良好的性能,除了有良好的架构、执行引擎外,对于数据的组织和索引管理也尤为重要。腾讯云 EMR  Iceberg 做了大量的优化工作。

多维分析是大数据分析的一个经典场景,这种分析一般带有过滤条件。对于此类查询,尤其是在高级字段的过滤查询,理论上,我们只需要对原始数据做合理的布局,结合相关的过滤条件,查询引擎就可以过滤掉大量不相关的数据,只读取很少部分的数据。例如我们在入库之前对相关的字段做排序,这样生成的每个文件相应字段的 minmax 值不存在交叉的。查询引擎下过滤条件跟数据源结合每个文件的  minmax 统计信息,就可以过滤掉大量不相干的数据。

上述技术既是我们通常所说的 Data Clustering 和 Data Skip。直接排序可以在单个字段上产生很好的效果。但是如果多个字段直接排序,那么效果会大打折扣。Z order 可以很好地解决多字段排序问题。Z order 是一种可以将多维数据压缩到一维的技术,在时空索引及图像方面使用较广,Z 曲线可以将一线一条无线长曲线填充到任意维度空间。对于一条数据来说,我们可以将其多个要排序的字段看作是数据的多维 Z 曲线,可以通过一定的规则将多维数据映射到一维数据上,构建 Z value 进而可以基于该一维数据进行排序。我们不用太去理解 Z order 在数学上的意义,重点在它为我们解决问题带来的思路——降维。解决问题其实就是要利用空间填充曲线,对多维数据比如一张表的多个列进行降维处理,以提升相关数据聚集效果以及相应数据 minmix 的使用效率。

以图为例,假设红色块是查询中 where 的条件部分。正常情况下,在数据没有被 clustering 前,这些数据分布在 N 个数据文件之中,这样的一个 SQL 要扫描大量的数据文件才能得到结果集。而我们对数据重新排序并 clustering 生成类索引之后,红色块的数据只会分布在部分文件之中。查询给过滤条件的数据源,结合每个文件 minmix 统计信息即可过滤掉大量不相干的数据,这样就可以大幅提升性能。

腾讯云中的 EMR 的 Iceberg 在 ZO 的特性,领先于社区一年进入生产和环境。下面是 EMR 的 ZO 支持的数据类型。EMR 中的 Iceberg 类索引不仅支持基础数据类型,如 int、string、varchar、date 基础类型之外,还支持复合数据类型,如 map、struct 以简化业务使用类索引,同时还提供了 SQL 语法进行 Z 索引的构建,如 offline table、order by column 进一步降低客户使用 Z 索引的门槛。

以下是基于腾讯云EMR Iceberg Z 索引基于 SSD 的性能测试报告。基于 SSD 的性能测试的硬件为 10 台八核 32g 磁盘为云 SSD 的标准型机型。

从图中我们可以看到,在查询引擎方面,基于 Z order 的查询性能相比,随机扫描有 10 倍的性能提升。相比小文件合并也有 2-5 倍的性能提升。在数据扫描方面,基于 Z order 的数据扫描量只有随机和小文件合并数据扫描量的 40%。一份来自真实的数据:业务总数据量大小是 1.78TB,总行数是 210 条,使用的计算资源是 200 个 CPU。同样的条件下,未开启 Z order 查询需要 1030 秒,而开启 Z order 只需要29秒。

3、EMR  Iceberg 流转批

除了通过 Z order 提升性能之外,EMR 中的 Iceberg 还考虑到离线和数据安全,提供了 SavePoint 功能,以进一步降低使用 Iceberg 的门槛。SavePoint 是指将某些文件组织为组织标记为已保存,以便清理程序,不会将其删除。在发生灾难和速度恢复的情况下,有助于数据集还原的时间轴上的某一个节点。同时 EMR 中的 Iceberg 还实现了 StarRocks、Hive、Spark 在查询的时候按照 SavePoint 查询全量数据,可以做到流批融合,既满足了离线场景,又不对现有业务架构做任何调整。

EMR 中的 Iceberg 提供了迁移工具,可以将传统 Hive 中的离线表直接转化为湖格式中的 Iceberg 表。SavePoint 具体技术原理是基于 Iceberg 的快照和 TimeTravel 功能,在原表基础上实现了基于事件时间的快照标记功能。可以理解为在原表基础上查看某个事件时间的全量快照。

不同的是,这里强调的是基于数据的事件时间而不是处理时间。在生成好这些 C point 之后,在 StarRocks、Hive、Spark 中读取时,可以根据 meta 表里面的最新的 SavePoint 信息查询某个时刻的全量数据。在性能方面,腾讯云 EMR 做了大量的优化工作,今天分享只是一小部分。

#03

云上 Lakehouse 成本控制

Lakehouse 成本控制既是实现 Lakehouse 数据分析成本量化,要实现成本量化,先从现有的技术架构看问题所在。以 Hadoop 集群为例,常规部署时,data load 和计算进程 load manager 为了保证计算数据的亲和性,正常都是部署在一起的。

StarRocks BE 节点既负责计算又负责存储,但实际情况现是计算和存储并不对等,有的时候计算是平均,有的时候存储存储是平均,特别是基于云的环境下,存储全部为云存储,worker 节点只是负责计算。这时我们只需要保留较少的存储节点用于存储计算的中间临时结果和日志。这时就需要对集群的部署结构和引擎内核做改造,以适配云上的架构。下面我们看如何进行改进。

首先来看 Hadoop 集群。把一个 Hadoop 集群的拓扑分为 master、router、core 和 task 四种类型的节点。router 节点用于水平扩展、无状态比较重要的服务,或者是基于云基础设施,简化组件的高可用。比如可以将 HiveServer2 部署在 router 节点上,也可以将 Presto 的 coordinator 部署在 router 上。通过云的负载均衡来实现故障自动切换。而 core 节点相比传统模式下的存储节点,task 节点作为计算节点,只会部署计算进程。而对于 StarRocks 集群,腾讯内部团队对传统的 BE 节点进行拆分,把存储进程和计算进程拆成了两类进程,原来的 BE 节点还负责存储,而计算由新的节点 CN 来负责。至此我们来看基于这种架构,如何通过云上弹性能力来大幅降低 Lakehouse 数据分析成本。

在资源维度看,对于 core 或者是 BE 节点记为固定成本,而 task 或者 CN 节点既是计算节点,可以使用云上提供的自动伸缩,让 task 节点的规模随着负载的变化而变化,使用的资源可以是云上的 CVM 竞价实力或者是容器。那么这里我单独分享一下 EMR 中离在线混合部署的方案。对于 Hadoop 集群,采用的方案是 Yarn on 容器或者是 Spark negative on 容器。这种方案的好处是业务不用修改任何一行代码。对于容器集群,如果是 tke 则可以通过 tke 直接使用业务在线服务器资源。对于跑批的场景特别适用。

正常情况下,业务服务器在夜晚时低峰,而夜晚则是跑批的高峰,也可以使用云上的 eks,使用 eks 则不用关注具体的机型,易用性更好。同样对 StarRocks 集群,一样可以通过离在线混合部署,将 CN 节点直接部署到容器集群之中,通过自动伸缩竞价实力和复用容器里面的在线资源来降低成本。

接下来介绍 EMR 里提供的弹性化产品能力。在弹性能力上,EMR 提供了三种弹性模式来让开发者便捷使用云上的弹性能力。

第一种是托管伸缩。托管伸缩是指自动调整集群大小的冷功能,能够以最低成本实现最佳性能,只需要设置集群最低与最高限制即可使用。托管伸缩能够自动根据负载对集群资源进行规模化,甚至借此实现最佳性能与最低运营成本。无需预测负载模式或者编写自定义逻辑即可轻松建立弹性集群。在弹性资源上可以选择 CVM 竞价实例容器和裸金属,同时缩容过程中支持优雅缩容,配合内核上的改造,在缩容过程中不会导致 query 失败。

第二种是自动伸缩。自动伸缩相比托管伸缩需要显示去设定规则。自动伸缩提供了两种模式,第一种是按负载伸缩,可以根据引擎里面的负载情况进行自动的扩容或者是缩容。而按时间伸缩则可以通过某个时间点进行扩容或者某个时间点进行缩容。对这两种伸缩模式的资源都是都支持 CVM 容器竞价实力和裸金属,同时不仅支持优雅缩容,还支持将这些资源具体加入到某个资源队列或者是资源标签,以降低业务使用的门槛。

第三种是手动缩容,在这种模式下一般用于手动扩缩容,同样支持优雅缩容。对于存储节点,在缩容的时候会自动搬迁数据,无需关注缩容的细节。以上是 EMR 对 Lakehouse 在数据分析中对针对资源成本层面的优化。

#04

EMR StarRocks 产品特性

云上的 StarRocks 从如下四个维度提供了产品化的能力,结合云基础设施,让云上的 StarRocks 更加易用和好用。

第一是集群操作。在集群操作层面提供了创建、扩容、缩容以及执行节点变配的规格变配的能力。同时对于 StarRocks 的管理, web UI 提供了统一安全代理。针对 StarRocks 快速发展和版本变化,EMR 提供集群内版本自助升级和引导程序的能力,以便快速更新和自助开发。

第二是集群管理。集群管理层面提供了配置管理,支持 FE、BE 的基础配置文件管理,同时还支持自定义配置文件,以便访问不同的数据源。同时还支持对不同的机型配置分组和配置分类的能力,让开发者一目了然,了解每个配置项的含义和默认值。第三是服务进程管理。针对 StarRocks 的服务进程, EMR 提供了安全启停、进程监控以及一些高阶操作的产品化能力。

第四是集群 APM。针对 StarRocks 集群的 APM,EMR 提供了从 S 层面到 StarRocks 组件层面各个维度的基础监控告警能力。那么监控指标大盘可见,同时还提供了进程日志搜索能力。针对集群的关键事件提供了集群事件、集群巡检能力,让开发者在第一时间掌握集群的健康情况。

关于 StarRocks 

StarRocks 创立两年多来,一直专注打造世界顶级的新一代极速全场景 MPP 数据库,帮助企业建立“极速统一”的数据分析新范式,助力企业全面数字化经营。

当前已经帮助腾讯、携程、顺丰、Airbnb 、滴滴、京东、众安保险等超过 170 家大型用户构建了全新的数据分析能力,生产环境中稳定运行的 StarRocks 服务器数目达数千台。 

2021 年 9 月,StarRocks 源代码开放,在 GitHub 上的星数已超过 3500 个。StarRocks 的全球社区飞速成长,至今已有超百位贡献者,社群用户突破 7000 人,吸引几十家国内外行业头部企业参与共建。

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

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

相关文章

小米 Civi 2 (ziyi) 机型解锁bl 获取root权限教程 +其他机型参数对比+救砖

*********机型优点与其他机型参数对比***************** 小米 Civi 2 (ziyi) 国行版机型前置由3200万主摄3200万超广角组成的双摄是它最大的亮点,配有4颗柔光灯。自拍相当不错。他的后置主摄采用5000万像素相机,IMX766传感器,1/1.56英寸感光…

【MybatisPlus】CRUD操作,映射匹配兼容性,ID生成策略,逻辑删除,乐观锁

文章目录MybatisPlus简介一、数据层基本的开发1. 引入jar包2. 配置数据源3. 编写实体类4. 创建Dao接口5. 测试二、CRUD使用1. 查询2. 添加3. 删除4. 修改5. 分页查询三、条件查询1. 条件查询的方式2. 多条件查询四、映射匹配兼容性1. 表字段与编码属性设计不同步2. 编码中添加了…

矩阵理论复习(二)

内积空间的定义 模与内积 向量x和y的夹角 正交向量、正交组和正交矩阵 度量矩阵 基向量内积、度量矩阵、任意向量内积之间的关系 欧式空间的两个基对应的度量矩阵彼此合同 度量矩阵的行列式的几何问题 正交补子空间 内积空间子空间U与U的正交补子空间的直和 …

LeetCode 138. 复制带随机指针的链表

难度 中等 题目链接 示例: 解题思路: 首先,大家肯定会这样想:定义一个cur循环遍历,每次遍历一个,就malloc一个。 当遍历后面的时候,就开始尾插。 但现在有一个问题是:这个random指…

通信直放站基础知识

直放站的定义 直放站(中继器)属于同频放大设备,是指在无线通信传输过程中起到信号增强的一种无线电发射中转设备。直放站的基本功能就是一个射频信号功率增强器。直放站在下行链路中,由施主天线从现有的覆盖区域中拾取信号&#x…

《嵌入式 - 嵌入式大杂烩》CoreMark性能测试

1 CoreMark简介 CoreMark是由EEMBC(Embedded Microprocessor Benchmark Consortium)的Shay Gla-On于2009年提出的一项基准测试程序,CoreMark的主要目标是简化操作,并提供一套测试单核处理器核心的方法。测试标准是在配置参数的组合下单位时间内运行的Co…

【树莓派不吃灰系列】快速导航

目录1. 通用篇2. Python篇3. 编程IO篇❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2022-11-06 ❤️❤️ 本篇更新记录 2022-11-06 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言 📝&…

Slave_IO_Running: No 的解决

原因: 两台主从数据库的uuid相同了(没猜错的话,各位的第二台虚拟机都是克隆了第一台,然后就改了个ip对吧)。 解决办法: 必须跟着步骤来,一步也不能多,更不能少,请仔细…

arcgis 生成切片并发布服务

需要准备: 1、需要进行切割的tif文件; 2、切片方案文件 需要确认: 1、tif文件的数据源坐标系; 2、现有切片方案能否满足需求; 3、部署的地图引擎是经纬度投影还是墨卡托投影; 具体操作流程: 1…

TCP/IP协议数据链路层

目录 一、数据链路层和网络层的关系 二、以太网 1、以太网格式 2、认识MTU 三、ARP协议 1、ARP协议的作用 2、ARP协议的工作流程 3、ARP数据报的格式 4、思考:浏览器中输入url后, 发生的事情(经典面试题) 一、数据链路层和网络层的…

通信行业的必备网站

今天突然看到一首诗感触满满: 官策作者陈京 生如蝼蚁,当有鸿鹄之志! 命如纸薄,应有不屈之心! 大丈夫生于天地间,岂能郁郁久居人下。 当以梦为马,不负韶华。 乾坤未定,你我皆是黑马&…

西安交大讲座-实际场景(3个)出发,用户检测方式,数据驱动的网络用户行为分析建模与异常检测

讲座搬运,侵删! 目录 研究背景 研究问题 问题与挑战 网络舆情分析 政策法规知识图谱 构建利益方群体识别模型 系统 ​编辑 第二个工作-异常群体映射与定位 多源社交网络用户身份管理 不用场景的用户身份映射 多个平台关联 黑产检测 基于图模型…

基于FreeCAD的dxf转机械手代码的一种实现方法

dxf文件在2D图形中使用广泛,将图形文件自动转换为机械手可识别的轨迹代码是机械手全自动化中一个软件衔接节点。理想的轨迹自动化转换程序可以在电脑里面直接虚拟仿真生成机械手轨迹,简化现场人员机械手示教流程,在效率和远程支持上有着实际的…

2021 神经网络压缩 (李宏毅

首先,为什么需要对神经网络模型进行压缩呢?我们在之前的课程中介绍过很多大型的深度学习模型,但当我们想要将这些大模型放在算力比较小的边缘设备或者其他IoT设备里面,就需要对大模型进行压缩。 Lower latency:低时延 …

刷题笔记之八(字符串通配符+参数解析+计算日期到天数)

目录 1. dateadd(datepart,number,date)函数是在日期中添加或减去指定的时间间隔 2. DML数据库操作语言负责数据的增删查改 3. 修改表结构的关键字都是alter table 表名,再加修改的语句 4. between and条件查询范围前闭后闭 5. 使用索引…

目标检测(1)—— 基础知识和常用数据集

一、什么是目标检测 一张图片,经过网络后得到输出,检测出感兴趣目标的一个位置,比如下图的车在什么地方,狗在什么地方;还要输出相应位置的目标是什么类别的。 目标检测:位置+类别 矩形框&…

vue 的 render 函数的用法:new Vue({ render: h => h(App), }).$mount(‘#app‘)

render函数的作用 render函数是vue通过js渲染dom结构的函数createElement,约定可以简写为h 官方文档中是这样的,createElement 是 Vue.js 里面的 函数, 这个函数的作用就是生成一个 VNode节点, render 函数得到这个 VNode 节点之后…

记一次内网靶机实战

文章目录0x00 边界服务器0x01 一层网络0x01-01 fscan内网扫描0x01-02 配置frp设置socks5代理0x01-03 访问内网的(10.10.135.66)0x01-04 访问内网的(10.10.135.35)0x01-05 访问内网的(10.10.135.190)0x02二层…

稀疏数组

章节目录:一、稀疏数组1.1 需求引出1.2 基本介绍1.3 应用实例二、结束语一、稀疏数组 1.1 需求引出 假设我们有个五子棋程序,使用1来表示黑子,2表示蓝子,0表示没有棋盘落子,并且需要对棋盘数据进行存储。 前端棋盘示意…

546、Zookeeper详细入门教程系列 -【Zookeeper内部原理】 2022.11.06

目录一、Zookeeper内部原理1.1 节点类型(Znode)1.2 Stat结构体1.3 监听器原理1.4 选举机制1.5 写数据流程二、最后三、参考链接一、Zookeeper内部原理 1.1 节点类型(Znode) 持久:客户端和服务器断开后,创…