日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Storm On YARN

發(fā)布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Storm On YARN 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 背景知識

(1)Storm:一個實時計算框架,與MapReduce離線計算框架互補,分別用于解決不同場景下的問題,Storm的官方網(wǎng)站是:http://storm-project.net/,如果想快速了解,推薦閱讀淘寶的這篇文章:Storm簡介。

(2)YARN:YARN是Hadoop 2.0中新引入的資源管理系統(tǒng),可看做Hadoop操作系統(tǒng)中的資源管理組件,所有應用程序和框架,比如MapReduce、Storm和Spark等,均可運行在YARN之上,關于YARN,可閱讀我的一系列文章:Hadoop-YARN。

(3)Storm On YARN:嘗試將Storm運行在YARN上,這將來眾多好處,具體本文將詳細介紹。Storm On YARN最有名是Yahoo!的開源實現(xiàn),具體參考:Storm On YARN。將Storm運行在YARN上并不是一件難事,但重要的是,它給我們開了一扇窗,我們可通過該項目實現(xiàn)HBase On YARN, Spark On YARN,Kafka On YARN等有意義的工作,具體參考我的這篇文章:匯總運行在Hadoop YARN上的開源系統(tǒng)。

2. Storm On YARN帶來的好處

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

(1) ?彈性計算資源。 將Storm運行到YARN上后,Storm可與其他應用程序(比如MapReduce批處理應用程序)共享整個集群中的資源,這樣,當Storm負載驟增時,可動態(tài)為它增加計算資源,而當負載減小時,可釋放部分資源,從而將這些資源暫時分配給負載更重的批處理應用程序。

(2) 共享底層存儲。 Storm可與運行在YARN上的其他框架共享底層的一個HDFS存儲系統(tǒng),可避免多個集群帶來的維護成本,同時避免數(shù)據(jù)跨集群拷貝帶來的網(wǎng)絡開銷和時間延遲。

(3) ?支持多版本。可同時將多個Storm版本運行YARN上,避免一個版本一個集群帶來的維護成本。

3. Storm On YARN架構

在文章“如何編寫YARN應用程序”一文中,我已經(jīng)介紹了如何在YARN上開發(fā)一個應用程序,通常而言,需要開發(fā)兩個組件,分別是客戶端和ApplicationMaster,其中,客戶端的主要作用是將應用程序提交到YARN上,并與YARN和ApplicationMaster交互,完成用戶發(fā)送的一些指令;而ApplicationMaster則負責向YARN申請資源,并與NodeManager通信,以啟動任務。

為了不修改Storm任何源代碼的情況下,讓Storm運行在YARN上,最簡單的實現(xiàn)方法是將Storm的各個服務組件(包括Nimbus和Supervisor),作為單獨的任務運行在YARN上,而Zookeeper則作為一個公共的服務運行在YARN集群之外的幾個節(jié)點上。

當前比較有名的“Storm On YARN”實現(xiàn)是由yahoo!開源的,它基本實現(xiàn)了上述描述的功能,下面具體進行說明:

(1) ?YARN-Storm Client

提供了一系列Shell命令供用戶控制YARN上的Storm服務,比如構建一個Storm集群命令如下:

storm-yarn launch <storm-yarn-config>

其中,<storm-yarn-config>是Storm配置信息,包括啟動的Supervisor個數(shù)、Storm ApplicationMaster占用的內(nèi)存等。

啟動Storm之后,用戶可通過以下命令控制Storm:

storm-yarn [command] –appId [appId] –output [file] [–supervisors [n]]

其中,Command為具體命令,具體見下表,參數(shù)“-appId”為啟動的Storm的應用程序Id,“-supervisors”為需增加的Supervisor服務個數(shù),該參數(shù)只對命令“addSupervisors”有效。

結合使用startNimbus/stopNimbus、startUI/stopUI和startSupervisors/ stopSupervisors等命令,可完成對Storm集群的升級。

(2) YARN-Storm ApplicationMaster

Storm ApplicationMaster初始化時,將在同一個Container中啟動Storm Nimbus和Storm Web UI兩個服務,然后根據(jù)待啟動的Supervisor數(shù)目向ResourceManager申請資源,在目前實現(xiàn)中,ApplicationMaster將請求一個節(jié)點上所有資源然后啟動Supervisor服務,也就是說,當前Supervisor將獨占節(jié)點而不會與其他服務共享節(jié)點資源,這種情況下可避免其他服務對Storm集群的干擾。

除了運行Storm Nimbus和Web UI外,Storm ApplicationMaster還會啟動一個Thrift Server以處理來自YARN-Storm Client端的各種請求,在此不再贅述。

4. 當前Storm On YARN存在的問題

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

(1)難以將所有Storm服務運行在相鄰的節(jié)點上,比如同一個機架上,這是由于YARN自身不支持資源組調(diào)度,只能實現(xiàn)指定一個rack,然后增量獲取資源,以期望所有資源來自這個rack,但是當該rack空閑資源不足時,YARN也無能為力。

(2)由于Nimbus服務運行在ApplicationMaster上,而一旦ApplicationMaster失敗后,YARN會將它運行在另外一個節(jié)點上,這意味著Nimbus服務可能神不知鬼不覺的在另一個節(jié)點上啟動了,這給用戶使用帶來諸多不便,YARN需要提供一個ApplicationMaster或Nimbus位置獲取服務,客戶端直接通過該服務獲取Nimbus位置即可。社區(qū)目前正在推薦一個基于Zookeeper的方案,你可以使用最新開源項目Weave完成該功能。

(3)NodeManager本身無法支持動態(tài)升級,這意味著,如果NodeManager升級,則它上面運行的服務將全部被殺死,這將給運行在YARN上的服務帶來諸多不穩(wěn)定因素。如果能夠將更廣泛的服務,比如Web server、Mysql等,運行在YARN上,需要讓NodeManager支持動態(tài)升級,像YARN的同質(zhì)項目Mesos那樣。

原創(chuàng)文章,轉載請注明:?轉載自董的博客

本文鏈接地址:?http://dongxicheng.org/mapreduce-nextgen/storm-on-yarn/

總結

以上是生活随笔為你收集整理的Storm On YARN的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。