欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C/C++實(shí)現(xiàn)對(duì)STORM運(yùn)行信息查看及控制的方法

 更新時(shí)間:2014年07月25日 10:31:22   投稿:shichen2014  
這篇文章主要介紹了C/C++實(shí)現(xiàn)對(duì)STORM運(yùn)行信息查看及控制的方法,需要的朋友可以參考下

本文所述程序?qū)嵗饕獙?shí)現(xiàn)在后端應(yīng)用服務(wù)器上實(shí)時(shí)獲取STORM集群的運(yùn)行信息和topology相關(guān)的提交和控制。對(duì)此,通過(guò)對(duì)STORM UI和CMD源碼的分析,得出可以通過(guò)其thrift接口調(diào)用實(shí)現(xiàn)這些功能。先下載一個(gè)thrift庫(kù)進(jìn)行編碼和安裝。關(guān)于thrift可以參見(jiàn)這個(gè)地方。安裝完成后,從STORM源碼中將storm.thrift拷貝到thrift目錄下。輸入:

hrift -gen cpp storm.thrift

會(huì)得到一個(gè)gen-cpp目錄,里面就是thrift先關(guān)腳本的C++實(shí)現(xiàn)。我們先看storm.thrift文件接口:

service Nimbus 
{
 //TOPOLOGY上傳接口
 void submitTopology(1: string name, 2: string uploadedJarLocation, 3: string jsonConf, 4: StormTopology topology);
 void submitTopologyWithOpts(1: string name, 2: string uploadedJarLocation, 3: string jsonConf, 4: StormTopology topology, 5: SubmitOptions options);
 void killTopology(1: string name);
 void killTopologyWithOpts(1: string name, 2: KillOptions options) throws (1: NotAliveException e);
 void activate(1: string name) ;
 void deactivate(1: string name);
 void rebalance(1: string name, 2: RebalanceOptions options);
 
 //TOPOLOGY JAR包上傳接口
 string beginFileUpload();
 void uploadChunk(1: string location, 2: binary chunk);
 void finishFileUpload(1: string location);
 string beginFileDownload(1: string file);
 binary downloadChunk(1: string id);

 //獲取NIMBUS的配置信息
 string getNimbusConf();
 //獲取STORM集群運(yùn)行信息
 ClusterSummary getClusterInfo();
 //獲取TOPOLOGY的運(yùn)行狀態(tài)信息
 TopologyInfo getTopologyInfo(1: string id);
 //獲取TOPOLOGY對(duì)象信息
 string getTopologyConf(1: string id);
 StormTopology getTopology(1: string id);
 StormTopology getUserTopology(1: string id);
}

生成C++文件后,我們就可以對(duì)其接口進(jìn)行調(diào)用,由于thrift c++框架是使用boost庫(kù)實(shí)現(xiàn)的,必須安裝boost庫(kù)依賴(lài)。實(shí)現(xiàn)的代碼如下:

#define HAVE_NETDB_H //使用網(wǎng)絡(luò)模塊的宏必須打開(kāi)
#include "Nimbus.h"
#include "storm_types.h"

#include <string>
#include <iostream>
#include <set>

#include <transport/TSocket.h> 
#include <transport/TBufferTransports.h> 
#include <protocol/TBinaryProtocol.h> 
int test_storm_thrift()
{
 boost::shared_ptr<TSocket> tsocket(new TSocket("storm-nimbus-server", 6627));
 boost::shared_ptr<TTransport> ttransport(new TFramedTransport(tsocket, 1024 * 512)); //此處必須使用TFramedTransport
 boost::shared_ptr<TProtocol> tprotocol(new TBinaryProtocol(ttransport));
 try{
 //創(chuàng)建一個(gè)nimbus客戶(hù)端對(duì)象
 NimbusClient client(tprotocol);
 //打開(kāi)通道
  ttransport->open();

 ClusterSummary summ;
 std::string conf;
 //對(duì)STORM的RPC調(diào)用,直接獲取信息,同步進(jìn)行的。
 client.getNimbusConf(conf);
 client.getClusterInfo(summ);
 //關(guān)閉通道
 ttransport->close(); 
  }catch(TException &tx){ 
 printf("InvalidOperation: %s
", tx.what()); 
  }
}

以上代碼就可以直接獲取nimbus的配置和集群信息,其他接口以此類(lèi)推。值得注意的是storm.thrift to C++生成的storm_types.h文件里其中operator < 函數(shù)都未實(shí)現(xiàn),所以必須手動(dòng)進(jìn)行添加實(shí)現(xiàn),否則編譯會(huì)有問(wèn)題。

此外,不僅僅C++可以實(shí)現(xiàn)STORM的控制,PHP和其他的語(yǔ)言也可以實(shí)現(xiàn),只要thrift支持就OK。感興趣的讀者可以自己實(shí)現(xiàn)一下試試看。

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)出棧序列

    C語(yǔ)言實(shí)現(xiàn)出棧序列

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)出棧序列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++ operator關(guān)鍵字(重載操作符)的用法詳解

    C++ operator關(guān)鍵字(重載操作符)的用法詳解

    下面小編就為大家?guī)?lái)一篇C++ operator關(guān)鍵字(重載操作符)的用法詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • C++實(shí)現(xiàn)STL容器的示例

    C++實(shí)現(xiàn)STL容器的示例

    本文主要介紹了C++實(shí)現(xiàn)STL容器的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • 基于C++ OpenCV制作電子相冊(cè)查看器

    基于C++ OpenCV制作電子相冊(cè)查看器

    這篇文章主要介紹了如何使用OpenCV C++ 制作電子相冊(cè)查看器。類(lèi)似于win10系統(tǒng)的“照片”功能。感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-01-01
  • C語(yǔ)言深入探究棧的原理

    C語(yǔ)言深入探究棧的原理

    一種特殊的線性表,其只允許在固定的一端進(jìn)行插入和刪除元素操作。進(jìn)行數(shù)據(jù)插入和刪除操作的一端 稱(chēng)為棧頂,另一端稱(chēng)為棧底。棧中的數(shù)據(jù)元素遵守后進(jìn)先出LIFO(Last In First Out)的原則
    2021-11-11
  • 學(xué)習(xí)C++編程的必備軟件

    學(xué)習(xí)C++編程的必備軟件

    本文給大家分享的是作者在學(xué)習(xí)使用C++進(jìn)行編程的時(shí)候所用到的一些常用的軟件,這里推薦給大家
    2017-04-04
  • Qt開(kāi)發(fā)之QString類(lèi)的使用教程詳解

    Qt開(kāi)發(fā)之QString類(lèi)的使用教程詳解

    本文主要介紹了Qt中QString類(lèi)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-11-11
  • 從頭學(xué)習(xí)C語(yǔ)言之二維數(shù)組

    從頭學(xué)習(xí)C語(yǔ)言之二維數(shù)組

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言之二維數(shù)組,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • C++的繼承和派生你了解嗎

    C++的繼承和派生你了解嗎

    這篇文章主要為大家詳細(xì)介紹了C++繼承和派生,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • c++實(shí)現(xiàn)排序算法之希爾排序方式

    c++實(shí)現(xiàn)排序算法之希爾排序方式

    這篇文章主要介紹了c++實(shí)現(xiàn)排序算法之希爾排序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評(píng)論