首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法创建Dataproc群集

无法创建Dataproc群集
EN

Stack Overflow用户
提问于 2020-09-15 17:57:06
回答 1查看 1.6K关注 0票数 3

我尝试通过气流和Google创建Dataproc集群,而集群的创建始终失败。以下是我用来创建集群的气流代码-

代码语言:javascript
复制
# STEP 1: Libraries needed
from datetime import timedelta, datetime
from airflow import models
from airflow.operators.bash_operator import BashOperator
from airflow.contrib.operators import dataproc_operator
from airflow.utils import trigger_rule
from poc.utils.transform import main
from airflow.contrib.hooks.gcp_dataproc_hook import DataProcHook
from airflow.operators.python_operator import BranchPythonOperator

import os

YESTERDAY = datetime.combine(
    datetime.today() - timedelta(1),
    datetime.min.time())
project_name = os.environ['GCP_PROJECT']

# Can pull in spark code from a gcs bucket
# SPARK_CODE = ('gs://us-central1-cl-composer-tes-fa29d311-bucket/spark_files/transformation.py')
dataproc_job_name = 'spark_job_dataproc'

default_dag_args = {
'depends_on_past': False,
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'start_date': YESTERDAY,
'retry_delay': timedelta(minutes=5),
'project_id': project_name,
'owner': 'DataProc',
}

with models.DAG(
'dataproc-poc',
description='Dag to run a simple dataproc job',
schedule_interval=timedelta(days=1),
default_args=default_dag_args) as dag:

    CLUSTER_NAME = 'dataproc-cluster'
    def ensure_cluster_exists(ds, **kwargs):
        cluster = DataProcHook().get_conn().projects().regions().clusters().get(
            projectId=project_name,
            region='us-east1',
            clusterName=CLUSTER_NAME
        ).execute(num_retries=5)
        print(cluster)
        if cluster is None or len(cluster) == 0 or 'clusterName' not in cluster:
            return 'create_dataproc'
        else:
            return 'run_spark'

    # start = BranchPythonOperator(
    #     task_id='start',
    #     provide_context=True,
    #     python_callable=ensure_cluster_exists,
    # )

    print_date = BashOperator(
    task_id='print_date',
    bash_command='date'
    )

    create_dataproc = dataproc_operator.DataprocClusterCreateOperator(task_id='create_dataproc',
    cluster_name=CLUSTER_NAME,
    num_workers=2,
    use_if_exists='true',
    zone='us-east1-b',
    master_machine_type='n1-standard-1',
    worker_machine_type='n1-standard-1')
    
    # Run the PySpark job
    run_spark = dataproc_operator.DataProcPySparkOperator(
    task_id='run_spark',
    main=main,
    cluster_name=CLUSTER_NAME,
    job_name=dataproc_job_name
    )
    # dataproc_operator
    # Delete Cloud Dataproc cluster.
    # delete_dataproc = dataproc_operator.DataprocClusterDeleteOperator(
    # task_id='delete_dataproc',
    # cluster_name='dataproc-cluster-demo-{{ ds_nodash }}',
    # trigger_rule=trigger_rule.TriggerRule.ALL_DONE)
    # STEP 6: Set DAGs dependencies
    # Each task should run after have finished the task before.
    print_date >> create_dataproc >> run_spark
    # print_date >> start >> create_dataproc >> run_spark
    # start >> run_spark

我检查了集群日志,发现了以下错误-

无法存储主密钥的2

  • Initialization
  1. 1
  2. 无法存储主密钥
  3. 失败。退出125以防止重新启动
  4. 无法启动主服务器:超时等待2个数据节点和节点。操作超时:在两个最低要求的数据节点中,只有0在运行。操作超时:在运行中的两个最低要求节点管理器中只有0。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-06 23:40:27

Cannot start master: Timed out waiting for 2 datanodes and nodemanagers. Operation timed out: Only 0 out of 2 minimum required datanodes running. Operation timed out: Only 0 out of 2 minimum required node managers running.

此错误表示工作节点无法与主节点通信。当工作节点无法在给定的时间范围内向主节点报告时,群集创建失败。

请检查是否设置了正确的防火墙规则允许VM之间的通信。

有关网络信任的最佳实践,请参考以下内容:https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/network#overview

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63907419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档