
后端【免费下载链接】google-api-nodejs-clientGoogles officially supported Node.js client library for accessing Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT (Service Tokens) is included.项目地址https://gitcode.com/gh_mirrors/go/google-api-nodejs-client点击查看免费下载本文以 dataproc 模块 README 为骨架结合 google-api-nodejs-client 仓库中googleapis/dataproc的完整源码系统讲解如何通过 Node.js 官方客户端调用 Cloud Dataproc API从安装、版本选型、OAuth 认证到集群创建/查询、作业提交Spark/Hadoop/Hive 等、批处理Batch与会话Session等核心场景并深入剖析源码中的资源层级与关键数据结构帮助你写出可直接落地的 Dataproc 运维与调度代码。一、模块定位管理 GCP 上的 Hadoop 集群与作业googleapis/dataproc是 Google 官方 Node.js 客户端google-api-nodejs-client中面向 Cloud Dataproc 服务的 API 封装模块。其核心能力在 README 中一句话概括Manages Hadoop-based clusters and jobs on Google Cloud Platform即创建、查询、删除、扩缩容以 Hadoop 生态Spark、Hive、Pig、Flink、Trino 等为基础的集群向集群提交各类作业并跟踪作业状态管理批处理任务Batch、交互式会话Session、自动扩缩容策略Autoscaling Policy与工作流模板Workflow Template。该模块由 Dataproc 服务的 discovery 文档自动生成全部请求通过 REST 端点https://dataproc.googleapis.com/发出见 v1.ts 中大量const rootUrl options.rootUrl || https://dataproc.googleapis.com/;的实现支持 Promise、回调与流式Stream三种调用方式。二、支持状态与版本选型重要前提README 在 Support status 一节明确说明了一个关键选型信息Google provides multiple libraries for this service. This library is inmaintenance mode……If youre building a new application, or modernizing a legacy application, please usegoogle-cloud/dataprocinstead.也就是说维护模式googleapis/dataproc会继续发布并为存量应用提供服务但新功能迭代主要投入在google-cloud/dataproc上新项目建议新建应用或改造存量应用时优先选用google-cloud/dataproc更快、更易用、维护更活跃存量应用已有代码基于本模块的可以继续使用。从源码看本模块当前仍提供两个 API 版本见 index.ts 的VERSIONS版本说明v1稳定版本覆盖完整资源层级源码位于 v1.tsv1beta2Beta 版本源码位于 v1beta2.ts日常开发中绝大多数场景都应使用v1。三、安装与工程环境要求README 给出的安装命令$ npm install googleapis/dataproc也可以将整个客户端一起安装README 示例代码中即采用require(googleapis)方式$ npm install googleapis从 package.json 可以确认模块的工程约束当前版本25.1.0包名googleapis/dataproc许可证Apache-2.0Node.js 版本要求22.0.0字段engines: { node: 22.0.0 }运行时唯一核心依赖是googleapis-common ^9.0.0真正的请求发送、认证、参数序列化均由该公共库承担包入口为build/index.js类型声明为build/index.d.ts即发布物是编译后的 JavaScript 与 TypeScript 声明文件天然支持 TS 项目。四、快速上手最小可用示例在写任何业务代码之前先看 v1.ts 顶部给出的标准用法const {google} require(googleapis); const dataproc google.dataproc(v1);4.1 认证与作用域Dataproc API 要求 OAuth 2.0 认证。源码示例统一使用GoogleAuth应用默认凭据并在google.options({auth: authClient})之后对所有 Dataproc 请求全局生效const {google} require(googleapis); const dataproc google.dataproc(v1); async function main() { const auth new google.auth.GoogleAuth({ scopes: [ https://www.googleapis.com/auth/cloud-platform, https://www.googleapis.com/auth/dataproc, ], }); const authClient await auth.getClient(); google.options({auth: authClient}); // 之后所有 dataproc.* 调用自动携带认证 } main().catch(e { console.error(e); throw e; });作用域Scope说明依据 v1.ts 中各方法示例归纳写操作create、delete、submit、patch等使用cloud-platform或dataproc只读操作如clusters.get、clusters.list除上述两者外还可使用https://www.googleapis.com/auth/dataproc.read-only。在本地运行前需先获取应用默认凭据源码示例中的标准前置步骤$ gcloud auth application-default login并在 Google Cloud Console 中启用 Dataproc APIhttps://console.developers.google.com/apis/api/dataproc.googleapis.com。4.2 模块入口与版本分发机制src/apis/dataproc/index.ts 展示了该子包的导出结构export const VERSIONS { v1: dataproc_v1.Dataproc, v1beta2: dataproc_v1beta2.Dataproc, }; export function dataproc(version: v1): dataproc_v1.Dataproc; export function dataproc(options: dataproc_v1.Options): dataproc_v1.Dataproc; // ... 重载省略 export function dataprocT(this: GoogleConfigurable, versionOrOptions) { return getAPIT(dataproc, versionOrOptions, VERSIONS, this); }从中可以读出三点实现事实dataproc(version)与dataproc(options)两种调用形式最终都走getAPI分发到对应版本的Dataproc类传入对象时通过Options.version字段v1或v1beta2选择版本顶层google.dataproc(v1)之所以可用是因为 googleapis.ts 汇总了全部子 API 并挂载到google命名空间上。五、API 资源层级全景从源码梳理调用路径在 v1.ts 中Dataproc类第 113 行起只直接挂载一个顶级资源Dataproc └── projects ├── locations │ ├── autoscalingPolicies 自动扩缩容策略 │ ├── batches 批处理含 sparkApplications │ ├── operations 长时操作 │ ├── sessions 交互式会话含 sparkApplications │ ├── sessionTemplates 会话模板 │ └── workflowTemplates 工作流模板 └── regions ├── autoscalingPolicies ├── clusters 集群含 nodeGroups ├── jobs 作业 ├── operations └── workflowTemplates对应源码中的类定义export class Resource$Projects等见 v1.ts 附近证实了这一结构。换句话说所有 Dataproc 操作都以dataproc.projects.xxx.yyy.method()的形式调用典型方法命名如下资源路径典型方法HTTP 端点源码确认projects.regions.clusterscreate/get/list/delete/patch/diagnosePOST /v1/projects/{projectId}/regions/{region}/clusters等projects.regions.jobssubmit/get/list/cancel/deletePOST /v1/projects/{projectId}/regions/{region}/jobs:submit等projects.locations.batchescreate/get/list/analyze/delete/v1/projects/{projectId}/locations/{location}/batches等projects.locations.sessionscreate/get/list/terminate等/v1/projects/{projectId}/locations/{location}/sessions等projects.locations.autoscalingPoliciescreate/get/list/update/delete/v1/projects/{projectId}/locations/{location}/autoscalingPolicies等以jobs.submit的实现为例v1.ts它要求requiredParams: [projectId, region]请求体requestBody为Schema$Job最终POST到rootUrl /v1/projects/{projectId}/regions/{region}/jobs:submit。所有方法均通过createAPIRequest统一分发支持回调callback与 Promise 双模式。六、集群管理Cluster 与 ClusterConfig 详解集群是 Dataproc 的核心资源。源码中Schema$Clusterv1.ts的字段包括字段类型说明依据源码注释clusterNamestring必填。项目内唯一以小写字母开头最多 51 个小写字母/数字/连字符不能以连字符结尾已删除集群的名称可复用projectIdstring必填。集群所属的 GCP 项目 IDconfigSchema$ClusterConfig可选。Compute Engine 实例集群配置与virtualClusterConfig二选一virtualClusterConfigSchema$VirtualClusterConfig可选。不直接控制底层计算资源的虚拟集群配置如 GKE 上的 Dataproclabelsmap可选。最多 32 个标签键/值均须符合 RFC 1035clusterUuidstring只读。服务端生成status/statusHistorySchema$ClusterStatus[]只读。当前及历史状态CREATING、RUNNING、ERROR、DELETING 等metricsSchema$ClusterMetrics只读Beta。HDFS/YARN 守护进程指标6.1 ClusterConfig 的核心配置项Schema$ClusterConfigv1.ts是创建集群时最常打交道的结构关键字段masterConfig/workerConfig/secondaryWorkerConfig三类实例组的 Compute Engine 配置详见下文 InstanceGroupConfiggceClusterConfig集群所有实例共享的网络、子网、区域、服务账号等设置softwareConfig镜像版本、可选组件与集群属性autoscalingConfig关联的自动扩缩容策略未设置则不自动扩缩容configBucket/tempBucket/diagnosticBucket暂存桶/临时桶/诊断桶注意源码注释强调传桶名而非gs://...URI不指定时服务会按部署区域自动创建并管理项目级、位置级的默认桶临时桶默认 TTL 90 天initializationActions节点初始化动作脚本可用dataproc-role元数据区分 Master/Worker 执行lifecycleConfig集群空闲自动删除等生命周期设置encryptionConfigCMEK 加密securityConfig/metastoreConfig/endpointConfig/gkeClusterConfig安全、Metastore、端点、GKEBeta等专项配置。6.2 InstanceGroupConfig实例组配置Schema$InstanceGroupConfigv1.ts决定了每个实例组的机器规格与规模字段说明numInstances实例数。HA 集群master_config必须为 3标准集群 master 必须为 1machineTypeUri机器类型支持全 URL、部分 URI 或短名如n1-standard-2Auto Zone 模式下必须使用短名imageUri自定义镜像或镜像族 URI不指定则由SoftwareConfig.imageVersion或系统默认推断diskConfig启动盘/本地 SSD 配置acceleratorsGPU 加速器配置见Schema$AcceleratorConfigpreemptibilitymaster/worker 默认NON_PREEMPTIBLEsecondary worker 默认PREEMPTIBLEminNumInstances主工作节点最小创建数允许部分成功如 5 中成功 4 则 RUNNING成功 2 则 ERRORinstanceFlexibilityPolicy混合机型与供应模型含provisioningModelMix策略instanceNames/instanceReferences/isPreemptible/managedGroupConfig只读字段6.3 SoftwareConfig软件栈配置Schema$SoftwareConfigv1.ts三个字段都很常用imageVersion镜像版本如1.2含次版本如1.2.29或preview不指定时默认最新 Debian 版本optionalComponents需要额外激活的组件如 Jupyter、Zeppelin、Docker、Hive WebHCat 等properties以prefix:property格式写集群属性支持的 prefix 及映射文件为prefix映射文件capacity-schedulercapacity-scheduler.xmlcorecore-site.xmldistcpdistcp-default.xmlhdfshdfs-site.xmlhivehive-site.xmlmapredmapred-site.xmlpigpig.propertiessparkspark-defaults.confyarnyarn-site.xml例如调大 Spark 执行器内存properties: {spark:spark.executor.memory: 4g}。6.4 创建集群代码示例结合上述结构与 v1.ts 中clusters.create的示例模板v1.ts一个完整的创建调用如下const res await dataproc.projects.regions.clusters.create({ projectId: my-project, region: us-central1, requestId: 6b2a3f8e-..., // 推荐传 UUID服务端可幂等去重 requestBody: { clusterName: my-cluster, config: { configBucket: my-dataproc-staging-bucket, tempBucket: my-dataproc-temp-bucket, gceClusterConfig: { zone: us-central1-a, }, masterConfig: { numInstances: 1, machineTypeUri: n1-standard-2, }, workerConfig: { numInstances: 2, machineTypeUri: n1-standard-2, }, softwareConfig: { imageVersion: 2.2, properties: {spark:spark.executor.memory: 4g}, }, autoscalingConfig: { policyUri: projects/my-project/locations/us-central1/autoscalingPolicies/my-policy, }, }, }, }); console.log(res.data); // Schema$Operation注意clusters.create返回的是Schema$Operation长时操作done: false表示仍在执行真正的集群信息需通过clusters.get或轮询operations资源获取。同样的模式适用于delete、diagnose、patch等所有返回 Operation 的方法源码中create、delete、diagnose的返回类型均为Schema$Operation。七、作业提交Job 结构体与常见作业类型7.1 Job 顶层结构Schema$Jobv1.ts是作业提交的请求体字段设计体现了 Dataproc 作业模型的多引擎 明确放置思想placement必填Schema$JobPlacement指定提交到哪个集群clusterName作业类型多选一hadoopJob、sparkJob、pysparkJob、sparkSqlJob、sparkRJob、hiveJob、pigJob、prestoJob、trinoJob、flinkJobreferenceSchema$JobReference可自定义jobId不指定时服务端自动生成labels最多 32 个标签schedulingSchema$JobScheduling如最大失败重试次数maxFailuresPerHourdriverSchedulingConfigdriver 资源调度如内存/虚拟核心数只读字段done、statusSchema$JobStatus含state与stateStartTime、statusHistory、jobUuid、driverOutputResourceUridriver stdout 位置、driverControlFilesUri、yarnApplications等。7.2 以 SparkJob 为例作业配置要点Schema$SparkJobv1.ts字段mainClass与mainJarFileUri二选一指定入口mainClass 依赖的 jar 必须已在 CLASSPATH 或jarFileUris中args传给 driver 的参数源码注释特别提醒不要把--conf之类可写成属性的参数放在 args 里否则可能与properties冲突导致错误提交jarFileUris/fileUris/archiveUrisHCFS URI 列表支持gs://、hdfs://、file://archive 支持.jar、.tar、.tar.gz、.tgz、.zipproperties覆盖/etc/spark/conf/spark-defaults.conf中的配置loggingConfigdriver 日志分级配置。Schema$HadoopJobv1.ts结构与此类似mainClass/mainJarFileUri、args、jarFileUris、fileUris、archiveUris、properties注意其args中不应包含-libjars、-Dfoobar这类可用属性表达的参数。7.3 提交作业完整示例结合jobs.submit的源码实现与Schema$Jobconst res await dataproc.projects.regions.jobs.submit({ projectId: my-project, region: us-central1, requestBody: { placement: {clusterName: my-cluster}, reference: {jobId: my-spark-job-001}, labels: {env: staging}, sparkJob: { mainClass: org.apache.spark.examples.SparkPi, jarFileUris: [ gs://my-bucket/spark-examples.jar, ], args: [1000], properties: {spark:spark.executor.memory: 2g}, }, }, }); console.log(res.data); // Schema$Jobjobs.submit的 HTTP 端点为POST /v1/projects/{projectId}/regions/{region}/jobs:submit必填路径参数为projectId与regionv1.ts。提交后可通过jobs.get查询status.state用jobs.cancel发起取消取消后jobUuid保持reference.jobId可复用用jobs.list按过滤条件分页列举。7.4 作业列表过滤语法clusters.list/jobs.list都支持filter参数源码注释中给出了完整语法field value AND field value ...field可取status.state、clusterName、labels.[KEY]value可为*通配status.state取值ACTIVE、INACTIVE、CREATING、RUNNING、ERROR、DELETING、UPDATING、STOPPING、STOPPEDACTIVE 包含 CREATING/UPDATING/RUNNINGINACTIVE 包含 DELETING/ERROR/STOPPING/STOPPED仅支持逻辑 AND空格分隔等价于隐式 AND。示例filter: status.state ACTIVE AND clusterName mycluster AND labels.env staging。list还支持pageSize默认 200最大 1000与pageToken分页响应返回nextPageToken供翻页。八、无服务器工作负载Batches 与 Sessions除传统先建集群再提交作业的模式外v1 API 还通过projects.locations.batches与projects.locations.sessions提供无服务器/批处理形态的工作负载源码见 v1.ts 与 v1.tsBatches批处理为 Spark 批处理工作负载而设计Schema$SparkBatchv1.ts与SparkJob结构相近mainClass/mainJarFileUri、args、jarFileUris、fileUris、archiveUris但无需用户自建集群由 Dataproc 按需分配计算资源Sessions交互式会话支持 Spark Connect 等交互执行场景Schema$SparkConnectConfig等适合持续运行的 Notebook/交互式分析二者均位于projects.locations路径下使用locationDataproc 区域而非region定位资源例如批次资源全名格式projects/PROJECT_ID/locations/DATAPROC_REGION/batches/BATCH_IDbatches.analyze可对已有批次做推荐与洞察分析返回Schema$Operation。九、周边配套能力v1 版本还包含若干配套资源均可通过 Node.js 客户端直接调用AutoscalingPolicies自动扩缩容策略projects.locations.autoscalingPolicies/projects.regions.autoscalingPolicies下的create/get/list/update/delete策略中通过InstanceGroupAutoscalingPolicyConfigv1.ts设置主/辅工作节点组的minInstances、maxInstances与weight如主组权重 2、辅组权重 1则约按 2:1 配比扩缩容WorkflowTemplates工作流模板将多步作业编排为模板统一提交Operations长时操作用于轮询集群创建/删除等异步操作的完成状态IAM 策略集群资源支持getIamPolicy/setIamPolicy如projects/…/regions/…/clusters/…:getIamPolicy集群诊断clusters.diagnose可收集集群诊断信息并导出 tarball 到 GCS可指定tarballGcsDir、jobs、yarnApplicationIds等。十、源码结构速查如果你需要深入阅读或二次开发相关文件路径如下文件内容src/apis/dataproc/README.md模块官方说明本文主题文档src/apis/dataproc/index.ts子包入口、版本分发与类型导出src/apis/dataproc/v1.tsv1 版本全部资源类与 Schema约 2.8 万行自动生成src/apis/dataproc/v1beta2.tsv1beta2 版本实现src/apis/dataproc/package.json包元数据与工程约束src/apis/dataproc/CHANGELOG.md版本变更记录所有.ts文件均标注THIS FILE IS AUTO-GENERATED由 Dataproc discovery 文档生成任何针对字段语义的疑问都可以回溯到 discovery JSON如 dataproc-v1.json 与 dataproc-v1beta2.json核对。十一、小结与注意事项版本选型新项目建议使用google-cloud/dataproc存量项目可继续使用googleapis/dataproc两者 API 形态不同不要混用运行环境Node.js 版本须不低于 22.0.0认证默认使用应用默认凭据 cloud-platform/dataproc作用域生产环境建议为服务账号单独授权最小权限异步语义集群创建/删除等操作返回Schema$Operation必须轮询或监听完成状态不要直接假定资源立即可用参数边界configBucket/tempBucket传桶名而非gs://URImachineTypeUri在 Auto Zone 模式下须用短名作业args不要混入可用properties表达的配置项文档归属本模块 README 同时声明其遵循 Apache 2.0 许可证使用与分发时请遵守 LICENSE 相关规定。赞分享后端【免费下载链接】google-api-nodejs-clientGoogles officially supported Node.js client library for accessing Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT (Service Tokens) is included.项目地址https://gitcode.com/gh_mirrors/go/google-api-nodejs-client点击查看免费下载相关推荐BigBlueButton TURN 服务器部署与配置完全指南基于 coturn 打通受限网络下的 WebRTC 音视频连接BigBlueButton TURN 服务器部署与配置完全指南基于 coturn 打通受限网络下的 WebRTC 音视频连接 本文以 BigBlueButto后端使用Google Cloud Dataproc创建Hadoop集群并运行作业教程使用Google Cloud Dataproc创建Hadoop集群并运行作业教程 概述 本教程将指导您如何使用Google Cloud Platform的Dat机器学习教程示例工程深度学习数据工程google-api-nodejs-client 之 datapipelines用 Node.js 创建与管理 Google Data Pipelines 定期数据作业google api nodejs client 之 datapipelines用 Node.js 创建与管理 Google Data Pipelines 定后端上一篇BBDown让B站视频下载变得如此简单 ✨下一篇2步掌控浏览器自动化零基础也能玩转的GeckoDriver实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考