Impala--組件與架構(一)

Impala

介紹

  • 支持HDFS,HBASE數據的高性能,低延遲的交互式SQL查詢。
  • 基於hive使用內存計算,兼顧數據倉庫,具備批處理,實時,多併發的優勢。

用人話翻譯一下數據庫

  • 高性能:基於內存。
  • 低延遲:不會低到ms級別。
  • 基於hive:hive相關模塊有元數據模塊,保存了海量數據文件內容的元數據;compile模塊將SQL轉化爲MR;HIVE去執行SQL任務,無非是直接調用HDFS的API,又或者轉化爲MR去處理數據。元數據這個模塊是很優秀的,hive的元數據模塊其實就是以表的數據模型抽象了全部的文件數據集。除了表的數據模型,也能夠用流式,dataset等等模型,模型不一樣,操做方法不一樣。基於hive只是基於hive的元數據模塊。
  • 使用內存:hive是轉成MR的,MR又是基於磁盤的,全部中間結果都須要落磁盤。磁盤的優勢就是穩定可靠,中間有步驟失敗了,還能夠從上一步磁盤結果重來,impala基於內存計算,中間全部結果都不落地磁盤,因此一旦中間有錯誤,任務直接失敗,從頭再來。
  • 兼顧數倉:最好不要,數倉就是存放歷史靜態數據的,不須要你有多快,須要穩定。
  • 與hive的關係:二者是共用元數據模塊,背對背的關係,HIVE用MR和HDFS的API,Impala直接操做HDFS

image.png

優勢

  • 基於內存
  • 無需轉化爲MR,直接讀取HDFS
  • C++編寫,速度快
  • 兼容HiveSQL
  • 具備數倉特性,可直接對hive直接進行數據分析
  • 支持DataLocal(將元數據庫全部元數據預加載到內存)
  • 支持列式存儲(行式存儲查詢時不見得查全部字段,列式減小IO)

缺點

  • 對內存依賴大(CDH公司推薦放ImpalaServer的機器內存128G)
  • 徹底依賴於HIVE,穩定性不如HIVE
  • C++編寫,開源性,移植性不太好(os:C++太難了=_=)
  • 實際作時,分區超過1W,性能降低嚴重(基於內存計算,粒度不一樣,分組太多太吃內存)

架構&核心組件

impala是個無主模型
image.png架構

  • StateStore Daemon:收集分佈在集羣中各個impalad進程的資源信息(心跳),各節點健康情況,同步節點信息,一個實例。
  • Catalog Daemon:從hive元數據庫拉取元數據(不是實時的,啓動拉一次,其餘更新手動拉取),交給statestore分發表的元數據信息到各個impalad進程(因此最好部署在statestore節點上);若是有DDL操做,impalad心跳發給statestore,statestore再發給Catalog,statestore廣播給impalad,更新每一個節點的元數據,保持一致性,同時Catalog更新給hive,一個實例。
  • Impala Daemon:接收client,hue,jdbc,odbc請求,query執行並返回給中心協調節點,也是子節點的守護進程,負責向statestore彙報結果,保持通訊,多個實例,和DataNode一比一。
相關文章
相關標籤/搜索