假設我有幾臺機器都安裝了spark worker和cassandra節點。是否有可能要求每個Spark工作人員僅查詢其本地cassandra節點(在同一臺機器上),以便在使用spark-cassandra-connector重新分配SparkCopyandraReplica之後加入WithCassandraTable時不涉及網絡操作,因此每個Spark工作人員都從其本地存儲?如何讓工作人員只查詢本地cassandra節點?
1
A
回答
2
在Spark-Cassandra連接器內部,LocalNodeFirstLoadBalancingPolicy
可以處理這項工作。它首先選擇本地節點,然後檢查同一個DC中的節點。具體而言本地節點使用java.net.NetworkInterface
找到匹配一個在本地地址列表中的主機列表中的地址來確定,如下所示:
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)
}
此邏輯在創建查詢計劃,它返回一個用於查詢的候選主機列表。無論計劃類型如何(標記感知或不知道),列表中的第一個主機始終是本地主機(如果存在)。
+0
看看Spark-Cassandra連接器中如何使用代碼片段,而不是如何找出本地地址(這不是特定的情況)。介意提供一些指針作爲鏈接或完整的代碼片段? –
+0
檢查[this](https://gist.github.com/rstrickland/3e56cf1a2a8817fe8c25)。入口點是'newQueryPlan',爲每個語句執行調用。 –
相關問題
- 1. 本地只寫Cassandra節點
- 2. Cassandra:如何從Java中的本地節點查詢本地表?
- 3. Cassandra查詢特定節點
- 4. 如何讓共享點CAML查詢更高效地工作
- 5. 節點如何讓套接字只接受本地連接?
- 6. 如何暫停和恢復節點工作人員?
- 7. 節點 - 本地地圖減少工作
- 8. Node.js的節點,MySQL查詢不工作
- 9. 查詢結果:節點集不工作
- 10. 如何訪問Cassandra節點的本地數據
- 11. 如何讓sparqle查詢工作?
- 12. 如何讓本地主機工作
- 13. 在本地節點上製作cassandra存儲數據
- 14. 本地化筆尖小數點。如何讓它工作?
- 15. ForkJoinFramework只使用兩名工作人員
- 16. 身份服務器節點作爲管理員或經理/工作人員
- 17. 如何讓Django管理員URL只能訪問本地主機?
- 18. 節點JS工作人員 - 他們需要什麼?
- 19. 節點集羣:僅向一名工作人員處理任務
- 20. Firebase推送通知 - 節點工作人員
- 21. Cassandra節流工作量
- 22. 如何讓背景工作人員報告更多內容?
- 23. 只有一個媒體查詢正在工作。任何人都可以建議其他人如何工作?
- 24. orientdb本地節點不是主人
- 25. httpku工作人員的端點
- 26. 從Spark工作人員讀取和寫入Cassandra拋出錯誤
- 27. PowerDNS只在本地工作
- 28. Fulpage.js只在本地工作?
- 29. 無法讓節點調試工作
- 30. 如何讓通知管理員工作?
我懷疑這裏的數據局部性允許工作人員通過在查詢中指定令牌範圍直接查詢cassandra節點,因此cassandra節點可以遠離工作人員。我懷疑這個工作人員能夠發現在同一臺機器上有一個cassandra節點,並且它應該查詢它。 –