【发布时间】:2018-07-01 03:24:39
【问题描述】:
我有一个 Spark 作业,它读取一些时间序列数据并使用 HBASE 客户端 API 将其推送到 HBASE。我正在执行这个 Spark 作业 在 10 节点集群上。首先说当 spark 启动时,它选择 machine1、machine2、machine3 作为其执行者。现在当作业向 HBASE 插入一行时。以下是我对它的作用的理解。
根据行键,将选择一个特定区域(来自 META),该行将被推送到该 RegionServer 的 memstore 和 WAL,一旦 memestore 已满,它将被刷新到磁盘。现在假设一个特定的行正在由 machine2 上的执行程序处理,并且处理要进行 put 的区域的 regionserver 在 machine6 上。数据是否会通过网络从 machine2 传输到 machine6,然后数据将存储在 machine6 的 memstore 中。或者spark会在写入期间明智地在该机器上启动一个执行器(如果动态分配已打开)并推送到它?
【问题讨论】:
标签: hadoop apache-spark hbase hdfs