Hbase之happybase[TTransportException Broken pipe]分析

Hbase提供Thrift實(shí)現(xiàn)多語言的支持,python的happybase就是其中一個(gè)實(shí)現(xiàn)粘茄。

最近在使用happybase出現(xiàn)TTransportException和Broken pipe的異常戒职,記錄一下解決方案。

環(huán)境:
python:3.6.2
happbase:1.1.0
hbase:1.2.4

現(xiàn)象:要每幾分鐘左右往HBase插入一條數(shù)據(jù)韵丑,但是侯谁,在大約1分鐘過后,被服務(wù)器斷開了連接堡称,然后再嘗試插入的時(shí)候瞎抛,拋出broken pipe.

復(fù)現(xiàn)代碼:

import happybase
import time

def put(pool,data):
    with pool.connection() as conn:
        table = conn.table('Log')
        row_key = str(int(time.time())) + '000001'
        data = data
        table.put(row_key, data)

if __name__ == '__main__':
    pool = happybase.ConnectionPool(size=3, host='127.0.0.1', table_prefix='TL')
    put(pool,{})
    time.sleep(60) # 模擬間隔時(shí)間
    put(pool, {})

分析:Broken pipe往往是因?yàn)榭蛻舳撕头?wù)器的TCP連接斷開引起的。

通過google發(fā)現(xiàn)hbase thrift server有一個(gè)超時(shí)的配置hbase.thrift.server.socket.read.timeout却紧,當(dāng)客戶端和服務(wù)器的連接超過該值沒有收到消息的時(shí)候桐臊,該連接會(huì)被斷開,默認(rèn)值為60秒晓殊,正好跟本次現(xiàn)象發(fā)生的場景一致断凶,每隔60秒連接斷開。參考[HBASE-14926]https://issues.apache.org/jira/browse/HBASE-14926

查看happybase連接池相關(guān)的代碼發(fā)現(xiàn)在with完成后connection并沒有close巫俺,直接返回到連接池當(dāng)中认烁。

    @contextlib.contextmanager
    def connection(self, timeout=None):
        connection = getattr(self._thread_connections, 'current', None)
        return_after_use = False
        if connection is None:
            return_after_use = True
            connection = self._acquire_connection(timeout)
            with self._lock:
                self._thread_connections.current = connection
        try:
            connection.open()
            yield connection
        except (TException, socket.error):
            logger.info("Replacing tainted pool connection")
            connection._refresh_thrift_client()
            connection.open()
            raise
        finally:
            if return_after_use:
                del self._thread_connections.current
                self._return_connection(connection)

而問題就出現(xiàn)在這里,返回到連接池中的connection在1分鐘后沒有使用介汹,被斷開了連接却嗡,當(dāng)下一次再拿這個(gè)connection去請求資源就會(huì)出現(xiàn)Broken pipe的異常。

接下來就到了解決問題的時(shí)候嘹承,一般來講可以有兩個(gè)解決方案:

1.配置hbase.thrift.server.socket.read.timeout窗价,增加超時(shí)時(shí)間

2.在使用connection后關(guān)閉連接

import happybase
import time

def put(pool,data):
    with pool.connection() as conn:
        table = conn.table('Log')
        row_key = str(int(time.time())) + '000001'
        data = data
        table.put(row_key, data)
        conn.close() # 關(guān)閉連接

if __name__ == '__main__':
    pool = happybase.ConnectionPool(size=3, host='127.0.0.1', table_prefix='TL')
    put(pool,{})
    time.sleep(60) # 模擬間隔時(shí)間
    put(pool, {})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市叹卷,隨后出現(xiàn)的幾起案子撼港,更是在濱河造成了極大的恐慌,老刑警劉巖骤竹,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帝牡,死亡現(xiàn)場離奇詭異,居然都是意外死亡蒙揣,警方通過查閱死者的電腦和手機(jī)否灾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸣奔,“玉大人墨技,你說我怎么就攤上這事】胬辏” “怎么了扣汪?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锨匆。 經(jīng)常有香客問我崭别,道長冬筒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任茅主,我火速辦了婚禮舞痰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘诀姚。我一直安慰自己响牛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布赫段。 她就那樣靜靜地躺著呀打,像睡著了一般。 火紅的嫁衣襯著肌膚如雪糯笙。 梳的紋絲不亂的頭發(fā)上贬丛,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音给涕,去河邊找鬼豺憔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛够庙,可吹牛的內(nèi)容都是我干的恭应。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼首启,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了撤摸?” 一聲冷哼從身側(cè)響起毅桃,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎准夷,沒想到半個(gè)月后钥飞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衫嵌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年读宙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片楔绞。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡结闸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出酒朵,到底是詐尸還是另有隱情桦锄,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布蔫耽,位于F島的核電站结耀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜图甜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一碍粥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧黑毅,春花似錦嚼摩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至匪凡,卻和暖如春膊畴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背病游。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工唇跨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衬衬。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓买猖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親滋尉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子玉控,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容