Storm(五)Storm on YARN介紹

Storm On YARN帶來的好處


相比於將Storm部署到一個獨立的集羣中,Storm On YARN帶來的好處很多,主要有以下幾個:

  • 彈性計算資源: 將Storm運行到YARN上後,Storm可與其他應用程序(比如MapReduce批處理應用程序)共享整個集羣中的資源,這樣,當Storm負載驟增時,可動態爲它增加計算資源,而當負載減小時,可釋放部分資源,從而將這些資源暫時分配給負載更重的批處理應用程序。
  • 共享底層存儲: Storm可與運行在YARN上的其他框架共享底層的一個HDFS存儲系統,可避免多個集羣帶來的維護成本,同時避免數據跨集羣拷貝帶來的網絡開銷和時間延遲。
  • 支持多版本: 可同時將多個Storm版本運行YARN上,避免一個版本一個集羣帶來的維護成本。

Storm On YARN存在的問題


由於YARN本身的不完善,導致Storm On YARN設計存在諸多缺陷,以下是幾個典型問題:

  • 難以將所有Storm服務運行在相鄰的節點上,比如同一個機架上,這是由於YARN自身不支持資源組調度,只能實現指定一個rack,然後增量獲取資源,以期望所有資源來自這個rack,但是當該rack空閒資源不足時,YARN也無能爲力。
  • 由於Nimbus服務運行在ApplicationMaster上,而一旦ApplicationMaster失敗後,YARN會將它運行在另外一個節點上,這意味着Nimbus服務可能神不知鬼不覺的在另一個節點上啓動了,這給用戶使用帶來諸多不便,YARN需要提供一個ApplicationMaster或Nimbus位置獲取服務,客戶端直接通過該服務獲取Nimbus位置即可。社區目前正在推薦一個基於Zookeeper的方案,你可以使用最新開源項目Weave完成該功能。
  • NodeManager本身無法支持動態升級,這意味着,如果NodeManager升級,則它上面運行的服務將全部被殺死,這將給運行在YARN上的服務帶來諸多不穩定因素。如果能夠將更廣泛的服務,比如Web server、Mysql等,運行在YARN上,需要讓NodeManager支持動態升級,像YARN的同質項目Mesos那樣。

Storm On YARN架構


Storm ApplicationMaster初始化時,將在同一個Container中啓動Storm Nimbus和Storm Web UI兩個服務,然後根據待啓動的Supervisor數目向ResourceManager申請資源,在目前實現中,ApplicationMaster將請求一個節點上所有資源然後啓動Supervisor服務,也就是說,當前Supervisor將獨佔節點而不會與其他服務共享節點資源,這種情況下可避免其他服務對Storm集羣的干擾。除了運行Storm Nimbus和Web UI外,Storm ApplicationMaster還會啓動一個Thrift Server以處理來自YARN-Storm Client端的各種請求。

Launch Storm Cluster with Hadoop YARN

Storm-YARN asks YARN’s Resource Manager to launch a Storm Application Master. The Application Master then launches a Storm nimbus server and a Storm UI server locally. It also uses YARN to find resources for the supervisors and launch them.

這裏寫圖片描述

Submit and Execute Storm Topologies

each Storm supervisor will launch worker processes within its container. These Storm worker processes are enabled to access Hadoop datasets stored in HDFS and HBase etc..

這裏寫圖片描述

參考鏈接:http://dongxicheng.org/mapreduce-nextgen/storm-on-yarn/
參考鏈接:https://developer.yahoo.com/blogs/ydn/storm-yarn-released-open-source-143745133.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章