天天看點

在Hadoop上運作Docker容器的六大陷阱

關于譯者ghostcloud

ghostcloud(中文名:精靈雲)是成都精靈雲科技有限公司旗下的基于docker的paas/caas平台品牌。公司成立于2015年,核心團隊由來自emc、veritas、華為、ibm、microsoft的核心技術主管和架構師組成。精靈雲作為國内首批從事容器虛拟化研發的企業,為企業級行業客戶提供針對網際網路化、私有雲管理平台、大資料業務基礎架構的平台服務,在國内docker社群貢獻排名前三。主創團隊曾參與beego開源項目研發,并主導釋出《docker容器實戰:原理、架構與應用》一書。ghostcloud因容器技術而生,緻力于為多個領域的“網際網路+”轉型企業提供服務,是一流的企業級容器雲服務專家。

盡管在hadoop上內建了容器負載的潛在價值,目前任職于cloudera的daniel templeton仍然建議在部署docker容器之前,等待hadoop 3.0版本引入安全問題和其他問題的注意事項。在上周于邁阿密召開的北美apache大會上,daniel在演講中表示:“它的潛在價值确實很大,但hadoop3.0釋出前,它仍然解決不了你的問題。容器很酷,但你确實還無法使用它。”

作為cloudera 的yarn項目中的一名軟體工程師,templeton曾深入了解過由hadoop linux container executor提供的docker支援(下載下傳),也曾經探讨過何時會出現更好的選擇。他曾在探讨中堅持地認為是docker應用在hadoop之上,而不是hadoop應用在docker上。

“如果你也有一個hadoop叢集,你會和我一樣,想在docker容器裡執行工作負載的。”

雖然hadoop的yarn排程引擎目前支援docker作為已送出應用的執行引擎,但當你在現有版本的hadoop中執行它的時候,還是需要提前了解那些“坑”。

陷阱一:docker容器中必須開放應用權限

目前,當你在運作docker容器時,需要指定一個使用者運作它。如果你指定的是使用者id而不是使用者名,假如這個使用者id不存在,它也會自動為你建立使用者。這種重新映射在遇到大量image的時候是無法正常工作的,也就意味着使用者必須事先指定,如若不然,你将無法通路任何内容,也不能啟動腳本和記錄日志,将完全處于宕掉的狀态。

陷阱二:docker容器和運作環境之間不獨立

可移植性是docker容器最主要的特性之一,但運作于hadoop的時候docker的可移植性卻不怎麼好。當你想通路hdfs或者當你需要反譯令牌,又或者當你需要像mapreduce這樣的架構,亦或你想做spark的時候,你必須得擁有image中的代碼檔案才可以實作。是以hadoop的版本必須更新。

該更新檔程式允許安裝被列為白名單的存儲卷,且開放管理者權限。當你擁有管理者權限,不僅這些目錄可以被允許安裝到docker容器中,而且可以指定要挂載的目錄。但需要注意的是,千萬不要挂載任何可能會搞砸的東西。

陷阱三:image太大就會報錯

當執行程式的時候,docker_run将隐含地從repo中拉出圖像,雖然spark和mapreduce都有10分鐘的逾時時間,但如果圖像太大,網絡下載下傳時間超過了10分鐘,程式就會報錯。假如持續地重新送出程式,導緻的最終結果将會是程式處在某個已經嘗試過的節點上并運作。目前針對這種圖像報錯,yarn上對圖像緩存暫無有效的解決方法。

陷阱四:不支援安全回收

docker會将通路了client_config中安全備份的.docker / config.json檔案進行存儲備份,這個應該衆所周知。這意味着當你通路安全備份時,無論從哪個節點管理器登入,你都會受到使用者主目錄中.docker / config.json檔案的限制。恐怕這種限制沒人能接受。

陷阱五:網絡隻有最基本的支援

衆所周知,當應用kubernetes、mesos這類容器管理工具的時候,網絡很容易就得到實作,cns也能得到處理。但yarn卻提供不了這樣的網絡管理服務。yarn沒有内置的端口映射的概念,網絡也沒有真正的自動化管理。相反,如果你想請求通路網絡,你隻能通過所有節點管理器上的docker來顯式建立網絡。

陷阱六:具備較大的安全隐患

docker在hadoop上運作是有安全隐患的。為什麼這麼說?docker中的一個特權容器可以窺探底層作業系統,通路斜線程序和裝置。假如是以root權限運作在容器當中,那麼在底層作業系統中很有機會執行非常可怕的操作。當這種情況發生的時候,yarn目前是無法指定到使用者的。雖然可以通過将其關閉或限制到某一特定使用者組的做法來控制它,但這個安全隐患的問題必須得到重視。

hadoop 3.0

雖然hadoop2.8中存在docker的修複程式,但仍然不夠用。在本次更新版本中,hadoop3.0新增功能點:

•支援本地化的檔案目錄作為卷進行安裝;

•支援cgroups;

•支援不同的網絡選項;

•支援文檔;

據悉hadoop3.0将很可能在年底釋出,其主要功能hbase擦除編碼将得到改進,并将為使用者提供1.5倍的存儲空間。這意味着可以節省使用者一半的硬碟成本,并對yarn和mapreduce的使用者産生巨大的影響。

目前hadoop3.0的項目一直與雅虎,twitter和微軟等主要使用者合作,確定與現有系統的相容性,并且不會出現任何痛苦的滾動更新。

繼續閱讀