我们可以在ApachePinot集群之外创建段。这很好。但我不明白它是如何将片段从深度存储上传到离线服务器的。例如,
我给Hdfs写段。然后我称之为分段tar推送作业。如果我没有理解错的话,segmenttarpushjob从深度存储(s3(下载创建的分段,然后通过rest api将分段上传到控制器,控制器将分段发送到离线服务器。
在将段发送到控制器时,此过程不会造成瓶颈吗?如果离线服务器直接从深度存储下载段,会发生什么?
有两种方法可以将数据推送到皮诺控制器
-
基于URI:在这种模式下,调用者只提供段URI和段元数据。如果没有提供段元数据,则控制器将获取段并提取元数据。控制器需要用于验证目的的元数据。在这种模式下,服务器将直接从深度存储中提取段
-
基于有效负载:在这种模式下,调用方发送段tarball作为有效负载,控制器将该段tarball存储在其dataDir中(也可以是NFS或深度存储(。控制器更新zookeeper中的分段元数据以指示分段的位置。服务器使用元数据中的位置来获取段
下面是一段视频,解释Apache Pinot离线表中的段分配细节:https://youtu.be/HycNRCzkrjg它演示了将段上传到深度存储时发生的步骤:控制器通知->分段分配计算->服务器下载段。