编辑1: github中有一个未解决的问题: https://github.com/Alluxio/alluxio/issues/10110
我将监视该问题的状态,并为SO社区中的用户同步更新此线程。
在Alluxio中读取的Short-circuit
意味着计算框架和Alluxio工作线程位于同一主机中,并且计算框架可以直接从该工作线程获取数据。
当前,我有两个计算节点,每个计算节点都安装了Spark
和Alluxio
。我尝试使用Spark执行TPC-DS,并使用Alluxio作为缓存层。
我通过alluxio fsadmin report metrics
监视了Alluxio指标,发现没有发生Short-circuit
读取。
Cache Hit Rate (Percentage):
Alluxio Local 0.00
Alluxio Remote 82.52
Miss 17.48
这不是预期的,所以我尝试了Alluxio 2.0的指令
如果本地吞吐量为零或显着低于总吞吐量 吞吐量,计算应用程序很可能不与 当地的Alluxio工人。 Alluxio客户端使用主机名匹配来 发现当地的Alluxio工人;检查客户和工人使用 相同的主机名字符串。配置alluxio.user.hostname和 alluxio.worker.hostname设置客户端和工作程序主机名 分别。
注意:为了检索短路IO的指标,客户端 需要通过设置启用指标收集 alluxio.user.metrics.collection.enabled = true在 alluxio-site.properties或相应的应用程序配置。
我确实设置了alluxio.user.metrics.collectoin.enabled=true
。对于alluxio.user.hostname
和alluxio.worker.hostname
,我将它们设置如下:
在hostA的alluxio-site.properties
上,
alluxio.worker.hostname=hostA
在hostA的spark-default.properties
上,
alluxio.user.hostname=hostA
在hostB的alluxio-site.properties
上,
alluxio.worker.hostname=hostB
在hostB的spark-default.properties
上,
alluxio.user.hostname=hostB