当前位置: 首页 > news >正文

部署Apache Doris

官方文档:https://doris.apache.org/zh-CN/installing/compilation.html

一、编译

使用 Docker 开发镜像编译(推荐)

1.拉取镜像
#下载 Docker 最新主干版本代码,会随主干版本不断更新。
$ docker pull apache/incubator-doris:build-env-ldb-toolchain-latest#下载对应的镜像版本
$ docker pull apache/incubator-doris:build-env-for-0.15.0
2.检查镜像下载完成
$ docker images
REPOSITORY               TAG                    IMAGE ID       CREATED        SIZE
apache/incubator-doris   build-env-for-0.15.0   e568f7b2e1d8   3 months ago   3.54GB
3.运行镜像
$ mkdir -p /data/apps/apache-doris
$ docker run -it -v /data/apps/apache-doris/.m2:/root/.m2 -v /data/apps/apache-doris/incubator-doris-DORIS-0.15.0-release/:/root/incubator-doris-DORIS-0.15.0-release/ apache/incubator-doris:build-env-for-0.15.0

注:将镜像中 maven 的 .m2 目录挂载到宿主机目录,以防止每次启动镜像编译时,重复下载 maven 的依赖库。

4.下载源码

启动镜像后,你应该已经处于容器内。可以通过以下命令下载 Doris 源码(已挂载本地源码目录则不用)

[root@0fd6fc1093fd ~]# cd incubator-doris-DORIS-0.15.0-release/
[root@0fd6fc1093fd incubator-doris-DORIS-0.15.0-release]# wget https://dist.apache.org/repos/dist/dev/incubator/doris/xxx.tar.gz
or
[root@0fd6fc1093fd incubator-doris-DORIS-0.15.0-release]# git clone https://github.com/apache/incubator-doris.git
5.编译 Doris
$ cd /root/incubator-doris-DORIS-0.15.0-release/apache-doris-0.15.0-incubating-src/$ sh build.sh#如果你是第一次使用 build-env-for-0.15.0 或之后的版本,第一次编译的时候要使用如下命令:
$ sh build.sh --clean --be --fe --ui

编译完成后,产出文件在 output/ 目录中。

注意:
build-env-for-0.15.0 版本镜像升级了 thrift(0.9 -> 0.13),需要通过 --clean 命令强制使用新版本的 thrift 生成代码文件,否则会出现不兼容的代码。

二、软硬件需求

Doris 作为一款开源的 MPP 架构 OLAP 数据库,能够运行在绝大多数主流的商用服务器上。为了能够充分运用 MPP 架构的并发优势,以及 Doris 的高可用特性,我们建议 Doris 的部署遵循以下需求:

硬件需求

  • 开发测试环境
模块CPU内存磁盘网络实例数量
Frontend8核+8GB+SSD 或 SATA,10GB+ *千兆网卡1
Backend8核+16GB+SSD 或 SATA,50GB+ *千兆网卡1-3 *
  • 生产环境
模块CPU内存磁盘网络实例数量(最低要求)
Frontend16核+64GB+SSD 或 RAID 卡,100GB+ *万兆网卡1-5 *
Backend16核+64GB+SSD 或 SATA,100G+ *万兆网卡10-100 *

注1:
1.FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个 GB 不等。
2.BE 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量 * 3(3副本)计算,然后再预留额外 40% 的空间用作后台 compaction 以及一些中间数据的存放。
3.一台机器上可以部署多个 BE 实例,但是只能部署一个 FE。如果需要 3 副本数据,那么至少需要 3 台机器各部署一个 BE 实例(而不是1台机器部署3个BE实例)。多个FE所在服务器的时钟必须保持一致(允许最多5秒的时钟偏差)
4.测试环境也可以仅适用一个 BE 进行测试。实际生产环境,BE 实例数量直接决定了整体查询延迟。
5.所有部署节点关闭 Swap。

注2:FE 节点的数量
1.FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举出来的一种角色,以下统称 Follower,具体含义见 元数据设计文档)。
2.FE 节点数据至少为1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。
3.Follower 的数量必须为奇数,Observer 数量随意。
4.根据以往经验,当集群可用性要求很高时(比如提供在线业务),可以部署 3 个 Follower 和 1-3 个 Observer。如果是离线业务,建议部署 1 个 Follower 和 1-3 个 Observer。

  • 通常我们建议 10 ~ 100 台左右的机器,来充分发挥 Doris 的性能(其中 3 台部署 FE(HA),剩余的部署 BE)
  • 当然,Doris的性能与节点数量及配置正相关。在最少4台机器(一台 FE,三台 BE,其中一台 BE 混部一个 Observer FE 提供元数据备份),以及较低配置的情况下,依然可以平稳的运行 Doris。
  • 如果 FE 和 BE 混部,需注意资源竞争问题,并保证元数据目录和数据目录分属不同磁盘。

软件需求

1.版本要求
软件版本
JavaJava 11 及以上
GCC4.8.2 及以上
2.设置系统最大打开文件句柄数
$ vi /etc/security/limits.conf 
* soft nofile 65536
* hard nofile 65536
3.时钟同步
#修改时区
$ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime#NTP域名同步
$ ntpdate cn.pool.ntp.org#将系统时间写入到系统硬件当中
$ hwclock -w#添加定时任务
$ echo '11 * * * root ntpdate cn.pool.ntp.org' >>/etc/crontab
4.关闭交换分区(swap)
#将/etc/fstab 文件中包含swap的行注释掉
$ sed -i '/swap/s/^/#/' /etc/fstab
$ swapoff -a
5.Liunx文件系统

这里我们推荐使用ext4文件系统,在安装操作系统的时候,请选择ext4文件系统。

三、集群部署

节点信息

节点IP
FE172.21.1.19
BE172.21.19.251
BE172.21.21.141

3-1、FE 部署

1.拷贝 FE 部署文件到指定节点
#将源码编译生成的 output 下的 fe 文件夹拷贝到 FE 的节点指定部署路径下
$ cd /data/apps/apache-doris
$ cp -rf incubator-doris-DORIS-0.15.0-release/apache-doris-0.15.0-incubating-src/output/fe /data/apps/apache-doris/
2.配置 FE

fe.conf 中 JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。

$ cd /data/apps/apache-doris/fe/#修改FE元数据存放位置
$ mkdir -p /data/apache-doris/fe/doris-meta
$ sed -i 's#^.*meta_dir.*$#meta_dir = /data/apache-doris/fe/doris-meta#' conf/fe.conf#脚本中指定JAVA_HOME路径,根据实际情况配置
$ sed -i '1a\export JAVA_HOME=/usr/java/jdk1.8' /data/apps/apache-doris/fe/bin/start_fe.sh#priority_networks 配置进程绑定IP
$ sed -i 's#^.*priority_networks.*$#priority_networks =  172.21.0.0/16#' conf/fe.conf#修改日志默认位置,如启动失败,可以通过查看 log/fe.log 或者 log/fe.out 查看错误信息。
$ mkdir -p /data/logs/apache-doris
$ sed -i 's#LOG_DIR.*$#LOG_DIR = /data/logs/apache-doris#g' conf/fe.conf

注意:生产环境强烈建议单独指定目录不要放在Doris安装目录下,最好是单独的磁盘(如果有SSD最好),测试开发环境可以使用默认配置

3.启动FE

编写启动脚本

#添加环境变量,否则启动报错
$ sed -i '/"$JAVA_HOME" = ""/iJAVA_HOME=/data/apps/jdk-11.0.2' /data/apps/apache-doris/fe/bin/start_fe.sh$ cat << EOF >/usr/lib/systemd/system/doris-fe.service[Unit]Description=Apache Doris Fe ServiceAfter=network.target[Service]Type=forkingKillMode=control-groupExecStart=/data/apps/apache-doris/fe/bin/start_fe.sh --daemonExecStop=/data/apps/apache-doris/fe/bin/stop_fe.shExecReload=/bin/kill -s HUP \$MAINPIDSuccessExitStatus=0 143PrivateTmp=trueLimitNOFILE=1000000LimitNPROC=100000TimeoutStopSec=10sRestart=on-failureRestartSec=30[Install]WantedBy=multi-user.target
EOF

启动FE

$ systemctl daemon-reload
$ systemctl start doris-fe.service
$ systemctl enable doris-fe.service

检测 FE 是否启动成功
FE 进程启动后,会首先加载元数据,根据 FE 角色的不同,在日志中会看到 transfer from UNKNOWN to MASTER/FOLLOWER/OBSERVER。最终会看到 thrift server started 日志,并且可以通过 mysql 客户端连接到 FE,则表示 FE 启动成功。

也可以通过如下连接查看是否启动成功:

#http://fe_host:fe_http_port/api/bootstrapcurl http://172.21.1.19:8030/api/bootstrap

如果返回:

{"status":"OK","msg":"Success"}

则表示启动成功,其余情况,则可能存在问题。

启动报错:
./bin/start_fe.sh: 第 109 行:[: -gt: 期待一元表达式

解决方法:

#修改109行内容:
if [ $java_version -gt 8 ]; then
>>>>
if [[ $java_version -gt 8 ]]; then
4.FE实例端口信息
实例名称端口名称默认端口通讯方向说明
FEhttp_port *8030FE <–> FE,用户FE 上的 http server 端口
FErpc_port9020BE --> FE, FE <–> FEFE 上的 thrift server 端口,每个fe的配置需要保持一致
FEquery_port9030用户FE 上的 mysql server 端口
FEedit_log_port9010FE <–> FEFE 上的 bdbje 之间通信用的端口

注:
当部署多个 FE 实例时,要保证 FE 的 http_port 配置相同。

3-2、BE 部署

1.拷贝 BE 部署文件到所有要部署 BE 的节点
#将源码编译生成的 output 下的 be 文件夹拷贝到 BE 的节点的指定部署路径下。
$ rsync -avzP /data/apps/apache-doris/incubator-doris-DORIS-0.15.0-release/apache-doris-0.15.0-incubating-src/output/be root@<be_server>:/data/apps/apache-doris/
2.配置 BE

修改 be/conf/be.conf。主要是配置 storage_root_path:数据存放目录。默认在be/storage下,需要手动创建该目录。多个路径之间使用英文状态的分号 ; 分隔(最后一个目录后不要加 ;)。可以通过路径区别存储目录的介质,HDD或SSD。可以添加容量限制在每个路径的末尾,通过英文状态逗号,隔开。

示例1
注意:如果是SSD磁盘要在目录后面加上.SSD,HDD磁盘在目录后面加.HDD

storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,10;/home/disk2/doris
  • /home/disk1/doris.HDD,50,表示存储限制为50GB,HDD;
  • /home/disk2/doris.SSD,10,存储限制为10GB,SSD;
  • /home/disk2/doris,存储限制为磁盘最大容量,默认为HDD

示例2
注意:不论HDD磁盘目录还是SSD磁盘目录,都无需添加后缀,storage_root_path参数里指定medium即可

storage_root_path=/home/disk1/doris,medium:hdd,capacity:50;/home/disk2/doris,medium:ssd,capacity:50
  • /home/disk1/doris,medium:hdd,capacity:10,表示存储限制为10GB, HDD;
  • /home/disk2/doris,medium:ssd,capacity:50,表示存储限制为50GB, SSD;

登录BE服务器,修改BE数据存放目录

$ cd /data/apps/apache-doris/be$ mkdir -p /data/apache-doris/be/doris-storage
$ sed -i 's#^.*storage_root_path.*$#storage_root_path = /data/apache-doris/be/doris-storage,medium:ssd#' conf/be.conf#priority_networks 配置进程绑定IP
$ sed -i 's#^.*priority_networks.*$#priority_networks =  172.21.0.0/16#' conf/be.conf#修改日志默认位置,如启动失败,可以通过查看 log/be.INFO 或者 log/be.out 查看错误信息。
$ mkdir -p /data/logs/apache-doris
$ sed -i 's#^.*sys_log_dir.*$#sys_log_dir = /data/logs/apache-doris#g' conf/be.conf

webserver_port端口配置
如果 be 部署在 hadoop 集群中,注意调整 be.conf 中的 webserver_port = 8040 ,以免造成端口冲突

3.在 FE 中添加所有 BE 节点
  • 安装mysql-client
    BE 节点需要先在 FE 中添加,才可加入集群。可以使用 mysql-client(下载MySQL 5.7)
#安装依赖
$ yum install libncurses* libtinfo*#下载rpm包
$ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-common-5.7.37-1.el7.x86_64.rpm
$ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-libs-5.7.37-1.el7.x86_64.rpm
$ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-client-5.7.37-1.el7.x86_64.rpm#安装
$ rpm -ivh mysql-community-*

报错:mariadb-libs is obsoleted by mysql-community-libs-5.7.37-1.el7.x86_64,解决方法如下:

#查看系统中的mariadb
$ rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.amzn2.x86_64#强制删除旧版本mariadb-libs:
rpm -e --nodeps mariadb-libs-5.5.68-1.amzn2.x86_64
  • 连接到 FE
$ mysql -h 172.21.1.19 -P 9030 -uroot
  • host 为 FE 所在节点 ip;
  • port 为 fe/conf/fe.conf 中的 query_port;
  • 默认使用 root 账户,无passwd登录。
4.启动BE

编写启动脚本

cat << EOF >/usr/lib/systemd/system/doris-be.service[Unit]Description=Apache Doris BE ServiceAfter=network.target[Service]Type=forkingKillMode=control-groupExecStart=/data/apps/apache-doris/be/bin/start_be.sh --daemonExecStop=/data/apps/apache-doris/be/bin/stop_be.shExecReload=/bin/kill -s HUP \$MAINPIDSuccessExitStatus=0 143PrivateTmp=trueLimitNOFILE=1000000LimitNPROC=100000TimeoutStopSec=10sRestart=on-failureRestartSec=30[Install]WantedBy=multi-user.target
EOF

启动FE

$ systemctl daemon-reload
$ systemctl start doris-be.service
$ systemctl enable doris-be.service
5.BE实例端口信息
实例名称端口名称默认端口通讯方向说明
BEbe_port9060FE --> BEBE 上 thrift server 的端口,用于接收来自 FE 的请求
BEwebserver_port8040BE <–> BEBE 上的 http server 的端口
BEheartbeat_service_port9050FE --> BEBE 上心跳服务端口(thrift),用于接收来自 FE 的心跳
BEbrpc_port*8060FE<–>BE, BE <–> BEBE 上的 brpc 端口,用于 BE 之间通讯

3-3、FS_Broker 部署(可选)

Broker 以插件的形式,独立于 Doris 部署。如果需要从第三方存储系统导入数据,需要部署相应的 Broker,默认提供了读取 HDFS 、百度云 BOS 及 Amazon S3 的 fs_broker。fs_broker 是无状态的,建议每一个 FE 和 BE 节点都部署一个 Broker。

1.拷贝源码 fs_broker 的 output 目录下的相应 Broker 目录到需要部署的所有节点上。建议和 BE 或者 FE 目录保持同级。
#拷贝到FE节点目录
$ cd /data/apps/apache-doris/incubator-doris-DORIS-0.15.0-release/apache-doris-0.15.0-incubating-src
$ cp -rf fs_brokers/apache_hdfs_broker/output/apache_hdfs_broker /data/apps/apache-doris/#拷贝到BE节点目录
$ rsync -avzP fs_brokers/apache_hdfs_broker/output/apache_hdfs_broker root@<be_server>:/data/apps/apache-doris/
2.修改相应 Broker 配置

在相应 broker/conf/ 目录下对应的配置文件中,可以修改相应配置。

3.启动 Broker
#启动broker
$ /bin/sh /data/apps/apache-doris/apache_hdfs_broker/bin/start_broker.sh --daemon
#关闭broker
$ /bin/sh /data/apps/apache-doris/apache_hdfs_broker/bin/stop_broker.sh
4.添加 Broker

要让 Doris 的 FE 和 BE 知道 Broker 在哪些节点上,通过 sql 命令添加 Broker 节点列表。
使用 mysql-client 连接启动的 FE,执行以下命令:

# 添加broker
$ ALTER SYSTEM ADD BROKER doristestbroker  "172.21.1.19:8000","172.21.8.247:8000","172.21.12.227:8000";

ALTER SYSTEM ADD BROKER broker_name “host1:port1”,“host2:port2”,…;
其中 host 为 Broker 所在节点 ip;port 为 Broker 配置文件中的 broker_ipc_port。

5.查看 Broker 状态

使用 mysql-client 连接任一已启动的 FE,执行以下命令查看 Broker 状态:

SHOW PROC "/brokers";

注:在生产环境中,所有实例都应使用守护进程启动,以保证进程退出后,会被自动拉起,如 Supervisor (opens new window)。如需使用守护进程启动,在 0.9.0 及之前版本中,需要修改各个 start_xx.sh 脚本,去掉最后的 & 符号。从 0.10.0 版本开始,直接调用 sh start_xx.sh 启动即可。也可参考 这里(opens new window)

6.启动Broker

编写启动脚本

#添加环境变量,否则启动报错
$ sed -i '/"$JAVA_HOME" = ""/iJAVA_HOME=/data/apps/jdk-11.0.2' /data/apps/apache-doris/apache_hdfs_broker/bin/start_broker.sh$ cat << EOF >/usr/lib/systemd/system/doris-broker.service[Unit]Description=Apache Doris Broker ServiceAfter=network.target[Service]Type=forkingKillMode=control-groupExecStart=/data/apps/apache-doris/apache_hdfs_broker/bin/start_broker.sh --daemonExecStop=/data/apps/apache-doris/apache_hdfs_broker/bin/stop_broker.shExecReload=/bin/kill -s HUP \$MAINPIDSuccessExitStatus=0 143PrivateTmp=trueLimitNOFILE=1000000LimitNPROC=100000TimeoutStopSec=10sRestart=on-failureRestartSec=30[Install]WantedBy=multi-user.target
EOF

**启动Broker **

$ systemctl daemon-reload
$ systemctl restart doris-broker.service
$ systemctl enable doris-broker.service

相关文章:

部署Apache Doris

官方文档&#xff1a;https://doris.apache.org/zh-CN/installing/compilation.html 一、编译 使用 Docker 开发镜像编译&#xff08;推荐&#xff09; 1.拉取镜像 #下载 Docker 最新主干版本代码&#xff0c;会随主干版本不断更新。 $ docker pull apache/incubator-doris:…...

ElasticSearch-全文检索(一)基本介绍

简介 Elasticsearch&#xff1a;官方分布式搜索和分析引擎 | Elastic 全文搜索属于最常见的需求&#xff0c;开源的Elasticsearch是目前全文搜索引擎的首选。 它可以快速地储存、搜索和分析海量数据。维基百科、StackOverflow、Github都采用它 Elastic的底层是开源库Lucene。但…...

paramiko 库实现的暴力破解 SSH 密码

import paramiko import optparse import threading import time from threading import Thread, BoundedSemaphore# 用paramiko暴力破解SSH密码 # 最大并发连接尝试的数量&#xff0c;可根据实际情况调整&#xff0c;适当减小可降低对目标服务器的压力以及减少多线程同步问题出…...

Python 操作 Elasticsearch 全指南:从连接到数据查询与处理

文章目录 Python 操作 Elasticsearch 全指南&#xff1a;从连接到数据查询与处理引言安装 elasticsearch-py连接到 Elasticsearch创建索引插入数据查询数据1. 简单查询2. 布尔查询 更新文档删除文档和索引删除文档删除索引 批量插入数据处理分页结果总结 Python 操作 Elasticse…...

Jarvis March算法详解及Python实现(附设计模式案例)

目录 Jarvis March算法详解及Python实现(附设计模式案例)第一部分:Jarvis March算法概述与原理1.1 什么是Jarvis March算法?1.2 算法原理1.3 算法流程1.4 时间复杂度第二部分:Jarvis March算法的Python实现(面向对象设计)2.1 面向对象设计2.2 代码实现2.3 代码解释第三部…...

AIGC中的文本风格迁移:基于深度学习的实现

引言 文本风格迁移是自然语言处理领域的一个重要研究方向&#xff0c;它可以将文本从一种风格转换为另一种风格&#xff0c;同时保留其原有的内容。随着深度学习技术的发展&#xff0c;文本风格迁移的方法变得越来越先进和高效。本文将探讨基于序列到序列模型&#xff08;Seq2…...

丹摩征文活动 |【前端开发】HTML+CSS+JavaScript前端三剑客的基础知识体系了解

前言 &#x1f31f;&#x1f31f;本期讲解关于HTMLCSSJavaScript的基础知识&#xff0c;小编带领大家简单过一遍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 …...

响应“一机两用”政策 落实政务外网安全

在数字化时代&#xff0c;政务办公外网安全的重要性日益凸显&#xff0c;特别是在“一机两用”的背景下&#xff0c;即同一台终端既要处理政务内网的数据&#xff0c;又要访问互联网&#xff0c;这对网络安全提出了更高的要求。深信达SPN安全上网方案&#xff0c;即反向沙箱技术…...

通过JS删除当前域名中的全部COOKIE教程

有时候需要通过JS来控制一下网站的登录状态&#xff0c;就例如:网站登出功能&#xff0c;我们可以直接通过JS将所有COOKIE删除&#xff0c;COOKIE删除之后&#xff0c;网站自然也就退出了。 那么今天我就给大家分享一段JS的函数&#xff0c;通过调用这段函数就可以实现删除COO…...

Flutter:Widget生命周期

StatelessWidget&#xff1a;无状态部件的生命周期 import package:flutter/material.dart;void main() {runApp(App()); }class App extends StatelessWidget {overrideWidget build(BuildContext context) {return MaterialApp(home: MyHomePage(title: MyHome),);} }class M…...

Flutter:Dio下载文件到本地

import dart:io; import package:dio/dio.dart;main(){// 创建dio对象final dio Dio();// 下载地址var url https://*******.org/files/1.0.0.apk;// 手机端路径String savePath Directory.systemTemp.path/ceshi.apk;print(savePath);downLoad(dio,url,savePath); }downLo…...

[⑧5G NR]: PBCH payload生成

本篇博客记录下5G PBCH信道中payload数据的生成方式。PBCH payload一共32个比特&#xff0c;基本结构如下图&#xff1a; 根据SSB PDU中bchPayloadFlag的值有三种方式得到PBCH payload。 bchPayloadFlag 0&#xff1a;全部32比特由MAC层提供。 bchPayloadFlag 1&#xff1a;M…...

查看解决端口占用,以及docker解决端口占用的原理

在软件开发和部署过程中&#xff0c;端口占用是一个常见的问题。以下是查看和解决端口占用问题的完整解决方案&#xff1a; 一、查看端口占用情况 1. 在 Linux 系统中 方法一&#xff1a;使用 lsof 命令 sudo lsof -i:<端口号>输出信息中会显示占用端口的进程名称、PI…...

力扣-Hot100-链表其一【算法学习day.34】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&am…...

centos7 升级openssl 与升级openssh 安装卸载 telnet-server

前言&#xff1a; 服务器被安全扫描&#xff0c;扫出了漏洞需要修复&#xff0c;根据提示将openssh升级为9.8p1的版本&#xff0c;同时需要升级openssl&#xff0c;但是升级openssh可能会导致ssh连接失败&#xff0c;从而无法继续操作&#xff0c;特别是远程机房尤为危险&#…...

C++知识点总结(57):STL综合

STL综合 一、数据结构1. 队列2. 映射 二、队列例题1. 约瑟夫环&#xff08;数据加强&#xff09;2. 打印队列3. 小组队列4. 日志统计 2.0 三、映射真题1. 眼红的 Medusa2. 美食评委 一、数据结构 1. 队列 功能代码定义queue<tp>q入队.push(x)出队.pop()队头.front()队尾…...

mac2019环境 Airflow+hive+spark+hadoop本地环境安装

1 环境介绍 本地安装可分为两个部分&#xff0c;mac软件环境&#xff0c; python开发环境 ps: 安装过程参考chatgpt、csdn文章 1.1 mac软件环境 目标安装的的软件是hive、apache-spark、hadoop&#xff0c;但是这三个软件又依赖java(spark依赖&#xff09;、ssh&#xff08…...

如何使用EasyExcel生成多列表组合填充的复杂Excel示例

作者&#xff1a;Funky_oaNiu 一、&#xff08;需求&#xff09;生成的表格效果&#xff1a;二、搞一个模板文件三、建立对应的表格实体类四、开始填充五、Vue3前端发起请求下载六、官方文档及AI问答 一、&#xff08;需求&#xff09;生成的表格效果&#xff1a; 其中只有顶部…...

【MySQL】MySQL在Centos环境安装

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; MySQL 目录 &#x1f308;前言&#x1f525;卸载不要的环境&#x1f525;检查系统安装包&#x1f525;卸载这些默认安装包&#x1f525;获取mysql官方yum源&#x1f525;安装mysql yum源…...

JDBC-Mysql 时区问题详解

目录 一、前置准备 1.1 版本号列表 1.2 Sql脚本 1.3 application.yaml配置 1.4 数据库时区设置 二、java Date类型与&#xff08;jdbcType&#xff09;TIMESTAMP类型的转换 2.1 jdbc对serverTimeZone的处理 2.2 java Date转&#xff08;jdbcType&#xff09;TIMESTAMP …...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...