private val localAddresses =
NetworkInterface.getNetworkInterfaces.flatMap(_.getInetAddresses).toSet
/** Returns true if given host is local host */
def isLocalHost(host: Host): Boolean = {
val hostAddress = host.getAddress
hostAddress.isLoopbackAddress || localAddresses.contains(hostAddress)
}
1 回答
在Spark-Cassandra连接器内部,
LocalNodeFirstLoadBalancingPolicy
处理这项工作 . 它首先优先选择本地节点,然后检查同一DC中的节点 . 特别是使用java.net.NetworkInterface
确定本地节点,以在主机列表中找到与本地地址列表中的地址匹配的地址,如下所示:此逻辑用于创建查询计划,该计划返回查询的候选主机列表 . 无论计划类型(令牌识别或不知道),列表中的第一个主机始终是本地主机(如果存在) .