spark如何写入HBASE

How spark writes to HBASE

我有一个 Spark 作业,它读取一些时间序列数据并使用 HBASE 客户端 API 将其推送到 HBASE。我正在执行这个 Spark 作业 在 10 节点集群上。首先说,当 spark 启动时,它选择 machine1、machine2、machine3 作为它的执行者。现在,当作业向 HBASE 插入一行时。以下是我对其功能的理解。

基于行键,将选择一个特定区域(来自 META),该行将被推送到该 RegionServer 的 memstore 和 WAL,一旦 memestore 已满,它将被刷新到 disk.Now如果假设一个特定的行正在由 machine2 上的执行程序处理,并且处理要进行放置的区域的 regionserver 在 machine6 上。数据是否会通过网络从machine2传输到machine6,然后数据将存储在machine6的memstore中。或者 spark 会在写入期间明智地在该机器上启动一个执行程序(如果动态分配已打开)并推送给它?

Spark 不知道您的作业中发生了什么,它不会在发生写入的同一节点上启动执行程序。数据将通过网络传输。