我有一個運行在 Kubernetes 集群中的 Go 應用程式,它需要從大型 MapR 集群中讀取檔案。兩個集群是分開的,Kubernetes 集群不允許我們使用 CSI 驅動。我所能做的就是在 Kubernetes pod 內的 Docker 容器中運行用戶空間應用程式,然后我maprticket可以連接到 MapR 集群。
我可以使用com.mapr.hadoop maprfs jar來撰寫一個 Java 應用程式,該應用程式能夠使用maprticket.
uj5u.com熱心網友回復:
這是一個很好的問題,因為它突出了某些環境施加限制的方式,這些限制違反了外部軟體可能持有的假設。
僅供參考,MapR 已被 HPE 收購,因此 MapR 集群現在是 HPE Ezmeral Data Fabric 集群。我仍在訓練自己這么說。
無論如何,語言 X 中的通用程式與 Ezmeral Data Fabric(以前稱為 MapR FS 的檔案系統)通信的公認方法是掛載檔案系統并使用檔案 API 與它進行對話,例如 open/read/write 等. 這適用于 Go、Python、C、Julia 或其他任何東西。在 Kubernetes 內部,執行此掛載的常規方法是使用 CSI 驅動程式,該驅動程式有某種操作員在后臺作業。那個操作員并不是特別神奇......它只是做需要做的事情。對于 Data Fabric,操作員使用 NFS 或 FUSE 掛載 Data Fabric,然后將 mounts[1] 的一部分系結到 Pod 的感知中。
但是這個問題很酷,因為它排除了所有這些。如果您無法安裝操作員,那么其他這些東西只是一紙空文。
有三種替代方法可能有效。
在 CSI 插件方法標準化之前,NFS 掛載作為原生功能包含在 Kubernetes 中。仍然可以在非常普通的 Kubernetes 集群上使用它,并且可以訪問資料集群。
可以將容器集成到您的 pod 中,以非特權方式執行必要的 FUSE 掛載。這會有點痛苦,因為您必須將 FUSE 驅動程式與資料結構安裝分開并讓它作業。這會讓您看到 pod 內的資料結構。即使那樣,也不能保證 Kubernetes 或作業系統會允許它作業。
有一個未發布的 Go 檔案系統客戶端直接使用低級資料結構 API。我們還沒有單獨發布。有關這方面的更多資訊,人們應該直接聯系我(我的聯系資訊無處不在......發送電子郵件至 ted.dunning hpe.com 或 gmail.com 有效)
資料結構允許您通過 S3 訪問資料。隨著 Ezmeral Data Fabric 7.0 版本的發布,此功能經過重大改進以提供強大的性能,特別是因為您可以基本上無限制地擴展網關的數量(我聽說每個網關的無狀態連接有 3-5GB/s 之類的數字,但是YMMV)。這將需要最少的麻煩,并且應該提供足夠的性能。您甚至可以像訪問 S3 物件一樣訪問檔案。
[1] https://unix.stackexchange.com/questions/198590/what-is-a-bind-mount#:~:text=A bind mount is an,the same as the% 20原創。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/423085.html
標籤:
上一篇:如何使用client-go獲取當前的k8s背景關系名稱
下一篇:逐行處理耗時太長
