ExternalBlockStore作为存储Block文件的外部管理器,其实际是封装了TachyonBlockManager。这样做可以更好的解耦合,方便以后加入新的第三方的管理器。ExternalBlockStore创建TachyonBlockManager代码如下:
/**
* Stores BlockManager blocks on ExternalBlockStore.
* We capture any potential exception from underlying implementation
* and return with the expected failure value
*/
private[spark] class ExternalBlockStore(blockManager: BlockManager, executorId: String)
extends BlockStore(blockManager: BlockManager) with Logging {
lazy val externalBlockManager: Option[ExternalBlockManager] = createBlkManager()
...