您好,登錄后才能下訂單哦!
Storm使用非JVM的語言
要點:
1、創建topology(官方文檔說使用其他語言創建很簡單,因為topology本身是一個thrift結構,參考stotm.thrift)
2、用其他語言實現spout和bolt,被叫做 multilang components" 或"shelling"
a:這里有一個指定的協議Multilang protocol
b:thrift結構允許你明確的定義multilang components作為程序和腳本
c:在Java中,你覆蓋ShellBolt或ShellSpolt來創建multilang components,注意輸出字段的聲明發生在thrift結構,所以在Java中創建multilang components如下所示:通過指定它在Java中聲明領域,用其他語言處理代碼指定shellbolt的結構,multilang使用JSON消息在標準輸入/輸出與子進程進行通信,storm伴隨ruby、python和其他語言實現協議,展示一個python的例子:
python支持emitting, anchoring, acking, and logging
d:storm shell使得對nimbus打jar包和上傳更方便
打jar包,上傳
調用程序nimbus使用host/port,jar文件使用id號
為Storm定義一個非JVM的語言
因為Storm topology是一個thrift結構,并且nimbus是一個thrift進程,你可創建和提交topology用任何語言,開始學習的地方是storm.thrift。當你為spout和bolt創建thrift結構時,spolt和bolt指定的代碼結構是:
union ComponentObject {
1: binary serialized_java;
2: ShellComponent shell;
3: JavaObject java_object;
}
使用非jvm的語言,你可能會使用2或3.ShellCompont讓你指定腳本去運行,JavaObject讓你指定java的spolt和bolt,storm shell命令幫你提交topology
storm shell resources/ python topology.py arg1 arg2
storm shell 將打jar包,上傳jar包給nimbus,命令如下:
python topology.py arg1 arg2 {nimbus-host} {nimbus-port} {uploaded-jar-location}
提交topology到集群上
void submitTopology(1: string name, 2: string uploadedJarLocation, 3: string jsonConf, 4: StormTopology topology) throws (1: AlreadyAliveException e, 2: InvalidTopologyException ite);
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。