最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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可以參見這個(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ù)依賴。實(shí)現(xiàn)的代碼如下:

#define HAVE_NETDB_H //使用網(wǎng)絡(luò)模塊的宏必須打開
#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客戶端對(duì)象
 NimbusClient client(tprotocol);
 //打開通道
  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的配置和集群信息,其他接口以此類推。值得注意的是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ǔ)言深入探究動(dòng)態(tài)規(guī)劃之線性DP

    C語(yǔ)言深入探究動(dòng)態(tài)規(guī)劃之線性DP

    線性動(dòng)態(tài)規(guī)劃,是較常見的一類動(dòng)態(tài)規(guī)劃問(wèn)題,其是在線性結(jié)構(gòu)上進(jìn)行狀態(tài)轉(zhuǎn)移,這類問(wèn)題不像背包問(wèn)題、區(qū)間DP等有固定的模板,線性動(dòng)態(tài)規(guī)劃的目標(biāo)函數(shù)為特定變量的線性函數(shù),約束是這些變量的線性不等式或等式,目的是求目標(biāo)函數(shù)的最大值或最小值
    2022-04-04
  • C語(yǔ)言預(yù)編譯#define(預(yù)處理)

    C語(yǔ)言預(yù)編譯#define(預(yù)處理)

    這篇文章主要介紹了C語(yǔ)言預(yù)編譯#define(預(yù)處理),#define 機(jī)制包括了一個(gè)機(jī)制,允許把參數(shù)替換到文本中,這種實(shí)現(xiàn)通常稱為宏或者宏定義,下文更多的相關(guān)資料介紹需要的小伙伴可以參考一下
    2022-04-04
  • C++編程中的數(shù)據(jù)類型和常量學(xué)習(xí)教程

    C++編程中的數(shù)據(jù)類型和常量學(xué)習(xí)教程

    這篇文章主要介紹了C++編程中的數(shù)據(jù)類型和常量學(xué)習(xí)教程,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • C語(yǔ)言實(shí)現(xiàn)推箱子小游戲

    C語(yǔ)言實(shí)現(xiàn)推箱子小游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)推箱子小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 詳解C++中string的用法和例子

    詳解C++中string的用法和例子

    string是C++標(biāo)準(zhǔn)庫(kù)的一個(gè)重要的部分,主要用于字符串處理。這篇文章主要介紹了C++ string的用法和例子,需要的朋友可以參考下
    2018-05-05
  • 共用體的定義與應(yīng)用詳細(xì)解析

    共用體的定義與應(yīng)用詳細(xì)解析

    共同體的定義類似結(jié)構(gòu)體,不過(guò)共同體的所有成員都在同一段內(nèi)存中存放,起始地址一樣,并且同一時(shí)刻只能使用其中的一個(gè)成員變量
    2013-08-08
  • C++解析wav文件方法介紹

    C++解析wav文件方法介紹

    最近將項(xiàng)目改為跨平臺(tái),于是音頻模塊從微軟的XAudio2改用OpenAL庫(kù)。之前使用MSDN的代碼,所以現(xiàn)在改為了C++標(biāo)準(zhǔn)的寫法,適用性更廣
    2022-09-09
  • 實(shí)例講解C++編程中的虛函數(shù)與虛基類

    實(shí)例講解C++編程中的虛函數(shù)與虛基類

    這篇文章主要介紹了C++編程中的虛函數(shù)與虛基類的實(shí)例講解,虛函數(shù)與虛基類的使用是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-02-02
  • C++線程同步實(shí)例分析

    C++線程同步實(shí)例分析

    這篇文章主要介紹了C++線程同步實(shí)例分析,以實(shí)例的形式較為深入的分析了C++的線程同步問(wèn)題,是一個(gè)較為經(jīng)典的線程同步問(wèn)題,需要的朋友可以參考下
    2014-10-10
  • C++實(shí)現(xiàn)廣度優(yōu)先遍歷圖

    C++實(shí)現(xiàn)廣度優(yōu)先遍歷圖

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)廣度優(yōu)先遍歷圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評(píng)論

沾益县| 唐海县| 太湖县| 阿坝| 德江县| 石河子市| 桂林市| 崇礼县| 奉贤区| 赣榆县| 绥滨县| 林甸县| 文化| 阜新市| 辽宁省| 图们市| 西乌珠穆沁旗| 福泉市| 来宾市| 鄯善县| 麦盖提县| 改则县| 衡南县| 通辽市| 吐鲁番市| 凤凰县| 辽阳市| 林周县| 平阴县| 凉城县| 浪卡子县| 双鸭山市| 疏附县| 垦利县| 昌吉市| 新干县| 瓮安县| 屯留县| 金乡县| 清水河县| 阳西县|