Google cloud dataflow Bigtable';写请求';不一致

Google cloud dataflow Bigtable';写请求';不一致,google-cloud-dataflow,google-cloud-bigtable,Google Cloud Dataflow,Google Cloud Bigtable,我正在使用dataflow作业将数据从google存储写入BigTable,我正在使用3节点BigTable集群,在我的dataflow作业中有25个工人并行工作 当我检查大表的“写入请求”图表时,我观察到它在1.5k-9k之间波动,根据我的说法,它应该保持一致,因为我一直在传递数据 当我检查日志时,我发现这个语句在重试失败的调用时出现得太频繁了。失败#1,获得:状态{code=UNAVAILABLE,description=table AID的元数据查找时出现临时问题{u KRUXID,cau

我正在使用dataflow作业将数据从google存储写入BigTable,我正在使用3节点BigTable集群,在我的dataflow作业中有25个工人并行工作

当我检查大表的“写入请求”图表时,我观察到它在1.5k-9k之间波动,根据我的说法,它应该保持一致,因为我一直在传递数据

当我检查日志时,我发现这个语句在重试失败的调用时出现得太频繁了。失败#1,获得:状态{code=UNAVAILABLE,description=table AID的元数据查找时出现临时问题{u KRUXID,cause=null}'

我只是想了解为什么我在“写请求”中看到这样的变化,上面的日志记录语句对写请求有任何影响,还是有其他我不知道的原因


谢谢!提前

考虑使用9个数据流工作者,或者在作业期间将Bigtable集群增加到8-9个节点。25个worker将压倒3个Bigtable集群,导致一个糟糕的状态,高延迟导致重试,从而进一步压倒Bigtable。我的经验法则是3个客户端CPU对应1个Bigtable节点


这个问题你已经问了好几次了,我已经回答了。如果我的回答不清楚,我很抱歉。数据流工作者和云Bigtable节点的正确平衡是解决此问题的唯一方法。

考虑使用9个数据流工作者,或者在作业期间将Bigtable集群增加到8-9个节点。25个worker将压倒3个Bigtable集群,导致一个糟糕的状态,高延迟导致重试,从而进一步压倒Bigtable。我的经验法则是3个客户端CPU对应1个Bigtable节点


这个问题你已经问了好几次了,我已经回答了。如果我的回答不清楚,我很抱歉。数据流工作者和云Bigtable节点之间的正确平衡是解决此问题的唯一方法。

根据注释,OP正在写入一个空表

要提高写入空表的性能,需要预拆分该表。如果不预拆分该表,则该表有一个平板电脑,该平板电脑由单个Cloud Bigtable服务器节点托管,因此您的吞吐量仅限于单个节点,而不是在整个集群中并行

通过预拆分表,您告诉Cloud Bigtable创建大量(空)平板电脑,这些平板电脑将分布在不同的服务器节点上

只能在创建时预拆分表;创建表后,Bigtable将接管平板电脑拆分和合并的管理,您将无法影响它

另一件需要注意的事情是,将预拆分表闲置一段时间(例如,超过一天)将导致Bigtable撤消拆分,因为表上没有任何活动。因此,您应该打算在创建后不久,即撤消工作之前,开始使用预拆分表

另一个经验法则是创建平板电脑拆分,使每个平板电脑都有~512MB的数据

有两种方法可以让Bigtable预拆分表:

  • 使用以下任一管理API:

    • 通过自己计算分割键来手动指定分割键。如果您的数据不是均匀分布在整个字典键空间中,则此选项非常有用

    • 请Bigtable在提供的两个键之间创建
      numRegions
      偶数分割:
      startKey
      endKey
      。请注意,Bigtable称之为平板电脑,HBase称之为区域,因此这些术语是等效的

    • 与第一个方法相同,但异步


  • 根据注释,OP正在写入一个空表

    要提高写入空表的性能,需要预拆分该表。如果不预拆分该表,则该表有一个平板电脑,该平板电脑由单个Cloud Bigtable服务器节点托管,因此您的吞吐量仅限于单个节点,而不是在整个集群中并行

    通过预拆分表,您告诉Cloud Bigtable创建大量(空)平板电脑,这些平板电脑将分布在不同的服务器节点上

    只能在创建时预拆分表;创建表后,Bigtable将接管平板电脑拆分和合并的管理,您将无法影响它

    另一件需要注意的事情是,将预拆分表闲置一段时间(例如,超过一天)将导致Bigtable撤消拆分,因为表上没有任何活动。因此,您应该打算在创建后不久,即撤消工作之前,开始使用预拆分表

    另一个经验法则是创建平板电脑拆分,使每个平板电脑都有~512MB的数据

    有两种方法可以让Bigtable预拆分表:

  • 使用以下任一管理API:

    • 通过自己计算分割键来手动指定分割键。如果您的数据不是均匀分布在整个字典键空间中,则此选项非常有用

    • 请Bigtable在提供的两个键之间创建
      numRegions
      偶数分割:
      startKey
      endKey
      。请注意,Bigtable称之为平板电脑,HBase称之为区域,因此这些术语是等效的

    • 与第一个方法相同,但异步


  • 1) 您是否有显示此问题的数据流作业id?2) 除了您的数据流作业外,是否还有其他内容写入此表?@jkff只有我的作业正在写入大表,作业Id为2016-09-13_07_47_13-11809669185152159324请考虑在作业期间使用9个数据流工作者,或将Bigtable集群增加到8-9个节点。25个worker将压倒3个Bigtable集群,导致一个糟糕的状态,即高延迟会导致重试,从而进一步