閱讀486 返回首頁    go 人物


在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的時候是無法正常工作的,也就意味著用戶必須事先指定,如若不然,你將無法訪問任何內容,也不能啟動腳本和記錄日誌,將完全處於宕掉的狀態。

這個問題目前還沒有一個很好的解決辦法,如果你有好的想法,歡迎到YARN-4266上參與討論(https://issues.apache.org/jira/browse/YARN-4266)。

陷阱二:Docker容器和運行環境之間不獨立
可移植性是Docker容器最主要的特性之一,但運行於Hadoop的時候Docker的可移植性卻不怎麼好。當你想訪問HDFS或者當你需要反譯令牌,又或者當你需要像MapReduce這樣的框架,亦或你想做Spark的時候,你必須得擁有image中的代碼文件才可以實現。因此Hadoop的版本必須升級。

升級Hadoop版本的補丁程序可以在YARN-5534上下載(下載地址:https://issues.apache.org/jira/browse/YARN-5534)。

該補丁程序允許安裝被列為白名單的存儲卷,且開放管理員權限。當你擁有管理員權限,不僅這些目錄可以被允許安裝到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和微軟等主要用戶合作,確保與現有係統的兼容性,並且不會出現任何痛苦的滾動升級。

原文:https://thenewstack.io/docker-hadoop-theres-good-bad-ugly/

最後更新:2017-06-01 17:31:19

  上一篇:go  《C++遊戲編程入門(第4版)》——2.6 使用while循環
  下一篇:go  springboot(六):如何優雅的使用mybatis