2014-10-17 76 views
4

我需要某種在CoreOS集羣上運行的分佈式文件系統。CoreOS和HDFS - 在Linux Containers/Docker中運行分佈式文件系統

因此,我想在CoreOS節點上運行HDFS。這可能嗎?

我可以看到2個選項;

  1. 展開CoreOS - 安裝HDFS直接到CoreOS - 並不理想,因爲它打破CoreOS的集裝箱化的整體概念和將意味着安裝了大量附加成分
  2. 不知怎的,在CoreOS泊塢窗容器中運行HDFS和設置親和力

選項2似乎是最好的方法,但是,有一些潛在的阻滯劑;

  • 如何可靠地將物理磁盤暴露給運行HDFS的Docker容器?
  • 您如何衡量容器的親和力?
  • 這是如何工作的名稱節點等?

乾杯。

+0

我不認爲Docker是適合運行守護程序的地方。 HDFS由分佈式系統中的NameNode守護程序和DataNode守護程序構建,選項2似乎不合適。 – 2014-10-17 05:10:41

+0

這是一個很好的觀點。理論上你可以一起運行它們。但實際上這個計劃是將每個容器作爲單獨的容器來運行,並且當它們作爲集羣在本地運行或vOpenSwitch並將它們鏈接在一起時,通過'docker0'接口進行通信。 – NightWolf 2014-10-17 06:27:26

回答

6

我會盡量提供兩種可能性。我還沒有嘗試過這些,所以他們主要是建議。但是可以讓你走上正確的道路。

首先,如果您想要執行HDFS並且需要在主機上進行設備訪問,則可以在可訪問所需主機設備(磁盤直接)的特權容器中運行HDFS守護進程。有關--privileged--device標誌的信息,請參閱https://docs.docker.com/reference/run/#runtime-privilege-linux-capabilities-and-lxc-configuration

理論上,您可以將設備傳遞給處理磁盤訪問的容器。然後你可以使用類似--link的東西來相互交談。 NameNode將使用卷將主機上的元數據存儲在主機上(與-v一起傳遞)。但是,鑑於我對NameNode所做的一些小小的閱讀,看起來似乎沒有一個好的解決方案,但無論如何也不會有高可用性,而且它是單點故障。

如果你正在尋找一個集羣文件系統而不是特別是HDFS,第二個選項就是查看CoreOS 471.1.0:https://coreos.com/releases/#471.1.0中增加的最新Ceph FS支持。然後,您可以使用特權容器的相同方法訪問主機磁盤以構建Ceph FS集羣。然後,您可能會安裝一個「僅數據」容器,該容器安裝了Ceph工具以在Ceph FS集羣上安裝一個目錄,並將其公開爲其他容器使用的卷。

雖然這些都只是想法,我沒有親自使用HDFS或Ceph(儘管我正在關注Ceph並希望儘快嘗試類似這樣的概念驗證)。