大數(shù)據(jù)和開源查詢和分析框架
阿帕奇Hive

Apache Hive是基于Hadoop生態(tài)系統(tǒng)的旗艦數(shù)據(jù)倉庫工具。它不僅將結構化的數(shù)據(jù)文件映射到數(shù)據(jù)庫表,而且還提供SQL(HQL)查詢功能(例如SQL語句)并將SQL語句轉換為MapReduce任務以供執(zhí)行。
它是由Facebook開發(fā)的,于2008年進入Apache孵化器,并于2010年9月成為優(yōu)秀Apache項目。背后的原理是利用熟悉的SQL模型來處理HDFS(Hadoop)上的數(shù)據(jù)。借助Hive,學習成本低,并且可以通過HQL語句快速轉換簡單的MapReduce統(tǒng)計信息,而無需擔心開發(fā)其他特殊的MapReduce應用程序。
Hive非常方便地在整個企業(yè)范圍內對數(shù)據(jù)倉庫進行建模和構建,而Hive SQL模型則可以對數(shù)據(jù)倉庫中的數(shù)據(jù)進行統(tǒng)計和分析。
但是,Hive的底層被轉換為MR,而MR的改組依賴于系統(tǒng)磁盤,因此它只能處理離線分析,這效率相對較低,在開發(fā)人員社區(qū)中不可接受。Hive通常使用Hive在整個組織中構建數(shù)據(jù)倉庫。
Apache SparkSQL

Apache SparkSQL是主要的Spark組件構建,用于處理結構化數(shù)據(jù)。Spark SQL于2014年發(fā)布,并吸收了Hive-on-Spark項目,該項目現(xiàn)在是使用最廣泛的Spark模塊。它提供了一個稱為DataFrames的可編程抽象數(shù)據(jù)模型,并被視為分布式SQL查詢引擎。
SparkSQL取代了Hive的查詢引擎,但也與hive系統(tǒng)兼容。關于Spark RDD API,Spark SQL提供的接口將為Spark提供有關結構化數(shù)據(jù)和計算的更多信息。SparkSQL最底層是Spark Core,它使您可以輕松地在不同的SQL和API之間切換。
Presto

Presto是一個分布式數(shù)據(jù)查詢引擎,但從不存儲數(shù)據(jù)本身Presto將提供對多個數(shù)據(jù)源的訪問,并支持跨不同數(shù)據(jù)源的級聯(lián)查詢。它是一個分布式SQL交互式查詢引擎,它也在2012年由Facebook開發(fā),并于2013年開源。
Presto是一種OLAP工具,適用于海量數(shù)據(jù)的復雜分析,但不適用于OLTP方案。Presto僅提供計算和分析功能,而不能用作數(shù)據(jù)庫系統(tǒng)。
就Hive而言,Presto是一種低延遲,高并發(fā)性的內存計算引擎。它的執(zhí)行效率比Hive高得多。它的MPP(大規(guī)模并行處理)模型可以處理PB級數(shù)據(jù)。Presto的原理只是將一些數(shù)據(jù)放入內存中進行計算,完成后將其取出,然后再次處理其他一些數(shù)據(jù),例如循環(huán)和類似于管道處理模式。
Apache Kylin

Apache Kylin是針對Hadoop生態(tài)系統(tǒng)的開源分布式分析引擎。其針對Hadoop / Spark的SQL查詢接口和OLAP功能廣泛支持超大規(guī)模數(shù)據(jù)。它使用基于多維數(shù)據(jù)集的預計算技術,該技術可快速高效地處理大數(shù)據(jù)SQL查詢。Kylin由eBay開發(fā),并于2014年11月進入Apache孵化器。
凱林(Kylin)的出現(xiàn)是為了解決分析需要的TB數(shù)據(jù)。它可以在蜂巢中預先計算數(shù)據(jù),并使用Hadoop的MapReduce框架實施。它可以在幾秒鐘內查詢大量的Hive表。
麒麟最關鍵的兩個過程是
- 多維數(shù)據(jù)集的預計算過程,并將SQL查詢轉換為多維數(shù)據(jù)集。
- 此外,在查詢時要預先計算匯總結果并同時獲得查詢結果,避免直接掃描。
Apache Impala
與其他框架相比,它是用于大數(shù)據(jù)的實時交互式SQL查詢引擎。Apache Impala是由Cloudera開發(fā)的SQL MPP查詢工具,受Google Dremel的啟發(fā),后來于2012年10月開源,并于2017年11月28日成為優(yōu)秀項目。
Impala使用完全開放且不同的形式集成到Hadoop生態(tài)系統(tǒng)中,從而使其使用者可以使用SQL來處理Hadoop生態(tài)系統(tǒng)中的大量數(shù)據(jù)。
目前,它支持多種類型的存儲選項,例如:
- Apache Kudu
- 亞馬遜S3
- 微軟ADLS
- 本地存儲
它誕生時僅支持對大量HDFS數(shù)據(jù)的交互式分析。它的靈活性和領先的分析數(shù)據(jù)庫性能促進了在全球企業(yè)中的大量部署。
Ir為企業(yè)業(yè)務提供BI和交互式SQL高效分析,并允許第三方生態(tài)系統(tǒng)快速增長。
Apache Druid

Apache Druid是用于實時數(shù)據(jù)分析的開源工具,旨在快速處理大規(guī)模數(shù)據(jù)。它的分布式實時分析通過快速查詢和大規(guī)模數(shù)據(jù)集解決了復雜的任務。
2018年2月28日進入Apache孵化器。它提供了以交互方式訪問數(shù)據(jù)的功能。進入Druid系統(tǒng)后,可以實時攝取數(shù)據(jù)并立即進行驗證。輸入的數(shù)據(jù)a幾乎是不可變的。通常是基于時間順序的事實事件。
Elastic Search
它是一個分布式,可伸縮的實時搜索和分析引擎。它由Shay Banon于2010年建造,后來開源。它具有全文搜索引擎的功能,并具有RESTful Web界面的分布式多用戶支持。
ES的工作原理主要分為以下幾個步驟。
- 首先,用戶將數(shù)據(jù)輸入ES數(shù)據(jù)庫
- 然后利用分詞控制器對相應的句子進行分段
- 存儲細分結果的權重。
當用戶搜索特定數(shù)據(jù)時,將根據(jù)權重對結果進行排名和評分,然后返回給用戶。ES是完全用Java開發(fā)的,并且是當前比較受歡迎的企業(yè)搜索引擎。
它穩(wěn)定,可靠,快速且易于安裝,專為在云計算環(huán)境中使用而設計。
官方客戶提供以下語言版本
- Java
- .NET(C#)
- PHP
- Python
- Apache Groovy
- Ruby
Apache HAWQ

Apache HAWQ(帶有查詢的Hadoop)是Hadoop本機并行SQL分析引擎。它是Pivotal在2012年推出的具有商業(yè)許可的高性能SQL引擎。
它是Hadoop的本機SQL查詢引擎,結合了MPP數(shù)據(jù)庫的技術優(yōu)勢,巨大的可擴展性和Hadoop的便利性。
經驗證,HAWQ的OLAP性能是Hive和Impala的4倍以上。它非常適合在Hadoop平臺上快速構建數(shù)據(jù)倉庫系統(tǒng)。
HAWQ具有以下功能,例如
- 大規(guī)模并行處理
- 完全的SQL兼容性,
- 支持存儲過程和事務。
它也可以輕松地與其他開源數(shù)據(jù)挖掘庫(如MADLib)集成。
Apache Lucene

Apache Lucene是基于Java的開源全文搜索引擎工具箱。它是功能比較強大且被廣泛采用的搜索引擎。Lucene不是完整的搜索引擎,而是全文搜索引擎體系結構,使用此原型,您可以制造其他搜索引擎產品。它是一種全文本搜索引擎體系結構,可提供完整的索引創(chuàng)建和查詢索引以及文本分析引擎。
Lucene的目標是為軟件開發(fā)人員提供一個簡單易用的工具包,以促進在所需系統(tǒng)中實現(xiàn)全文搜索功能,甚至基于此原型構建完整的全文搜索引擎。它提供了一個簡單但功能強大的應用程序編程接口(API),可以進行全文索引和搜索。
Apache Solr

Apache Solr是一個基于Apache Lucene架構的開源企業(yè)搜索平臺。它于2004年發(fā)布,于2007年1月17日成為Apache優(yōu)秀項目。
它的高可靠性,可伸縮性和容錯能力提供分布式索引,復制和負載平衡查詢,自動故障轉移,恢復和集中式配置。它是一個完全用Java語言編寫的獨立全文搜索服務器,并在Servlet容器環(huán)境(Apache Tomcat或Jetty)中運行。
Solr依靠Lucene Java搜索庫進行全文索引和搜索,并使用HTTP / XML和JSON API執(zhí)行類似REST的操作。Solr強大的外部配置功能使其無需使用Java語言即可進行調整,以適合多種類型的軟件。Solr支持許多大型Internet企業(yè)站點的搜索和導航功能。
Apache Phoenix

Apache Phoenix是基于HBase的SQL類型框架。Apache Phoenix JDBC API取代了傳統(tǒng)的HBase客戶端API的需求,它還創(chuàng)建表,插入數(shù)據(jù)和查詢HBase數(shù)據(jù)。基本上,這是Java中間層,允許開發(fā)人員使用HBase中的數(shù)據(jù)表,例如關系數(shù)據(jù)庫(例如,通過Phoenix的MySQL)。
Phoenix會將SQL查詢語句編譯為一系列Scan操作,并生成JDBC結果集并將其返回給服務使用者。它使您能夠使用基礎層,例如HBase協(xié)處理器和過濾器。無論數(shù)據(jù)響應時間以秒為單位,小規(guī)模查詢都會以毫秒為單位進行響應。