impala简介(大数据技术)
一、Impala概述
什么是Impala?
Impala是用于處理存儲在Hadoop集群中的大量數據的MPP(大規模并行處理)SQL查詢引擎。 它是一個用C ++和Java編寫的開源軟件。 與其他Hadoop的SQL引擎相比,它提供了高性能和低延遲。
換句話說,Impala是性能最高的SQL引擎(提供類似RDBMS的體驗),它提供了訪問存儲在Hadoop分布式文件系統中的數據的最快方法。
為什么選擇Impala?
Impala通過使用標準組件(如HDFS,HBase,Metastore,YARN和Sentry)將傳統分析數據庫的SQL支持和多用戶性能與Apache Hadoop的可擴展性和靈活性相結合。
使用Impala,與其他SQL引擎(如Hive)相比,用戶可以使用SQL查詢以更快的方式與HDFS或HBase進行通信。
Impala可以讀取Hadoop使用的幾乎所有文件格式,如Parquet,Avro,RCFile。
Impala將相同的元數據,SQL語法(Hive SQL),ODBC驅動程序和用戶界面(Hue Beeswax)用作Apache Hive,為面向批量或實時查詢提供熟悉且統一的平臺。
與Apache Hive不同,Impala不基于MapReduce算法。 它實現了一個基于守護進程的分布式架構,它負責在同一臺機器上運行的查詢執行的所有方面。
因此,它減少了使用MapReduce的延遲,這使Impala比Apache Hive快。
Impala的優點
以下是Cloudera Impala的一些值得注意的優點的列表。
使用impala,您可以使用傳統的SQL知識以極快的速度處理存儲在HDFS中的數據。
由于在數據駐留(在Hadoop集群上)時執行數據處理,因此在使用Impala時,不需要對存儲在Hadoop上的數據進行數據轉換和數據移動。
使用Impala,您可以訪問存儲在HDFS,HBase和Amazon s3中的數據,而無需了解Java(MapReduce作業)。您可以使用SQL查詢的基本概念訪問它們。
為了在業務工具中寫入查詢,數據必須經歷復雜的提取 - 變換負載(ETL)周期。但是,使用Impala,此過程縮短了。加載和重組的耗時階段通過新技術克服,如探索性數據分析和數據發現,使過程更快。
Impala正在率先使用Parquet文件格式,這是一種針對數據倉庫場景中典型的大規模查詢進行優化的柱狀存儲布局。
Impala的功能
以下是cloudera Impala的功能 -
Impala可以根據Apache許可證作為開源免費提供。
Impala支持內存中數據處理,即,它訪問/分析存儲在Hadoop數據節點上的數據,而無需數據移動。
您可以使用Impala使用類SQL查詢訪問數據。
與其他SQL引擎相比,Impala為HDFS中的數據提供了更快的訪問。
使用Impala,您可以將數據存儲在存儲系統中,如HDFS,Apache HBase和Amazon s3。
您可以將Impala與業務智能工具(如Tableau,Pentaho,Micro策略和縮放數據)集成。
Impala支持各種文件格式,如LZO,序列文件,Avro,RCFile和Parquet。
Impala使用Apache Hive的元數據,ODBC驅動程序和SQL語法。
關系數據庫和Impala
二、Impala架構
Impala是在Hadoop集群中的許多系統上運行的MPP(大規模并行處理)查詢執行引擎。 與傳統存儲系統不同,impala與其存儲引擎解耦。 它有三個主要組件,即Impala daemon(Impalad),Impala Statestore和Impala元數據或metastore。
Impala daemon(Impalad)
Impala daemon(也稱為impalad)在安裝Impala的每個節點上運行。 它接受來自各種接口的查詢,如impala shell,hue browser等…并處理它們。
每當將查詢提交到特定節點上的impalad時,該節點充當該查詢的“協調器節點”。 Impalad還在其他節點上運行多個查詢。 接受查詢后,Impalad讀取和寫入數據文件,并通過將工作分發到Impala集群中的其他Impala節點來并行化查詢。 當查詢處理各種Impalad實例時,所有查詢都將結果返回到中央協調節點。
根據需要,可以將查詢提交到專用Impalad或以負載平衡方式提交到集群中的另一Impalad。
Impala 存儲的狀態
Impala有另一個稱為Impala State存儲的重要組件,它負責檢查每個Impalad的運行狀況,然后經常將每個Impala Daemon運行狀況中繼給其他守護程序。 這可以在運行Impala服務器或群集中的其他節點的同一節點上運行。
Impala State存儲守護進程的名稱為存儲的狀態。 Impalad將其運行狀況報告給Impala State存儲守護程序,即存儲的狀態。
在由于任何原因導致節點故障的情況下,Statestore將更新所有其他節點關于此故障,并且一旦此類通知可用于其他impalad,則其他Impala守護程序不會向受影響的節點分配任何進一步的查詢。
Impala元數據和元存儲
Impala元數據和元存儲是另一個重要組件。 Impala使用傳統的MySQL或PostgreSQL數據庫來存儲表定義。 諸如表和列信息和表定義的重要細節存儲在稱為元存儲的集中式數據庫中。
每個Impala節點在本地緩存所有元數據。 當處理極大量的數據和/或許多分區時,獲得表特定的元數據可能需要大量的時間。 因此,本地存儲的元數據緩存有助于立即提供這樣的信息。
當表定義或表數據更新時,其他Impala后臺進程必須通過檢索最新元數據來更新其元數據緩存,然后對相關表發出新查詢。
查詢處理接口
要處理查詢,Impala提供了三個接口,如下所示。
Impala-shell - 使用Cloudera VM設置Impala后,可以通過在編輯器中鍵入impala-shell命令來啟動Impala shell。 我們將在后續章節中更多地討論Impala shell。
Hue界面 - 您可以使用Hue瀏覽器處理Impala查詢。 在Hue瀏覽器中,您有Impala查詢編輯器,您可以在其中鍵入和執行impala查詢。 要訪問此編輯器,首先,您需要登錄到Hue瀏覽器
ODBC / JDBC驅動程序 - 與其他數據庫一樣,Impala提供ODBC / JDBC驅動程序。 使用這些驅動程序,您可以通過支持這些驅動程序的編程語言連接到impala,并構建使用這些編程語言在impala中處理查詢的應用程序。
查詢執行過程
每當用戶使用提供的任何接口傳遞查詢時,集群中的Impalads之一就會接受該查詢。 此Impalad被視為該特定查詢的協調程序。
在接收到查詢后,查詢協調器使用Hive元存儲中的表模式驗證查詢是否合適。 稍后,它從HDFS名稱節點收集關于執行查詢所需的數據的位置的信息,并將該信息發送到其他impalad以便執行查詢。
所有其他Impala守護程序讀取指定的數據塊并處理查詢。 一旦所有守護程序完成其任務,查詢協調器將收集結果并將其傳遞給用戶。
總結
以上是生活随笔為你收集整理的impala简介(大数据技术)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何快速学python
- 下一篇: SEO的艺术(原书第2版)