小编Tho*_*mas的帖子

复杂Dataflow作业的体系结构

我们正在从流媒体源中构建相当复杂的Dataflow作业.特别是,我们有两个模型,它们共享一组指标,并且大致使用相同的数据源计算得出.作业对稍大的数据集执行连接.

你有关于如何设计这类工作的指导方针吗?任何指标,行为或我们在做出决定时必须考虑的任何事项?

以下是我们想到的几个选项,以及我们如何比较它们:

选择1:一份大工作

在一个大型工作中实施一切.考虑常见指标,然后计算特定于模型的指标.

优点

  • 写得更简单.
  • 工作之间没有依赖关系
  • 减少计算资源?

缺点

  • 如果一个零件断裂​​,则无法计算两个模型.

大工作

选项2:使用Pub/Sub管道的多个作业

将公共度量计算提取到专用作业,从而产生3个作业,使用Pub/Sub连接在一起.

优点

  • 如果其中一个模型工作失败,则更具弹性.
  • 可能更容易执行持续更新.

缺点

  • 需要启动所有作业才能拥有完整的管道:依赖关系管理.

3个工作

google-cloud-dataflow

10
推荐指数
1
解决办法
408
查看次数

在DirectPipelineRunner上使用自定义DataFlow无界源

我正在编写一个从Kafka 0.8读取的自定义DataFlow无界数据源.我想使用DirectPipelineRunner在本地运行它.但是,我得到以下stackstrace:

Exception in thread "main" java.lang.IllegalStateException: no evaluator registered for Read(KafkaDataflowSource)
        at com.google.cloud.dataflow.sdk.runners.DirectPipelineRunner$Evaluator.visitTransform(DirectPipelineRunner.java:700)
        at com.google.cloud.dataflow.sdk.runners.TransformTreeNode.visit(TransformTreeNode.java:219)
        at com.google.cloud.dataflow.sdk.runners.TransformTreeNode.visit(TransformTreeNode.java:215)
        at com.google.cloud.dataflow.sdk.runners.TransformHierarchy.visit(TransformHierarchy.java:102)
        at com.google.cloud.dataflow.sdk.Pipeline.traverseTopologically(Pipeline.java:252)
        at com.google.cloud.dataflow.sdk.runners.DirectPipelineRunner$Evaluator.run(DirectPipelineRunner.java:662)
        at com.google.cloud.dataflow.sdk.runners.DirectPipelineRunner.run(DirectPipelineRunner.java:374)
        at com.google.cloud.dataflow.sdk.runners.DirectPipelineRunner.run(DirectPipelineRunner.java:87)
        at com.google.cloud.dataflow.sdk.Pipeline.run(Pipeline.java:174)
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为我没有在任何时候为我的自定义源注册评估者.

阅读https://github.com/GoogleCloudPlatform/DataflowJavaSDK,似乎只有有限来源的评估者才能注册.为自定义无界源定义和注册求值程序的推荐方法是什么?

google-cloud-dataflow

7
推荐指数
1
解决办法
668
查看次数

从Google Dataflow访问在GKE中运行的HTTP服务

我在Google Container Engine集群上运行了一个HTTP服务(在kubernetes服务之后).

我的目标是使用固定名称从同一GCP项目上运行的Dataflow作业访问该服务(与使用DNS从GKE内部访问服务的方式相同).任何的想法?


  • 我在stackoverflow上阅读的大多数解决方案都依赖于在试图访问服务的机器上安装kube-proxy.据我所知,无法在Dataflow创建的每个工作实例上可靠地设置该服务.
  • 一种选择是创建外部平衡器并在公共DNS中创建A记录.虽然它有效,但我宁愿在我的公共DNS记录中没有指向该服务的条目.

google-kubernetes-engine google-cloud-dataflow

6
推荐指数
1
解决办法
1208
查看次数

Google Cloud Platform DataFlow工作人员的IP地址

是否有可能知道GCP上的DataFlow工作人员使用的外部IP范围是什么?目标是在外部服务上设置某种IP过滤,以便只有我们在GCP上运行的DataFlow作业才能访问该服务.

google-cloud-dataflow

5
推荐指数
1
解决办法
1352
查看次数