為什么我們選擇Docker 來構建Crayon 的數據處理平臺
【編者的話】隨著Hadoop 成為大數據的事實標準,Hadoop的生態環境也在不斷膨脹,環境搭建的復雜性,給開發和測試帶來了不便。如何用Docker來降低Hadoop 開發中的復雜性,Crayon 帶來了他們的方案。
從歷史上來看,企業軟件供應商為了控制他們客戶端的安裝基礎的 開發環境 ,已經發展成了一場斗爭。如果沒有對部署環境的適當控制,排除客戶端的任何問題將成為一場災難。
最初,公司提供一個包含定制的 操作系統鏡像 的應用。通過安裝軟件作為其一部分組成,它給予了從硬件到操作系統的對環境的完全的控制力。但是它導致很難為企業解決問題。企業軟件供應商不得不與其它公司形成合作關系,并且依賴這些公司,來為他們分發硬件平臺。他們必須尋找多個合作伙伴關系,以避免被鎖定在一個合作伙伴。
服務器虛擬化
服務器虛擬化用來解決多供應商的硬件平臺和環境問題。它幫助企業軟件供應商有效的發布他們的軟件,通過在部分 虛擬機管理程序 之上進行測試和認證。它提供了一個良好的頂層抽象,企業軟件應用能夠在其中部署和測試。在我早先工作的組織中,我們使用生成的 ova 鏡像,用來在虛擬機管理程序上創建 虛擬機 實例,對于一個完全封閉的應用,這有助于創建相同結果,更便于管理。
這個模式有幾個問題無法解決。首先,構建ova 鏡像,你需要有大量的系統級的技能。其次是管理分布式環境。當一個軟件要求分布式的安裝在多節點上,仍然有大量的手工操作包括啟動這些虛擬機。隨著企業開始使用云作為他們的基礎設施,不考慮應用的種類(即使當應用運行在一個節點中),管理一個分布式環境變得更重要。
Docker
Docker 的問世正好解決了這兩個問題。Docker 允許任何人很簡單的快速創建、執行和測試Docker 容器。有大量的框架,用于分布式Docker 的管理,比如Google 的 kubernetis 、 CoreOS 、 Multi-Container orchestration 等等,這些都很容易和Docker 結合。
除了這些,相對于虛擬機,Docker是非常輕量級的。如下圖所示,它避免了虛擬機管理程序的附加層,運行一個輕量級的 Docker 引擎 。它支持Windows 和 Boot2Docker 。
虛擬機和Docker的區別
我們如何選擇我們的數據處理堆棧
雖然Docker 試圖解決很多問題,但是我們選擇了“構建一致的環境便于去復制”這一方面。
最初在Crayon,在我們的開發周期中,為了測試很少的代碼,我們不得不改變我們的 MapReduce 程序。我們需要將我們的程序放到 AWS 環境中的生產集群中,這主要是為了解決配置本地用于測試的 Hadoop 環境的時間和精力。當一個 POC 僅需要Hadoop 生態系統中的一些組件來完成工作時,反復的配置系統是沒有效率的,尤其當 Hadoop 生態系統 的組件一直在增加時。
我們使用 SequenceIQ 提供的工具來開始我們的自動化Hadoop 集群之旅,幾分鐘之內我們就能夠啟動一個多節點的Hadoop 集群。有趣的是,他們采用blueprints 的格式來抽象化集群的配置,通過Docker 的幫助來自動化集群的配置和啟動。 Hortonworks 收購SequenceIQ 表明了SequenceIQ 所做的自動化Hadoop 集群開發這類工作的重要性。
SequenceIQ 啟發了我們采用Docker。我們通過定制和調整SequenceIQ 的Docker 鏡像取得了一些進展。我們為數據處理構建了一個完全的Docker 化平臺。
對于我們所有使用Hadoop 組件的poc,我們創建了一致的,易于復制的Docker 實例,取代了之前人們試著去在本地安裝Hadoop 生態系統的每個組件,對于開發和測試環境的需要,我們只需要創建一次,便能在任何時間和地點使用它。
這就是我們達到一致的開發,測試,集成和部署的方式之旅,是無縫的。 我們期待讓Docker 成為我們默認的神器,直到部署階段。 雖然在企業環境中可能存在一些挑戰,我們希望會有一個行業廣泛采用Docker。 請繼續翻看我們關于我們目前所作的嘗試和成就的詳細內容。
原文鏈接: Why we chose Docker to build Crayon’s data processing platform (翻譯:覃璐)
來自: http://dockone.io/article/997