o(* ̄︶ ̄*)o

  博客园  :: 首页  ::  :: 联系 :: 订阅 订阅  :: 管理

使用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);

 

posted on 2025-07-03 10:25  熊本熊の熊  阅读(12)  评论(0)    收藏  举报