0505网页制作与网站建设淄博网站建设优化

张小明 2025/12/31 1:15:57
0505网页制作与网站建设,淄博网站建设优化,阿里网站备案,温州制造作网站基于云原生架构的大数据OLAP平台搭建指南 引言 痛点引入#xff1a;传统OLAP的“三座大山” 凌晨3点#xff0c;数据分析师小张盯着屏幕上的“查询超时”提示#xff0c;揉了揉发红的眼睛——上周刚上线的用户行为分析报表#xff0c;今天突然慢得无法使用。运维工程师老…基于云原生架构的大数据OLAP平台搭建指南引言痛点引入传统OLAP的“三座大山”凌晨3点数据分析师小张盯着屏幕上的“查询超时”提示揉了揉发红的眼睛——上周刚上线的用户行为分析报表今天突然慢得无法使用。运维工程师老王赶到现场发现传统MPP数据库Greenplum的CPU已经跑满想扩容却要等3天采购服务器而业务侧已经在群里催了第5次“今天要给老板汇报Q3增长情况”这不是个例。传统OLAP架构的痛点正在成为企业数字化转型的“绊脚石”扩容难基于物理机的MPP集群扩容需要采购硬件、调试网络周期以天计成本高本地存储高性能服务器的组合TCO总拥有成本是云存储的3-5倍维护繁集群状态监控、故障恢复、版本升级都需要专人值守人力成本居高不下灵活性差无法快速适配跨数据源查询比如同时查MySQL、S3、Hive难以支撑实时分析需求。解决方案概述云原生OLAP的“破局之道”云原生架构的出现为OLAP平台带来了弹性、低成本、高可用的新解法。其核心逻辑是用**KubernetesK8s**做容器编排实现OLAP引擎的快速部署、弹性伸缩用**对象存储S3/OSS/COS**替代本地存储降低存储成本约1/5并支持无限扩容用容器化的OLAP引擎如Trino、Doris、ClickHouse云原生版兼容多数据源提升查询性能用云原生工具链Helm、Operator、Prometheus实现自动化运维减少人力投入。简言之云原生OLAP K8s容器编排 对象存储 分布式OLAP引擎 自动化运维。最终效果展示通过本文的步骤你将搭建一个支持PB级数据、秒级查询、分钟级扩容的OLAP平台实现跨数据源查询同时分析MySQL的订单数据、S3的用户行为日志、Hive的历史报表弹性伸缩根据查询负载自动增加Trino Worker节点从3个到10个仅需5分钟高可用Doris FE前端多副本选举BE后端故障自动漂移低成本存储成本降低70%计算资源按需付费闲时缩容到2个Worker。准备工作1. 环境与工具清单搭建云原生OLAP平台需要以下基础组件组件类型推荐选型说明云原生底座阿里云ACK / AWS EKS / 腾讯云TKE / 自建K8s优先选择云服务商的托管K8s无需维护Master节点容器引擎Docker / ContainerdK8s的容器运行时推荐Containerd更轻量包管理工具Helm 3.x快速部署K8s应用如Trino、Doris对象存储阿里云OSS / AWS S3 / 腾讯云COS存储原始数据和OLAP引擎的中间结果OLAP引擎Trino跨数据源查询 Doris实时分析组合使用Trino做联邦查询Doris做高并发低延迟分析元数据管理Apache Hive Metastore管理对象存储中的数据元信息如表结构、分区监控日志Prometheus Grafana Loki监控集群状态查询日志服务网格Istio实现服务发现、负载均衡、流量控制2. 前置知识要求为了更好理解本文内容建议掌握以下基础K8s核心概念Pod、Deployment、Service、Ingress、HelmDocker基础镜像构建、容器运行OLAP基础列式存储、MPP架构、星型/雪花模型对象存储基础Bucket、Object、AccessKey/SecretKey。如果需要补基础可以参考K8s入门《Kubernetes in Action》OLAP基础《大数据OLAP技术实战》云原生入门Cloud Native Computing Foundation (CNCF) 文档。核心步骤从0到1搭建云原生OLAP平台步骤1搭建云原生底座——K8s集群K8s是云原生OLAP的“操作系统”负责管理容器的生命周期、资源调度、高可用。我们以**阿里云ACK容器服务Kubernetes版**为例演示集群搭建1.1 创建ACK集群登录阿里云控制台进入“容器服务Kubernetes版”点击“创建集群”选择“托管集群”Master节点由阿里云维护配置集群参数集群名称olap-clusterKubernetes版本选择最新稳定版如v1.28节点池选择“按量付费”实例类型选ecs.g6.2xlarge8核16G适合OLAP计算节点数量初始3个后续可弹性扩容点击“确认创建”等待5-10分钟集群创建完成。1.2 配置kubectl访问集群下载集群KubeConfig文件阿里云控制台→集群详情→连接信息将文件保存到本地~/.kube/config验证连接kubectl get nodes# 输出NAME STATUS ROLES AGE VERSION cn-hangzhou.192.168.0.100 Readynone5m v1.28.3 cn-hangzhou.192.168.0.101 Readynone5m v1.28.3 cn-hangzhou.192.168.0.102 Readynone5m v1.28.31.3 安装HelmK8s包管理工具Helm可以将复杂的K8s应用如Trino打包成“Chart”一键部署。安装命令# 下载Helm二进制包curl-fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3# 授权并执行chmod700get_helm.sh ./get_helm.sh# 验证helm version# 输出version.BuildInfo{Version:v3.14.0, ...}步骤2搭建数据湖——对象存储与元数据管理云原生OLAP的“数据仓库”是对象存储元数据管理的组合对象存储存数据Hive Metastore管元信息如表结构、分区。2.1 创建对象存储Bucket以阿里云OSS为例登录OSS控制台点击“创建Bucket”配置参数Bucket名称olap-data-lake存储类型标准存储适合频繁访问地域与K8s集群同地域减少跨地域延迟点击“确定”创建完成。2.2 部署Hive MetastoreHive Metastore是连接OLAP引擎与对象存储的“桥梁”我们用Helm部署添加Helm仓库helm repoaddbitnami https://charts.bitnami.com/bitnami部署Hive Metastorehelminstallhive-metastore bitnami/hive-metastore\--set metastore.database.typemysql\--set metastore.database.mysql.auth.rootPasswordyour-root-password\--set metastore.s3.enabledtrue\--set metastore.s3.accessKeyyour-oss-access-key\--set metastore.s3.secretKeyyour-oss-secret-key\--set metastore.s3.endpointoss-cn-hangzhou.aliyuncs.com验证部署kubectl get pods|grephive-metastore# 输出hive-metastore-0 1/1 Running 0 2m2.3 测试元数据连接用beeline工具测试Hive Metastore是否能访问OSS进入Hive Metastore Podkubectlexec-it hive-metastore-0 -- /bin/bash启动beelinebeeline -u jdbc:hive2://localhost:9083/创建测试表数据存到OSSCREATEEXTERNALTABLEtest_table(idINT,name STRING)STOREDASPARQUET LOCATIONoss://olap-data-lake/test_table/;插入数据INSERTINTOtest_tableVALUES(1,Alice),(2,Bob);查询数据SELECT*FROMtest_table;# 输出1 Alice2 Bob成功查询到数据说明元数据与对象存储的连接正常步骤3部署容器化OLAP引擎——Trino Doris我们选择Trino联邦查询引擎和Doris实时分析引擎的组合覆盖“跨数据源查询”和“高并发实时分析”两大场景。3.1 部署Trino联邦查询引擎Trino是一款分布式SQL查询引擎支持查询S3、Hive、MySQL、PostgreSQL等20数据源适合做“数据联邦”统一查询入口。3.1.1 配置Trino Chart创建trino-values.yaml文件配置Trino连接Hive Metastore和OSSserver:config:# 配置Hive Metastorehive:metastore:uri:thrift://hive-metastore:9083# 配置OSS阿里云s3:endpoint:oss-cn-hangzhou.aliyuncs.comaccessKey:your-oss-access-keysecretKey:your-oss-secret-keyregion:cn-hangzhoupathStyleAccess:true# 阿里云OSS需要开启路径风格# 配置Coordinator调度节点资源resources:requests:cpu:2memory:8Gilimits:cpu:4memory:16Giworker:# Worker节点数量初始3个后续可弹性扩容replicas:3# Worker节点资源配置根据业务需求调整resources:requests:cpu:4memory:16Gilimits:cpu:8memory:32Gi# 暴露Trino Web UI用于监控查询service:type:NodePortport:8080nodePort:300803.1.2 部署Trino# 添加Trino Helm仓库helm repoaddtrino https://trinodb.github.io/charts# 更新仓库helm repo update# 部署Trinohelminstalltrino trino/trino --values trino-values.yaml3.1.3 验证Trino查看Pod状态kubectl get pods|greptrino# 输出trino-coordinator-5f789d6b7c-2xqzk1/1 Running03m trino-worker-01/1 Running03m trino-worker-11/1 Running03m trino-worker-21/1 Running03m访问Trino Web UI获取K8s节点的公网IP阿里云控制台→ECS实例→公网IP访问http://节点公网IP:30080看到Trino的查询界面如图1。图1Trino Web UI显示查询历史、Worker状态测试查询用Trino CLI连接Coordinator查询Hive Metastore中的test_table# 下载Trino CLIwgethttps://repo1.maven.org/maven2/io/trino/trino-cli/429/trino-cli-429-executable.jar -O trinochmodx trino# 连接Trino./trino --server节点公网IP:30080 --catalog hive --schema default# 查询数据SELECT * FROM test_table;# 输出1 Alice2 Bob3.2 部署Doris实时分析引擎Doris是Apache顶级项目基于MPP架构支持**高并发10万QPS、低延迟毫秒级**查询适合做实时报表、Dashboard分析。3.2.1 安装Doris OperatorDoris Operator是K8s的扩展用于管理Doris集群的生命周期部署、扩容、升级。安装命令# 添加Doris Helm仓库helm repoadddoris https://apache.github.io/doris-operator# 安装Doris Operatorhelminstalldoris-operator doris/doris-operator3.2.2 配置DorisCluster创建doris-cluster.yaml文件配置Doris的FE前端和BE后端apiVersion:doris.apache.org/v1kind:DorisClustermetadata:name:dorisspec:# FE配置前端负责元数据管理、查询调度feSpec:replicas:3# 3个副本高可用选举1个Leaderimage:apache/doris:2.0.0-fe# 镜像版本resources:requests:cpu:2memory:8Gilimits:cpu:4memory:16Gi# FE存储元数据用云盘storage:type:PersistentVolumeClaimsize:20GistorageClass:alicloud-disk-ssd# 阿里云SSD云盘# BE配置后端负责数据存储、查询计算beSpec:replicas:3# 3个副本数据分片存储image:apache/doris:2.0.0-beresources:requests:cpu:4memory:16Gilimits:cpu:8memory:32Gi# BE存储数据用OSSstorage:type:S3s3:endpoint:oss-cn-hangzhou.aliyuncs.combucket:olap-data-lakeaccessKey:your-oss-access-keysecretKey:your-oss-secret-keyrootPath:doris-data# 数据存储路径3.2.3 部署Doris集群kubectl apply -f doris-cluster.yaml3.2.4 验证Doris查看Doris集群状态kubectl get dorisclusters# 输出NAME FE READY BE READY AGE doris3/33/3 5m访问Doris Web UIDoris FE的默认端口是8030用NodePort暴露kubectl expose deployment doris-fe --typeNodePort --port8030--namedoris-fe-service# 获取NodePortkubectl getservicedoris-fe-service# 输出doris-fe-service NodePort 172.21.0.100 none 8030:30030/TCP 1m访问http://节点公网IP:30030输入默认账号root无密码看到Doris的集群管理界面如图2。图2Doris Web UI显示FE/BE状态、数据分片测试实时写入与查询用Doris的Stream Load工具向Doris导入实时数据# 准备测试数据JSON格式echo{id:1,name:Alice,age:25}data.json# 发送Stream Load请求curl-X PUT -Hlabel: test_load-HContent-Type: application/json\-d data.json\http://节点公网IP:30030/api/default/test_table/_stream_load然后在Doris Web UI中查询test_table能立即看到导入的数据响应时间1秒步骤4数据集成——从业务系统到OLAP平台数据是OLAP平台的“燃料”我们需要将业务系统如MySQL、Redis的数据同步到对象存储或Doris中。常见的同步工具包括批量同步Apache Spark、Apache Flink离线ETL实时同步Debezium捕获MySQL binlog、Flink CDC实时增量同步云原生同步阿里云DataWorks、AWS Glue托管ETL服务。4.1 示例MySQL数据实时同步到Doris我们用Flink CDC实现MySQL数据的实时增量同步配置MySQL开启binlogmy.cnf中设置log_binONbinlog_formatROW部署Flink集群用Helm部署Flink参考Flink Helm Chart编写Flink CDC作业importorg.apache.flink.streaming.api.environment.StreamExecutionEnvironment;importcom.ververica.cdc.connectors.mysql.source.MySqlSource;importcom.ververica.cdc.debezium.JsonDebeziumDeserializationSchema;publicclassMysqlToDoris{publicstaticvoidmain(String[]args)throwsException{StreamExecutionEnvironmentenvStreamExecutionEnvironment.getExecutionEnvironment();// 配置MySQL CDC源MySqlSourceStringmySqlSourceMySqlSource.Stringbuilder().hostname(mysql-host).port(3306).databaseList(sales_db)// 同步的数据库.tableList(sales_db.orders)// 同步的表.username(cdc_user).password(cdc_password).deserializer(newJsonDebeziumDeserializationSchema())// 反序列化为JSON.build();// 读取MySQL CDC数据写入Dorisenv.fromSource(mySqlSource,WatermarkStrategy.noWatermarks(),MySQL Source).addSink(DorisSink.sink(doris-fe-service:8030,// Doris FE地址default,// 数据库orders,// 表root,// 用户名// 密码));env.execute(MySQL to Doris CDC Job);}}提交作业用Flink CLI提交作业验证数据是否实时同步到Doris。步骤5服务网格与负载均衡——对外暴露OLAP服务为了让外部应用如BI工具、数据分析师访问OLAP引擎我们需要用Istio服务网格和Ingress入口网关实现服务暴露与负载均衡。5.1 安装Istio# 下载Istio CLIcurl-L https://istio.io/downloadIstio|sh-# 进入Istio目录cdistio-1.22.0# 安装Istio默认配置./bin/istioctlinstall--setprofiledemo -y5.2 配置VirtualService服务路由创建trino-virtualservice.yaml配置Trino的负载均衡apiVersion:networking.istio.io/v1alpha3kind:VirtualServicemetadata:name:trino-virtualservicespec:hosts:-trino.olap.com# 自定义域名需解析到Ingress IPgateways:-istio-system/istio-ingressgatewayhttp:-route:-destination:host:trino-coordinator# Trino Coordinator的Service名称port:number:8080# 配置负载均衡策略最小连接数loadBalancer:simple:LEAST_CONN5.3 配置Ingress Gateway# 暴露Istio Ingress Gatewaykubectl exposeserviceistio-ingressgateway --typeLoadBalancer --nameistio-ingressgateway-public -n istio-system# 获取Ingress IPkubectl getserviceistio-ingressgateway-public -n istio-system# 输出EXTERNAL-IP: 47.100.xxx.xxx5.4 测试访问将自定义域名trino.olap.com解析到Ingress IP然后用Trino CLI访问./trino --server trino.olap.com:80 --catalog hive --schema default# 成功连接说明服务暴露正常步骤6监控与日志——保障集群稳定运行云原生OLAP的运维核心是**“可观测性”**通过监控Metrics、日志Logs、链路追踪Tracing及时发现并解决问题。6.1 部署Prometheus Grafana监控安装Prometheus Operatorhelm repoaddprometheus-community https://prometheus-community.github.io/helm-charts helminstallprometheus prometheus-community/kube-prometheus-stack配置ServiceMonitor采集Metrics创建trino-servicemonitor.yaml采集Trino的MetricsapiVersion:monitoring.coreos.com/v1kind:ServiceMonitormetadata:name:trino-monitorlabels:release:prometheusspec:selector:matchLabels:app:trino-coordinator# Trino Coordinator的Service标签endpoints:-port:httppath:/metrics# Trino的Metrics端点interval:30s# 采集间隔同样的方式配置Doris的ServiceMonitor采集FE/BE的Metrics。导入Grafana DashboardTrino DashboardTrino Grafana DashboardDoris DashboardDoris Grafana Dashboard。导入后Grafana会显示Trino的查询延迟、CPU使用情况Doris的BE节点状态、数据存储量如图3。图3Grafana DashboardTrino查询延迟监控6.2 部署Loki Promtail日志管理Loki是云原生日志系统与Prometheus、Grafana无缝集成适合存储容器日志。安装Lokihelm repoaddgrafana https://grafana.github.io/helm-charts helminstallloki grafana/loki安装Promtail采集容器日志helminstallpromtail grafana/promtail --set loki.serviceNameloki在Grafana中查询日志添加Loki数据源http://loki:3100然后用LogQL查询Trino的日志{apptrino-coordinator} |~ query failed能快速定位查询失败的原因如权限问题、数据格式错误。步骤7性能优化——从“能用”到“好用”搭建完成后需要针对业务场景优化性能以下是常见的优化点7.1 K8s资源调度优化节点亲和性将Doris BE调度到高性能节点如SSD云盘、高CPU核数# 在doris-cluster.yaml中添加nodeAffinitybeSpec:affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:-matchExpressions:-key:disk-typeoperator:Invalues:-ssd资源QoS为Trino Worker设置GuaranteedQoS确保资源不被抢占# trino-values.yaml中worker.resourcesresources:requests:cpu:4memory:16Gilimits:cpu:4# 与requests相等Guaranteed QoSmemory:16Gi7.2 OLAP引擎参数优化Trino优化调整查询内存限制query.max-memory-per-node12GiWorker节点内存的75%开启谓词下推hive.pushdown-filter-enabledtrue将过滤条件下推到数据源减少数据传输调整并行度query.parallelism8与CPU核数一致。Doris优化数据分区按时间分区如PARTITION BY RANGE(dt) (PARTITION p202401 VALUES [(2024-01-01), (2024-02-01))]数据分桶按用户ID分桶DISTRIBUTED BY HASH(user_id) BUCKETS 16开启列存索引PROPERTIES (storage_typeCOLUMN)列式存储提升查询效率。7.3 数据格式优化使用Parquet/ORC格式列式存储压缩率高比CSV高3-5倍查询时只读取需要的列数据压缩用Snappy或Zstd压缩Snappy速度快Zstd压缩率高避免小文件用Spark将小文件合并如spark.sql.files.maxPartitionBytes128MB减少Trino的文件扫描时间。总结与扩展回顾要点本文搭建的云原生OLAP平台核心链路是数据采集用Flink CDC从MySQL同步数据到Doris数据存储对象存储存原始数据Doris存实时分析数据查询引擎Trino做联邦查询Doris做实时分析服务暴露IstioIngress对外提供访问运维监控PrometheusGrafanaLoki保障稳定。常见问题FAQTrino连接Hive Metastore失败检查① Metastore的URI是否正确thrift://hive-metastore:9083② K8s集群与Metastore是否在同一网络③ OSS的AccessKey/SecretKey是否有效。Doris BE启动失败检查① OSS的Bucket是否存在② BE的S3配置是否正确endpoint、accessKey、secretKey③ BE的资源是否足够CPU/内存。查询很慢怎么办排查步骤① 检查数据是否分区/分桶② 检查OLAP引擎的资源是否不足如Trino Worker数量太少③ 检查查询语句是否优化如避免全表扫描。下一步深入云原生OLAP如果想进一步提升平台能力可以尝试自动扩容用KEDAKubernetes Event-Driven Autoscaling根据Trino的查询队列长度自动缩放Worker节点GitOps用Argo CD实现OLAP集群的持续部署代码变更自动同步到K8s多租户用Trino的Catalog和Doris的Database实现多租户隔离支持不同业务线共享集群湖仓一体用Apache Iceberg或Delta Lake做数据湖结合Trino实现“湖仓一体”查询直接查询数据湖中的事务数据。结语云原生OLAP不是“传统OLAP容器”的简单组合而是架构思维的升级从“买服务器攒集群”到“用云资源搭平台”从“人工运维”到“自动化管理”从“单一数据源”到“联邦查询”。通过本文的步骤你已经搭建了一个弹性、高可用、低成本的云原生OLAP平台足以支撑企业的实时分析需求。但技术永无止境建议持续关注Trino、Doris、K8s的最新版本不断优化你的平台——毕竟最好的架构永远是“适合当前业务且能快速演进”的架构。如果有问题欢迎在评论区留言我们一起讨论附录参考资源Trino官方文档https://trino.io/docs/current/Doris官方文档https://doris.apache.org/K8s官方文档https://kubernetes.io/zh-cn/docs/Istio官方文档https://istio.io/latest/docs/。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

有手机网站了还要微网站吗wordpress 批量pdf

SAP 的凭证分割(Document Splitting)在“0 余额结算账户(Zero-Balance Clearing Account)”这一配置点里,账户码 000 / 过账码 40 50 只是系统交付的默认值,用来处理最普通的“总账–总账”场景。 如果你们…

张小明 2025/12/31 1:04:58 网站建设

php 信息分类网站开发电子商务网站建设新闻

还在为Jellyfin中的番剧元数据不全而烦恼吗?Jellyfin Bangumi插件帮你完美解决!这款免费开源插件专门为中文用户打造,能够自动从Bangumi获取高质量的中文番剧元数据,并实现播放进度自动同步到Bangumi账号。无论是动画剧集、电影还…

张小明 2025/12/30 16:20:46 网站建设

猪八戒网站建设公司阳江企业网站建设

OKNews12月13日讯,在全球金融市场日益融合的当下,美股已不再只是华尔街玩家的专属领地。随着加密货币衍生品平台的创新步伐加快,传统金融与数字资产世界正以前所未有的方式交汇。近期,多家主流媒体如Bloomberg、CoinDesk报道&…

张小明 2025/12/29 15:18:25 网站建设

做代还的人都聚集在哪些网站做网站多久能盈利

Jupyter Notebook内核连接失败?重置PyTorch-CUDA-v2.6配置即可 在深度学习项目开发中,一个常见的“拦路虎”不是模型不收敛,也不是数据质量差,而是当你满怀期待地打开Jupyter Notebook时,却看到那句令人沮丧的提示&…

张小明 2025/12/29 15:17:52 网站建设

米定制网的网站是那个公司做建设工程信息网 重庆

Git 协作与底层操作全解析 在软件开发的日常工作中,Git 作为版本控制系统扮演着至关重要的角色。它不仅能帮助开发者高效地管理代码,还提供了多种强大的功能来满足不同的协作和开发需求。本文将深入探讨 Git 的几个重要功能,包括补丁邮件发送、创建 Git 包、生成归档文件以…

张小明 2025/12/29 15:17:16 网站建设