diff --git a/README.md b/README.md index 509d9da..f5a43f2 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,60 @@ # Hudi Service -围绕 Hudi 同步和压缩流程建立了一整套的工具和流程。 +围绕Hudi同步和压缩流程建立了一整套的工具和流程。 -*如果使用IDEA查看项目,可以安装Mermaid插件查看相关流程图。* +## 部署 -```mermaid -graph LR -a --> b -``` +> 由于部份配置需要在源码增删,无法通过配置文件修改,**如果部署新集群,建议对master建立分支进行操作,避免配置混淆** + +### 配置准备 + +#### 主机规划 + +通常来说,应用部署需要逻辑上规划有 + +- 一台**接口机**;用于操作脚本、存放jar包等。 +- 一台**组件机**;用于部署应用配套的外部组件。 +- 剩下的作为**应用机**;用于部署应用服务节点。 + +上述为逻辑规划,原则上对于机器配置没有特别要求,可以混用;如接口机上也用于部署外部组件,同时也作为服务节点部署服务。 + +组件机上规划有指标和日志汇聚,hudi任务多的情况下,对IO和磁盘有一定的负载要求,建议单独部署。 + +#### 外部资源确认 + +- 可用的Zookeeper集群(增删改查) +- 可用的Hadoop3集群(HDFS增删改查) +- 可用的Yarn集群(任务提交) +- 可用的应用部署主机(Kerberos、JDK) +- 部署主机到配置数据库的网络连通 +- 部署主机到Pulsar集群的网络连通(admin、client连通) +- Yarn集群节点到组件机的网络连通 +- Yarn集群节点到Pulsar集群的网络连通(client) + +##### Hadoop配置 + +在`config`目录下以「hudi数据所有集群名称+hudi同步运行集群名称」的格式建立配置文件夹,如`b2b12`,并将下列配置文件放在这里 + +- core-site.xml +- hdfs-site.xml +- yarn-site.xml +- viewfs-mount-table.xml(如果需要使用联邦,core-site.xml也需要将引用改为相对路径引用) + +#### 外部组件部署 + +##### Victoria Metrics + +##### Loki + +##### Grafana + +#### 部署配置 + +以`service-cli/service-cli-runner/src/main/resources/application-b12.yml`为模版,补全应用部署信息 + +以`service-web/src/main/resources/static/common/info.js#commonInfo`为模板,补全web页面相关信息 + +## 运维 ## 模块 @@ -23,8 +70,4 @@ sync 模块包含 Hudi 运行的全部业务逻辑,Hudi on flink 的运行模 ### 部署工具 -## 部署 - -## 运维 - ## 开发 diff --git a/service-cli/service-cli-runner/src/main/resources/application-b12.yml b/service-cli/service-cli-runner/src/main/resources/application-b12.yml index 5fb57e5..735bf68 100644 --- a/service-cli/service-cli-runner/src/main/resources/application-b12.yml +++ b/service-cli/service-cli-runner/src/main/resources/application-b12.yml @@ -1,35 +1,56 @@ deploy: runtime: + # 应用部署主机用户 user: datalake + # 应用jar包 jar-path: /data/datalake/jars + # 主机jdk jdk-path: /opt/jdk8u252-b09/bin/java + # 应用日志 log-path: /data/datalake/logs + # 应用配置 conf-path: /data/datalake/conf + # 应用数据 data-path: /data/datalake/data + # service-uploader模块提供的下载地址 download-url: http://AxhEbscwsJDbYMH2:cYxg3b4PtWoVD5SjFayWxtnSVsjzRsg4@132.126.207.124:36800/file/download + # kerberos keytab文件 kerberos-keytab-path: /etc/security/keytabs/datalake.app.keytab + # 服务日志和hudi日志对应的loki服务 loki: service-url: http://132.126.207.125:33100 service-push-url: ${deploy.runtime.loki.service-url}/loki/api/v1/push hudi-url: http://132.126.207.126:33100 hudi-push-url: ${deploy.runtime.loki.hudi-url}/loki/api/v1/push + # 服务zookeeper zk-url: b1m2.hdp.dc:2181,b1m3.hdp.dc:2181,b1m4.hdp.dc:2181,b1m5.hdp.dc:2181,b1m6.hdp.dc:2181 + # hudi zookeeper(通常和服务zookeeper共用) connector-zk-url: b1m2.hdp.dc:2181,b1m3.hdp.dc:2181,b1m4.hdp.dc:2181,b1m5.hdp.dc:2181,b1m6.hdp.dc:2181 hudi: + # hudi业务jar包所在目录 app-hdfs-path: hdfs://b2/apps/datalake/jars/app-b12 + # hudi指标推送 victoria-push-url: http://132.126.207.125:35710/api/v1/import/prometheus loki-push-url: ${deploy.runtime.loki.hudi-push-url} executor: + # task业务jar包所在目录 task-jar-path: hdfs://b2/apps/datalake/jars/service + # task结果存放目录 task-result-path: hdfs://b2/apps/datalake/task-results + # spring security配置 security: authority: ENC(GXKnbq1LS11U2HaONspvH+D/TkIx13aWTaokdkzaF7HSvq6Z0Rv1+JUWFnYopVXu) username: ENC(moIO5mO39V1Z+RDwROK9JXY4GfM8ZjDgM6Si7wRZ1MPVjbhTpmLz3lz28rAiw7c2LeCmizfJzHkEXIwGlB280g==) darkcode: ENC(0jzpQ7T6S+P7bZrENgYsUoLhlqGvw7DA2MN3BRqEOwq7plhtg72vuuiPQNnr3DaYz0CpyTvxInhpx11W3VZ1trD6NINh7O3LN70ZqO5pWXk=) + # hudi运行集群(集群名称需要和代码里定义的名称一致) yarn: + # hudi表数据存放集群 store-cluster: b2 + # hudi同步运行集群 sync-clusters: b12 + # hudi压缩运行集群 compaction-clusters: b12,b1,b5,a4 + # 覆盖service的公共配置,主要需要修改的就是部署副本数 services: service-api: replicas: 10 @@ -53,6 +74,7 @@ deploy: replicas: 10 service-flink-query: replicas: 10 + # 全部部署主机的域名和ip信息(key值必须按"[xxx]"这种方式写,spring boot旧版的历史遗留bug) hosts: "[b12s4.hdp.dc]": ip: 132.126.207.130 diff --git a/service-web/src/main/resources/static/common/info.js b/service-web/src/main/resources/static/common/info.js index 3415083..910e2bb 100644 --- a/service-web/src/main/resources/static/common/info.js +++ b/service-web/src/main/resources/static/common/info.js @@ -1,13 +1,14 @@ const commonInfo = { - // baseUrl: 'http://132.126.207.131:35690/hudi_services/service_web', baseUrl: '/hudi_services/service_web', clusters: { + // hudi同步运行集群和yarn队列名称 sync: { 'b12': 'default', }, sync_names() { return Object.keys(this.sync).join(',') }, + // hudi压缩运行集群和yarn队列名称 compaction: { 'b12': 'default', 'b1': 'datalake', @@ -19,10 +20,13 @@ const commonInfo = { }, }, loki: { + // grafana链接,用于直接打开grafana日志查看 grafanaUrl: 'http://132.126.207.125:35700', + // grafana对应hudi使用的loki配置的datasource id hudi: { datasource: 'f648174e-7593-45cf-8fe8-8f8d5cf0fdde', }, + // grafana对应服务使用的loki配置的datasource id service: { datasource: 'b6fee51c-facd-4261-a0eb-8c69a975fba3', }