HBase & thrift & C++缂栫▼_PHP教程
HBase & thrift & C++缂栫▼

鐩綍
鐩綍1
1.鍓嶈█1
2.鍚姩鍜屽仠姝?span>thrift2 1
2.1.鍚姩thrift2 1
2.2.鍋滄thrift2 1
2.3.鍚姩鍙傛暟2
3.hbase.thrift2
3.1.缂栬瘧hbase.thrift 2
4.thrift_helper.h3
5.绀轰緥浠g爜4
1.鍓嶈█
鏈枃鐩殑鏄粙缁嶄娇鐢?span>C++濡備綍鎿嶄綔HBase銆備粠HBase0.94寮€濮嬶紝HBase鏂板thrift2锛屾湰鏂囧彧浠嬬粛鍜岃璁?/span>thrift2鐩稿叧鐨勩€?/span>hbase-1.1.2浣跨敤鐨?/span>thrift浼拌鏄?/span>thrift-0.9.0鐗堟湰銆?
2.鍚姩鍜屽仠姝?span>thrift2
2.1.鍚姩thrift2
鐧诲綍HBasemaster鏈哄櫒锛屾墽琛屼互涓嬪懡浠ゅ惎鍔?/span>thrift2锛?/span>hbase-daemon.shstartthrift2銆?
thrift榛樿鐨勭洃鍚鍙f槸9090锛屽彲浠ラ€氳繃鍙傛暟鈥?span>-p鈥濇寚瀹氬叾瀹冪鍙c€傞粯璁や娇鐢ㄧ殑Server鏄?/span>TThreadPoolServer銆傞粯璁や娇鐢ㄧ殑Protocol鏄?/span>TBinaryProtocol銆?/span>
娉ㄦ剰瀹㈡埛绔娇鐢ㄧ殑Protocol鍜?/span>Transport鍜屾湇鍔$鐨勮淇濇寔涓€鑷达紝鍚﹀垯瀹㈡埛绔湪璋冪敤鏃讹紝鍙兘閬囧埌鈥淓AGAIN(timedout)鈥濈瓑閿欒銆?
2.2.鍋滄thrift2
hbase-daemon.shstopthrift2
2.3.鍚姩鍙傛暟
浣跨敤鈥渉base-daemon.shstartthrift2鈥濇椂锛岃繕鍙互甯︿互涓嬪弬鏁帮細
鍙傛暟鍚?/span> |
鏄惁榛樿 |
鍙傛暟璇存槑 |
-h,--help |
鏄剧ず甯姪淇℃伅 |
|
-b,--bind |
缁戝畾鎸囧畾鍦板潃锛屼絾涓嶆敮鎸?span>TNonblockingServer鍜?/span>THsHaServer锛屼袱鑰呮€绘槸浣跨敤鈥?/span>0.0.0.0鈥?/span> |
|
-p,--port |
9090 |
缁戝鎸囧畾绔彛锛岄粯璁や负9090 |
-f,--framed |
浣跨敤TFramedTransport |
|
-c,--compact |
浣跨敤TCompactProtocol锛岄粯璁ゆ槸TBinaryProtocol |
|
-threadpool |
鏄?/span> |
浣跨敤TThreadPoolServer锛屼负榛樿Server |
-nonblocking |
浣跨敤瀹炵幇浜?span>FramedTransport鐨?/span>TNonblockingServer |
|
-hsha |
浣跨敤瀹炵幇浜?span>FramedTransport鐨?/span>THsHaServer |
瀹㈡埛绔拰hbasethrift2鐨?/span>Transport鍜?/span>Protocol闇€淇濇寔涓€鑷达紝姣斿瀹㈡埛绔负FramedTransport锛屽垯涔熼渶浠モ€?/span>-f鈥濆惎鍔?/span>hbasethrift2銆?/span>
鍚﹀垯瀹㈡埛绔湪璋冪敤鏃讹紝鍙兘浼氶亣鍒扳€淓AGAIN(timedout)鈥濈瓑閿欒銆?
鍚姩鍙傛暟淇℃伅鏉ユ簮浜庡畼缃戠殑椤甸潰锛?
https://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/thrift2/package-summary.html銆?
浠ヤ笂鍙傛暟涓嶆槸缁?span>hbase-daemon.sh浣跨敤锛岃€屾槸琚?/span>hbasethrift2浣跨敤锛屽彲浠ユ祻瑙堢浉鍏虫簮浠g爜浜嗚В缁嗚妭锛?/span>
hbase-thrift\src\main\java\org\apache\hadoop\hbase\thrift2\ThriftServer.java
hbase-thrift\src\main\java\org\apache\hadoop\hbase\thrift2\ThriftHBaseServiceHandler.java
?鍚姩绀轰緥锛?
hbase-daemon.shstartthrift2--framed-nonblocking
3.hbase.thrift
hbaser.thrift鏂囦欢鍦?/span>hbase婧愪唬鐮佸寘锛堜互hbase-1.1.2涓轰緥锛変腑鐨勪綅缃細
hbase-thrift\src\main\resources\org\apache\hadoop\hbase\thrift2\hbase.thrift
3.1.缂栬瘧hbase.thrift
淇濇寔鏈哄櫒涓婂凡瀹夎濂?span>thrift锛堢粡娴嬭瘯hbase-1.1.2鍜?/span>thrift-0.9.0鍏煎锛夛紝鐒跺悗浣跨敤涓嬪垪鍛戒护缂栬瘧锛?/span>thrift--gencpp-out.hbase.thrift锛岀紪璇戞垚鍔熷悗锛屼細鍦ㄢ€?span>-out鈥濇寚瀹氱殑鐩綍涓嬬敓鎴愪互涓嬩簲涓枃浠讹細
THBaseService.h
THBaseService.cpp
hbase_types.h
hbase_types.cpp
hbase_constants.h
hbase_constants.cpp
鍏朵腑渚涘鎴风浣跨敤鐨勬槸浣嶄簬鏂囦欢THBaseService.h涓殑绫?/span>THBaseServiceClient銆?
4.thrift_helper.h
涓轰簡绠€鍖?span>C++瀹㈡埛绔殑缂栫▼锛屽彲浠ヤ娇鐢?/span>thrift_helper.h锛?/span>
https://github.com/eyjian/mooon/blob/master/common_library/include/mooon/net/thrift_helper.h锛屽畠鍙互甯姪绠€鍖栧HBasethrift2鐨勮皟鐢細
//thrift瀹㈡埛绔緟鍔╃被 // //浣跨敤绀轰緥锛?/span> //mooon::net::CThriftClientHelper //try //{ //client.connect(); //client->foo(); //} //catch(apache::thrift::transport::TTransportException&ex) //{ //MYLOG_ERROR("thriftexception:(%d)%s\n",ex.getType(),ex.what()); //} //catch(apache::thrift::transport::TApplicationException&ex) //{ //MYLOG_ERROR("thriftexception:%s\n",ex.what()); //} //catch(apache::thrift::TException&ex) //{ //MYLOG_ERROR("thriftexception:%s\n",ex.what()); //} //Transport闄ら粯璁ょ殑TFramedTransport(TBufferTransports.h)锛岃繕鍙€夋嫨锛?/span> //TBufferedTransport(TBufferTransports.h) //THttpTransport //TZlibTransport //TFDTransport(TSimpleFileTransport) // //Protocol闄ら粯璁ょ殑apache::thrift::protocol::TBinaryProtocol锛岃繕鍙€夋嫨锛?/span> //TCompactProtocol //TJSONProtocol //TDebugProtocol template classProtocol=apache::thrift::protocol::TBinaryProtocol, classTransport=apache::thrift::transport::TFramedTransport> classCThriftClientHelper |
5.绀轰緥浠g爜
//HBasethrift2C++缂栫▼绀轰緥 #include"THBaseService.h" #include #include #include #include //璇锋敞鎰忓鎴风浣跨敤鐨則hrift鐨凾ransport鍜孭rotocol瑕佸拰hbasethrift2鏈嶅姟绔繚鎸佷竴鑷达紝 //鍚﹀垯璋冪敤鏃讹紝鍙兘鎬绘槸鎶ヨ秴鏃讹紝鎴栧叾瀹冮敊璇紒锛侊紒 // //杩愯涔嬪墠锛岃閫氳繃HBaseshell鍒涘缓濂借〃锛歝reate'test','cf1','cf2' //鎴栨寚瀹氱増鏈暟锛歝reate'test',{NAME=>'cf1',VERSIONS=>2},{NAME=>'cf2',VERSIONS=>3} //鍒犻櫎琛紝鎸夐『搴忔墽琛屼互涓嬩袱鏉Baseshell鍛戒护锛?/span> //disable'test' //drop'test' STRING_ARG_DEFINE(hbase_ip,"192.168.0.1","hbasethriftip"); INTEGER_ARG_DEFINE(uint16_t,hbase_port,9090,1000,50000,"hbasethriftport"); intmain(intargc,char*argv[]) { std::stringerrmsg; if(!mooon::utils::parse_arguments(argc,argv,&errmsg)) { fprintf(stderr,"parametererror:%s\n",errmsg.c_str()); exit(1); } usingnamespaceapache; usingnamespaceapache::hadoop; std::stringhbase_ip=mooon::argument::hbase_ip->value(); uint16_thbase_port=mooon::argument::hbase_port->value(); mooon::net::CThriftClientHelper<:thrift2::thbaseserviceclient>hbase_client(hbase_ip,hbase_port); try { hbase_client.connect();//杩炴帴hbasethrift2server fprintf(stdout,"connect%s:%dok\n",hbase_ip.c_str(),hbase_port); std::stringtablename="test";//琛ㄥ悕锛岀‘淇濊繍琛屼箣鍓嶅凡鍒涘缓濂?/span> std::stringrowkey="row1";//琛孠ey std::stringfamily="cf1";//渚嬫棌鍚?/span> std::stringcolumnname="f1";//渚嬪悕 std::stringcolumnvalue="value1";//渚嬪€?/span> //鎻掑叆鍙傛暟璁剧疆 std::vector<:thrift2::tcolumnvalue>columns_value(1); columns_value[0].__set_family(family); columns_value[0].__set_qualifier(columnname); columns_value[0].__set_value(columnvalue); hbase::thrift2::TPutput; put.__set_row(rowkey); put.__set_columnValues(columns_value); hbase_client->put(tablename,put);//鎻掑叆锛屽嚭閿欐姏寮傚父hbase::thrift2::TIOError //鏌ヨ鍙傛暟璁剧疆 hbase::thrift2::TGetinput; input.__set_row(rowkey); hbase::thrift2::TResultresult;//鏌ヨ缁撴灉瀛樻斁鍦ㄨ繖閲?/span> hbase_client->get(result,tablename,input);//鏌ヨ锛屽嚭閿欐姏寮傚父hbase::thrift2::TIOError //鏄剧ず鏌ヨ缁撴灉 for(inti=0;i { consthbase::thrift2::TColumnValue&column_value_ref=result.columnValues[i]; fprintf(stdout,"family[%s]/qualifier[%s]/timestamp[%"PRIu64"]:%s\n",column_value_ref.family.c_str(), column_value_ref.qualifier.c_str(), column_value_ref.timestamp, column_value_ref.value.c_str()); } } catch(hbase::thrift2::TIOError&ex) { fprintf(stderr,"IOError:%s\n",ex.what()); } catch(apache::thrift::transport::TTransportException&ex) { //濡傛灉鍜屾湇鍔$鐨凾ransport鍜孭rotocol涓嶅悓锛岃繖閲岀殑閿欒鏄€淓AGAIN(timedout)鈥?/span> fprintf(stderr,"(%d)%s\n",ex.getType(),ex.what()); } catch(apache::thrift::TApplicationException&ex) { fprintf(stderr,"%s\n",ex.what()); } catch(thrift::TException&ex) { fprintf(stderr,"%s\n",ex.what()); } return0; } |

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dalam beberapa hari kebelakangan ini, Ice Universe terus mendedahkan butiran mengenai Galaxy S25 Ultra, yang secara meluas dipercayai sebagai telefon pintar utama Samsung yang seterusnya. Antara lain, pembocor itu mendakwa bahawa Samsung hanya merancang untuk membawa satu peningkatan kamera

OnLeaks kini telah bekerjasama dengan Android Headlines untuk memberikan pandangan pertama pada Galaxy S25 Ultra, beberapa hari selepas percubaan gagal untuk menjana lebih daripada $4,000 daripada pengikut X (dahulunya Twitter). Untuk konteks, imej pemaparan yang dibenamkan di bawah h

Di samping mengumumkan dua telefon pintar baharu, TCL juga telah mengumumkan tablet Android baharu yang dipanggil NXTPAPER 14, dan saiz skrinnya yang besar adalah salah satu nilai jualannya. NXTPAPER 14 menampilkan versi 3.0 jenama tandatangan TCL panel LCD matte

Vivo Y300 Pro baru sahaja didedahkan sepenuhnya, dan ia merupakan salah satu telefon Android jarak pertengahan paling tipis dengan bateri yang besar. Tepatnya, telefon pintar ini hanya tebal 7.69 mm tetapi mempunyai bateri 6,500 mAh. Ini adalah kapasiti yang sama seperti yang dilancarkan baru-baru ini

Samsung belum menawarkan sebarang petunjuk lagi tentang bila ia akan mengemas kini siri telefon pintar Edisi Peminat (FE). Seperti sedia ada, Galaxy S23 FE kekal sebagai edisi terbaharu syarikat, telah dibentangkan pada awal Oktober 2023. Walau bagaimanapun, banyak

Dalam beberapa hari kebelakangan ini, Ice Universe terus mendedahkan butiran mengenai Galaxy S25 Ultra, yang secara meluas dipercayai sebagai telefon pintar utama Samsung yang seterusnya. Antara lain, pembocor itu mendakwa bahawa Samsung hanya merancang untuk membawa satu peningkatan kamera

Redmi Note 14 Pro Plus kini rasmi sebagai pengganti langsung kepada Redmi Note 13 Pro Plus tahun lepas (sekira $375 di Amazon). Seperti yang dijangkakan, Redmi Note 14 Pro Plus mengetuai siri Redmi Note 14 bersama Redmi Note 14 dan Redmi Note 14 Pro. Li

Jenama OnePlus iQOO mempunyai kitaran produk 2023-4 yang mungkin hampir tamat; Namun begitu, jenama itu telah mengisytiharkan bahawa ia belum selesai dengan siri Z9nya. Varian Turbo+yang terakhir, dan mungkin paling akhir, baru sahaja diumumkan seperti yang diramalkan. T
