閱讀328 返回首頁    go 阿裏雲 go 技術社區[雲棲]


HBase thrift/thrift2 使用指南

Thrift server簡介

Thrift server是HBase中的一種服務,主要用於對多語言API的支持。基於Apache Thrift(多語言支持的通信框架)開發,目前有兩種版本thriftthrift2

thrift2是當時為了適應新的Java API,提出來的。由於種種原因,thrift2沒有完美兼容並替代thrift,所有就留下了兩個版本。

Thrift 和 Thrift2 的區別

  • 接口設計上Thrift2要比Thrfit更優雅,或者說和現在的API更貼近。比如兩者的get接口: js // Thrift2 的get接口,傳入TGet(對應Java API種的Get類) // 用過Java API的同學看起來應該會更親切 TResult get( /** the table to get from */ 1: required binary table, /** the TGet to fetch */ 2: required TGet tget ) throws (1: TIOError io) js // Thrift 的get接口,沒有TGet這些包裝,比較裸 list<TCell> get( /** name of table */ 1:Text tableName, /** row key */ 2:Text row, /** column name */ 3:Text column, /** Get attributes */ 4:map<Text, Text> attributes ) throws (1:IOError io)
  • Thrift2沒有DDL方麵的接口,所以現在Hue還是用Thrift的接口。如果你隻想讀寫數據,建議用Thrift2。

Thrift server原理

Thrfit其實就是個代理,你的請求發到Thrift server上後,server通過Java API再幫你訪問HBase。
Thrift_server
Thrift實現類是org.apache.hadoop.hbase.thrift.ThriftServer,thrift2的實現類是org.apache.hadoop.hbase.thrift2.ThriftServer。它們訪問HBase使用的也是普通的HBase client API,所以當你的請求到達Thrift server後,它通過client API去幫你定位數據,然後讀取數據。這麼來看,Thrift Server比較靈活,你可以部署在HBase集群內,也可以獨立部署在集群外。

Thrift server 參數選擇

  • TServer的選擇。這是Thrift框架server端處理模型的選擇。有三種,TNonblockingServerTHsHaServerTThreadPoolServer。可以通過啟動命令參數指定,具體運行./bin/hbase thrift可以看到命令幫助(or ./bin/hbase thrift2)。默認是用TThreadPoolServer,建議就不用改了,除非你特別了解你的場景。關於這幾種模型的區別,性能對比可以看這篇文章
  • hbase.regionserver.thrift.compact 是否使用Thrift TCompactProtocol,默認false。如果你每列數據比較大,可以試著開啟,減少帶寬。
  • hbase.thrift.minWorkerThreads TThreadPoolServer的線程池中的corePoolSize,也就是即便空閑時候保持的線程數,默認16。
  • hbase.thrift.maxWorkerThreads TThreadPoolServer的線程池中的maximumPoolSize,默認1000。這個會影響server最大處理能力,需要根據硬件衡量。
  • hbase.thrift.maxQueuedRequests TThreadPoolServer的線程池隊列長度上限,超過這個值時會去創建一個新的線程處理請求(前提是沒有達到maxWorkerThreads,否則拒絕請求)

注:上述最後三個值對thrift2無效。1.3之前的版本中,thrift2無法設定這些值。2.0版本中在thrift2啟動命令裏通過指定'w'選項來設置maxWorkerThreads。具體可以運行上文中提到的命令,查看是否支持'w'選項,如果不支持,默認max=int最大值。

遺留:是否能使用thrift長連接,減少server線程數,減少建立建立連接的開銷,待驗證。

Thrift部署模式

等待更新

最後更新:2017-05-22 22:01:46

  上一篇:go  人工“碳”索意猶盡,智能“矽”來未可知(深度學習入門係列之二)
  下一篇:go  阿裏雲文件存儲SMB協議服務及其申請和使用指南