大數(shù)據(jù)和開(kāi)源查詢(xún)和分析框架
阿帕奇Hive

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

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

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

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

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

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

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

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

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