From 4ea98c48d7192f0a807c05c5237337f7c65d0b1f Mon Sep 17 00:00:00 2001 From: Apekshit Sharma Date: Sun, 17 May 2020 14:08:45 -0700 Subject: [PATCH] Add deployment scripts and documentation (#10) Signed-off-by: Apekshit Sharma --- README.md | 49 +++++++++++----- docs/deployment.md | 35 +++++++++++ docs/images/hedera_etl_ingestion.png | Bin 56665 -> 57096 bytes scripts/common.sh | 34 +++++++++++ scripts/create-tables.sh | 31 ++++++++++ scripts/deploy-etl-pipeline.sh | 41 +++++++++++++ scripts/setup-gcp-resources.sh | 84 +++++++++++++++++++++++++++ 7 files changed, 261 insertions(+), 13 deletions(-) create mode 100644 docs/deployment.md create mode 100644 scripts/common.sh create mode 100755 scripts/create-tables.sh create mode 100755 scripts/deploy-etl-pipeline.sh create mode 100755 scripts/setup-gcp-resources.sh diff --git a/README.md b/README.md index 544b0ab..9cdb340 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Hedera ETL populates BigQuery dataset with transactions and records generated by the pipeline. - Deduplication: The above ingestion pipeline gives at-least-once guarantee for persisting transaction into BigQuery. -Duplicates, if inserted, are removed using a cron job. +Duplicates, if inserted, are removed using a deduplication task. ## Setup @@ -32,7 +32,8 @@ info about columns. #### Creating tables -Use `bq` CLI to create the tables. +`bq` CLI is needed to create the tables. [/create-tables.sh](scripts/create-tables.sh) can be used to create all the +tables together. Alternatively, tables can be created individually using the commands below. ###### Transactions table @@ -49,7 +50,7 @@ bq mk \ ###### Errors table -If an error is encountered when inserting a transaction into BigQuery, then the insert it retried. However, errors +If an error is encountered when inserting a transaction into BigQuery, then the insert is retried. However, errors for which retry would not help (for example, table row violating the schema), are not tried again and instead logged into errors table. @@ -61,14 +62,28 @@ bq mk \ hedera-etl-dataflow/src/main/resources/errors_schema.json ``` -### Apache Beam Pipeline +##### Deduplication state table +Deduplication task's state is stored in BigQuery table for persistence. That's because the task already relies on +BigQuery to be available, and adding dependency on a persistent volume or another database would be not as good. + +```bash +bq mk \ + --table \ + --description "BigQuery deduplication task state" \ + --description "Hedera Dedupe " \ + project_id:dataset.dedupe_state \ + hedera-dedupe-bigquery/state-schema.json +``` + + +### ETL to BigQuery ###### Requirements 1. BigQuery tables for transactions and errors should exist 2. PubSub topic should exist -3. If using GCP Dataflow, a user or service account having following roles - BigQuery Data Editor, Dataflow Worker, and - Pub/Sub Subscriber + +For requirements to deploy on GCP Dataflow, refer [deployment](docs/deployment.md). ###### Common parameters @@ -98,7 +113,7 @@ mvn compile exec:java -PdirectRunner -Dexec.args=" \ ```bash BUCKET_NAME=... # Set your bucket name -PIPELINE_FOLDER=gs://${BUCKET_NAME}/dataflow/pipelines/pubsub-to-bigquery +PIPELINE_FOLDER=gs://${BUCKET_NAME}/pipelines/etl-pipeline ``` 2. Build and upload template to GCS bucket @@ -118,17 +133,25 @@ mvn compile exec:java \ 3. Start Dataflow job using the template ```bash -gcloud dataflow jobs run pubsub-to-bigquery-`date +"%Y%m%d-%H%M%S%z"` \ +gcloud dataflow jobs run etl-pipeline-`date +"%Y%m%d-%H%M%S%z"` \ --gcs-location=${PIPELINE_FOLDER}/template \ - --parameters \ - "inputSubscription=${SUBSCRIPTION}, \ - outputTransactionsTable=${TRANSACTIONS_TABLE}, \ - outputErrorsTable=${ERRORS_TABLE}" + --parameters "inputSubscription=${SUBSCRIPTION},outputTransactionsTable=${TRANSACTIONS_TABLE},outputErrorsTable=${ERRORS_TABLE}" ``` +Controller service account can be configured by adding +`--service-account-email=my-service-account-name@.iam.gserviceaccount.com`. See +[Controller service account](https://cloud.google.com/dataflow/docs/concepts/security-and-permissions#controller_service_account) +for more details. ### Deduplication -Work in progress. +Deduplication task trails the transactions table to ensure that two rows never have same consensusTimestamp. Due to +at-least once guarantee of PubSub and Hedera Mirror Node (publishing to pubsub), it's possible that in rare cases, +single transaction gets inserted more than once. Deduplication task removes these duplicates to ensure exactly-once +guarantee. See class comments on [DedupeRunner](hedera-dedupe-bigquery/src/main/java/com/hedera/dedupe/DedupeRunner.java) +for more details. + +## More documentation +[Deployment](docs/deployment.md) ## Code of Conduct This project is governed by the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are diff --git a/docs/deployment.md b/docs/deployment.md new file mode 100644 index 0000000..de85a9a --- /dev/null +++ b/docs/deployment.md @@ -0,0 +1,35 @@ +# Deployment + +## Requirements: +1. BigQuery tables : transactions, errors, dedupe_state +1. PubSub topic for transactions +1. GCS bucket : Used for dataflow templates, staging and as temp location +1. ETL Pipeline from PubSub to BigQuery: + 1. PubSub subscription + 1. Service account with following roles: BigQuery Data Editor, Dataflow Worker, Pub/Sub Subscriber, and Storage + Object Admin +1. Deduplication Task + 1. Service account with following roles: BigQuery Data Editor, BigQuery Job User, Monitoring Metric + Writer +1. Mirror Importer + 1. Service account with following roles: PubSub Publisher + +Resource creation can be automated using [setup-gcp-resources.sh](../scripts/setup-gcp-resources.sh). +[Google Cloud SDK](https://cloud.google.com/sdk/docs) is required to run the script. + +## Steps + +1. Deploy ETL pipeline + +Use [deploy-etl-pipeline.sh](../scripts/deploy-etl-pipeline.sh) script to deploy the etl pipeline to GCP Dataflow. + +1. Deploy Deduplication task + +TODO + +1. Deploy Hedera Mirror Node Importer to publish transactions to the pubsub topic. See +Mirror Nodes [installation](https://github.com/hashgraph/hedera-mirror-node/blob/master/docs/installation.md) and +[configuration](https://github.com/hashgraph/hedera-mirror-node/blob/master/docs/configuration.md#importer) for more +details. + + diff --git a/docs/images/hedera_etl_ingestion.png b/docs/images/hedera_etl_ingestion.png index 71c147271eb5ef3f4c1e886904da18728ef0f72d..977aaa88276ff29335b3a8898d51b9a2b676c236 100644 GIT binary patch literal 57096 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%0D&`iX0h^!hN0<@@PHIlfh3t)G4gRzMHpn)8c( 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 rFI+$i^8|fpfqMsjf5bMQjNm~aj`ux-H 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

f+no+u!oVi{w@VliZ1Sid`4JnSOb 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 create-tables.sh +# Optionally, table names can be set using BQ_TRANSACTIONS_TABLE, BQ_ERRORS_TABLE, BQ_DEDUPE_STATE_TABLE + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +. ${SCRIPT_DIR}/common.sh + +bq mk \ + --table \ + --description "Hedera network transactions" \ + --time_partitioning_field consensusTimestampTruncated \ + --time_partitioning_type DAY \ + --clustering_fields transactionType \ + ${BQ_TRANSACTIONS_TABLE} \ + ${SCRIPT_DIR}/../hedera-etl-dataflow/src/main/resources/schema.json + +bq mk \ + --table \ + --description "Hedera ETL Errors" \ + ${BQ_ERRORS_TABLE} \ + ${SCRIPT_DIR}/../hedera-etl-dataflow/src/main/resources/errors_schema.json + +bq mk \ + --table \ + --description "BigQuery deduplication job state" \ + ${BQ_DEDUPE_STATE_TABLE} \ + ${SCRIPT_DIR}/../hedera-dedupe-bigquery/state-schema.json + diff --git a/scripts/deploy-etl-pipeline.sh b/scripts/deploy-etl-pipeline.sh new file mode 100755 index 0000000..a754120 --- /dev/null +++ b/scripts/deploy-etl-pipeline.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +# Deploys ETL-Pipeline to GCP Dataflow +# This script assumes that resources have been allocated using setup-gcp-resources.sh +# Usage: PROJECT_ID=... DEPLOYMENT_NAME= KEYS_DIR=... deploy-etl-pipeline.sh + +if [[ "${KEYS_DIR}" == "" ]]; then + echo "KEYS_DIR is not set" + exit 1 +fi + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +. ${SCRIPT_DIR}/common.sh + +JSON_KEY=${KEYS_DIR}/${SA_ETL_BIGQUERY}.json +if [[ ! -f "${JSON_KEY}" ]]; then + echo "Couldn't find ${JSON_KEY}. Makes sure KEYS_DIR is correctly set up." + exit 1 +fi +export GOOGLE_APPLICATION_CREDENTIALS=${JSON_KEY} + +cd ${SCRIPT_DIR}/../hedera-etl-dataflow + +echo "Building and uploading pipeline templates to GCS" + +PIPELINE_FOLDER=gs://${BUCKET_NAME}/pipelines/etl-bigquery +mvn clean compile exec:java \ + -Dexec.args=" \ + --project=${PROJECT_ID} \ + --stagingLocation=${PIPELINE_FOLDER}/staging \ + --tempLocation=${PIPELINE_FOLDER}/temp \ + --templateLocation=${PIPELINE_FOLDER}/template \ + --runner=DataflowRunner" + +echo "Staring Dataflow job" + +SUBSCRIPTION="projects/${PROJECT_ID}/subscriptions/${PUBSUB_SUBSCRIPTION_ETL_BIGQUERY}" +gcloud dataflow jobs run etl-pipeline-`date +"%Y%m%d-%H%M%S%z"` \ + --gcs-location=${PIPELINE_FOLDER}/template \ + --service-account-email=${SA_ETL_BIGQUERY}@${PROJECT_ID}.iam.gserviceaccount.com \ + --parameters "inputSubscription=${SUBSCRIPTION},outputTransactionsTable=${BQ_TRANSACTIONS_TABLE},outputErrorsTable=${BQ_ERRORS_TABLE}" diff --git a/scripts/setup-gcp-resources.sh b/scripts/setup-gcp-resources.sh new file mode 100755 index 0000000..446b3de --- /dev/null +++ b/scripts/setup-gcp-resources.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash +# Creates GCP resources like Service Accounts, GCS buckets, BigQuery datasets and tables, etc for various components of +# hedera-etl +# For more details, refer to docs/deployment.md. +# +# Usage: PROJECT_ID=... DEPLOYMENT_NAME= setup-gcp-resources.sh +# Optionally, KEYS_DIR can be set to specify the directory where service accounts' keys would be downloaded. Default to +# './${DEPLOYMENT_NAME}-keys' + +set -e + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +. ${SCRIPT_DIR}/common.sh + +#### Functions #### +create_service_account_with_roles() +{ + local sa_name=$1 + local roles=$2 + local description="$3" + + # Create service account + gcloud iam service-accounts create ${sa_name} \ + --project=${PROJECT_ID} \ + --description="${description}" + + # Assign roles to the service account + for role in ${roles}; do + gcloud projects add-iam-policy-binding ${PROJECT_ID} \ + --member serviceAccount:${sa_name}@${PROJECT_ID}.iam.gserviceaccount.com \ + --role ${role} > /dev/null # Project's complete IAM policy is dumped to console otherwise + echo "Assigned role ${role} to ${sa_name}" + done +} + +create_service_account_key() +{ + local sa_name=$1 + local key_filename=${KEYS_DIR}/${sa_name}.json + # Download service account's key + gcloud iam service-accounts keys create ${key_filename} \ + --iam-account=${sa_name}@${PROJECT_ID}.iam.gserviceaccount.com +} + +#### Base resources #### +mkdir -p ${KEYS_DIR} + +# Create BigQuery dataset and tables +bq mk --project_id=${PROJECT_ID} ${NAME} +DATASET_NAME=${BQ_DATASET} ${SCRIPT_DIR}/create-tables.sh + +# Create PubSub topic for transactions +gcloud pubsub topics create ${PUBSUB_TOPIC_NAME} --project=${PROJECT_ID} + +# Create GCS bucket for dataflow pipelines +gsutil mb -p ${PROJECT_ID} gs://${BUCKET_NAME} + +#### Resources for ETL to BigQuery #### +gcloud pubsub subscriptions create ${PUBSUB_SUBSCRIPTION_ETL_BIGQUERY} \ + --project=${PROJECT_ID} \ + --topic=${PUBSUB_TOPIC_NAME} \ + --message-retention-duration=7d \ + --expiration-period=never + +create_service_account_with_roles \ + ${SA_ETL_BIGQUERY} \ + "roles/bigquery.dataEditor roles/dataflow.worker roles/pubsub.subscriber roles/storage.admin" \ + "For pubsub --> bigquery dataflow controller" + +create_service_account_key ${SA_ETL_BIGQUERY} + +#### Resources for Deduplication task #### +create_service_account_with_roles \ + ${SA_DEDUPLICATION} \ + "roles/bigquery.dataEditor roles/bigquery.jobUser roles/monitoring.metricWriter" \ + "For BigQuery deduplication task" + +create_service_account_key ${SA_DEDUPLICATION} + +#### Resources for Hedera Mirror Importer #### +create_service_account_with_roles \ + ${SA_IMPORTER} "roles/pubsub.publisher" "For hedera mirror node importer (publishes to PubSub)" + +create_service_account_key ${SA_IMPORTER}