Dataproc Architecture

Published
Length
3 min read

Luis Felipe Dias

All posts

You build a strong dataproc architecture by splitting compute nodes from cloud storage buckets. You then set up strict roles for both user jobs and cluster machines. Most teams start by spinning up shared clusters for their data engineers. They often attach one broad service account to every node in the pool. When roles are too broad, any user job can read private buckets. A bad script can also wipe out shared tables across the project. How dataproc architecture works in practice A standard c

Zero Trust Architecture: the complete guide

Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.

Free white paper. No spam. Unsubscribe anytime.

You build a strong dataproc architecture by splitting compute nodes from cloud storage buckets. You then set up strict roles for both user jobs and cluster machines. Most teams start by spinning up shared clusters for their data engineers. They often attach one broad service account to every node in the pool. When roles are too broad, any user job can read private buckets. A bad script can also wipe out shared tables across the project.

How dataproc architecture works in practice

A standard cluster uses two main node types to run big data jobs. The master node runs the cluster manager and tracks all active work. Worker nodes run the actual code and hold temporary shuffle data on disk. You can also add secondary workers that scale up for big batch runs.

This design keeps long-term data out of the local cluster disks. Instead, nodes read and write files straight to cloud object storage. Because state lives in storage, you can delete idle clusters to save money. Many teams use job-scoped clusters that spin up for one task and vanish.

Two distinct permission sets control how this setup runs in the cloud. First, user roles decide who can start clusters or submit new jobs. Second, the node service account gives the virtual machines rights to read storage. When a job runs, it inherits the permissions of that underlying machine role.

What native cluster roles solve and what they miss

Cloud roles do a great job of blocking outsiders from your project. They stop random users from creating huge clusters or deleting active worker pools. Network rules also help by keeping cluster nodes off the public internet. You can lock down who submits a job through the cloud console.

Yet this native setup leaves a major gap during active job execution. Cloud roles check who logs in, not what individual queries do in flight. Once a user enters a shared cluster, they share its broad machine role. Every Spark script or Hive query runs with those same storage permissions.

Zero Trust Architecture: architecture patterns and best practices

Continue reading? Get the full guide.

Free. No spam. Unsubscribe anytime.

Native roles also fail to inspect live commands on the master node. Engineers often open shell sessions to fix broken jobs or check local logs. Standard cloud rules cannot block a single bad command inside that shell. They also cannot mask emails, phone numbers, or card numbers in query output.

How to tighten job and node permissions

You can reduce risk by dropping long-lived shared clusters for daily work. Give each team a small, isolated cluster with its own service account. Scope each service account so it only reads the buckets that team needs. This stops a test job from touching raw production files by mistake.

Next, turn off direct shell logins to the master and worker nodes. Ask engineers to submit work through automated job pipelines instead of manual shells. Send all cluster logs to a central bucket so teams can debug safely. Still, teams will need live access during an outage, which requires deeper controls.

Govern statements and responses across databases and APIs

Good config and scoped roles are needed setup. They do not check single queries in flight or mask sensitive fields in returned rows. Across Postgres, MySQL, SQL Server, MongoDB, ClickHouse, Kubernetes APIs, SSH, and internal HTTP endpoints, hoop.dev sits inline in the protocol beside each supported service as an open-source proxy, a sidecar for your database or API. For every query or command an AI agent or engineer runs against production, hoop.dev decides to pass, mask, block, or hold it for human approval.

First, hoop.dev guardrails block banned queries before they run or hold risky ones for review, and hoop.dev data masking rewrites matched sensitive values in responses in memory. Furthermore, hoop.dev holds SOC 2 Type II and is open source on GitHub.

Frequently asked questions

Why should I separate storage from compute in my clusters?

Keeping data in cloud storage lets you delete idle clusters right away. You stop paying for compute nodes while keeping all your files safe.

What is the difference between user roles and node service accounts?

User roles control who can create clusters and submit jobs to the queue. Node service accounts control which storage buckets the cluster machines can read.

How do I stop jobs from reading sensitive data in shared buckets?

Give each cluster a unique service account scoped to specific storage buckets. For finer control, add query masking to rewrite card numbers and national IDs.

Save the open-source gateway.

hoop is MIT-licensed infrastructure for controlling how AI agents reach production data. Star hoophq/hoop so you can inspect it, deploy it, or share it when your team starts governing agent access.