使用thrift2连接hbase,执行get/put命令,提示"write() send() : Broken pipe"
1. 连接demo
boost::shared_ptr<TSocket> tsocket; boost::shared_ptr<TTransport> ttransport; boost::shared_ptr<TProtocol> tprotocol; bool HBaseOpen() { try { tsocket.reset(new TSocket(ip, 9090)); ttransport.reset(new TBufferedTransport(tsocket)); tprotocol.reset(new TBinaryProtocol(ttransport)); client = new THBaseServiceClient(tprotocol); ttransport->open(); cout << "open OK"<<endl; } catch (const TException &tx) { cout << "Connect Hbase error : " << tx.what()<<endl; return false; } return true; }
2. 压测过程中,执行put/get命令提示如下:
no more data to read
write() send() : Broken pipe
write() send() : Broken pipe
write() send() : Broken pipe
3. 解决方法
网络不稳定,添加如下方法解决:
//tsocket.reset(new TSocket(ip, 9090)); tsocket->setConnTimeout(5000); tsocket->setRecvTimeout(30000); tsocket->setSendTimeout(30000);
浙公网安备 33010602011771号