Ⅰ olap和sql on hadoop是一回事嗎
OLAP(聯機分析處理)。 什麼是聯機分析處理(OLAP) 聯機分析處理 (OLAP) 的概念最早是由關系資料庫之父E.F.Codd於1993年提出的,他同時提出了關於OLAP的12條准則。OLAP的提出引起了很大的反響,OLAP作為一類產品同聯機事務處理 (OLTP) 明顯區
Ⅱ Oracle Sql 查詢優化
收集表和索引的統計信息,如
analysis table EF_EXPENSES EFEP compute statistics;
analysis index index_name compute statistics;
索引即便建了,也得看你的索引建的對不對,查詢有沒有用到這個索引,這個主要就看執行計劃了,看執行計劃有沒有用到 這些個索引
Ⅲ Spark連接到MySQL並執行查詢為什麼速度會快
在已有的 MySQL 伺服器之上使用 Apache Spark (無需將數據導出到 Spark 或者 Hadoop 平台上),這樣至少可以提升 10 倍的查詢性能。使用多個 MySQL 伺服器(復制或者 Percona XtraDB Cluster)可以讓我們在某些查詢上得到額外的性能提升。你也可以使用 Spark 的緩存功能來緩存整個 MySQL 查詢結果表。
思路很簡單:Spark 可以通過 JDBC 讀取 MySQL 上的數據,也可以執行 SQL 查詢,因此我們可以直接連接到 MySQL 並執行查詢。那麼為什麼速度會快呢?對一些需要運行很長時間的查詢(如報表或者BI),由於 Spark 是一個大規模並行系統,因此查詢會非常的快。MySQL 只能為每一個查詢分配一個 CPU 核來處理,而 Spark 可以使用所有集群節點的所有核。在下面的例子中,我們會在 Spark 中執行 MySQL 查詢,這個查詢速度比直接在 MySQL 上執行速度要快 5 到 10 倍。
另外,Spark 可以增加「集群」級別的並行機制,在使用 MySQL 復制或者 Percona XtraDB Cluster 的情況下,Spark 可以把查詢變成一組更小的查詢(有點像使用了分區表時可以在每個分區都執行一個查詢),然後在多個 Percona XtraDB Cluster 節點的多個從伺服器上並行的執行這些小查詢。最後它會使用 map/rece 方式將每個節點返回的結果聚合在一起行程完整的結果。
這篇文章跟我之前文章 「Airlines On-Time Performance」 所使用的資料庫是相同的。瓦迪姆創建了一些腳本可以方便的下載這些數據並上傳到 MySQL 資料庫。腳本的下載地址請看 這里。同時我們這次使用的是 2016年7月26日發布的Apache Spark 2.0。
Ⅳ hadoop中的pig與hive的區別各自有什麼優勢
Pig是一種編程語言,它簡化了Hadoop常見的工作任務。Pig可載入數據、表達轉換數據以及存儲最終結果。Pig內置的操作使得半結構化數據變得有意義(如日誌文件)。同時Pig可擴展使用Java中添加的自定義數據類型並支持數據轉換。
Hive在Hadoop中扮演數據倉庫的角色。Hive添加數據的結構在HDFS(hive superimposes structure on data in HDFS),並允許使用類似於SQL語法進行數據查詢。與Pig一樣,Hive的核心功能是可擴展的。
Hive更適合於數據倉庫的任務,Hive主要用於靜態的結構以及需要經常分析的工作。Hive與SQL相似促使其成為Hadoop與其他BI工具結合的理想交集。Pig賦予開發人員在大數據集領域更多的靈活性,並允許開發簡潔的腳本用於轉換數據流以便嵌入到較大的應用程序。Pig相比Hive相對輕量,它主要的優勢是相比於直接使用Hadoop Java APIs可大幅削減代碼量。
本質上說說Pig與Hive。
經過Pig Latin的轉換後變成了一道MapRece的作業,通過MapRece多個線程,進程或者獨立系統並行執行處理的結果集進行分類和歸納。Map() 和 Rece() 兩個函數會並行運行,即使不是在同一的系統的同一時刻也在同時運行一套任務,當所有的處理都完成之後,結果將被排序,格式化,並且保存到一個文件。Pig利用MapRece將計算分成兩個階段,第一個階段分解成為小塊並且分布到每一個存儲數據的節點上進行執行,對計算的壓力進行分散,第二個階段聚合第一個階段執行的這些結果,這樣可以達到非常高的吞吐量,通過不多的代碼和工作量就能夠驅動上千台機器並行計算,充分的利用計算機的資源,打消運行中的瓶頸。
也就是說,Pig最大的作用就是對maprece演算法(框架)實現了一套shell腳本 ,類似我們通常熟悉的SQL語句,在Pig中稱之為Pig Latin,在這套腳本中我們可以對載入出來的數據進行排序、過濾、求和、分組(group by)、關聯(Joining),Pig也可以由用戶自定義一些函數對數據集進行操作,也就是傳說中的UDF(user-defined functions)。
結論性的閱讀感覺是:Pig用來寫一些即時腳本吧,比如領導問你要份數據,半個小時要出來之類;Hive嘛,就是一個產品經理過來,問這個啥回事?於是你Hive一下,一個簡潔的類SQL語句...Done!
Ⅳ Spark Streaming性能測試有什麼好的benchmark嗎
科普Spark,Spark是什麼,如何使用Spark
1.Spark基於什麼演算法的分布式計算(很簡單)
2.Spark與MapRece不同在什麼地方
3.Spark為什麼比Hadoop靈活
4.Spark局限是什麼
5.什麼情況下適合使用Spark
什麼是Spark
Spark是UC Berkeley AMP lab所開源的類Hadoop MapRece的通用的並行計算框架,Spark基於map rece演算法實現的分布式計算,擁有Hadoop MapRece所具有的優點;但不同於MapRece的是Job中間輸出和結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用於數據挖掘與機器學習等需要迭代的map rece的演算法。其架構如下圖所示:
Spark與Hadoop的對比
Spark的中間數據放到內存中,對於迭代運算效率更高。
Spark更適合於迭代運算比較多的ML和DM運算。因為在Spark裡面,有RDD的抽象概念。
Spark比Hadoop更通用
Spark提供的數據集操作類型有很多種,不像Hadoop只提供了Map和Rece兩種操作。比如map, filter, flatMap, sample, groupByKey, receByKey, union, join, cogroup, mapValues, sort,partionBy等多種操作類型,Spark把這些操作稱為Transformations。同時還提供Count, collect, rece, lookup, save等多種actions操作。
這些多種多樣的數據集操作類型,給給開發上層應用的用戶提供了方便。各個處理節點之間的通信模型不再像Hadoop那樣就是唯一的Data Shuffle一種模式。用戶可以命名,物化,控制中間結果的存儲、分區等。可以說編程模型比Hadoop更靈活。
不過由於RDD的特性,Spark不適用那種非同步細粒度更新狀態的應用,例如web服務的存儲或者是增量的web爬蟲和索引。就是對於那種增量修改的應用模型不適合。
容錯性
在分布式數據集計算時通過checkpoint來實現容錯,而checkpoint有兩種方式,一個是checkpoint data,一個是logging the updates。用戶可以控制採用哪種方式來實現容錯。
可用性
Spark通過提供豐富的Scala, Java,Python API及互動式Shell來提高可用性。
Spark與Hadoop的結合
Spark可以直接對HDFS進行數據的讀寫,同樣支持Spark on YARN。Spark可以與MapRece運行於同集群中,共享存儲資源與計算,數據倉庫Shark實現上借用Hive,幾乎與Hive完全兼容。
Spark的適用場景
Spark是基於內存的迭代計算框架,適用於需要多次操作特定數據集的應用場合。需要反復操作的次數越多,所需讀取的數據量越大,受益越大,數據量小但是計算密集度較大的場合,受益就相對較小(大資料庫架構中這是是否考慮使用Spark的重要因素)
由於RDD的特性,Spark不適用那種非同步細粒度更新狀態的應用,例如web服務的存儲或者是增量的web爬蟲和索引。就是對於那種增量修改的應用模型不適合。總的來說Spark的適用面比較廣泛且比較通用。
運行模式
本地模式
Standalone模式
Mesoes模式
yarn模式
Spark生態系統
Shark ( Hive on Spark): Shark基本上就是在Spark的框架基礎上提供和Hive一樣的H iveQL命令介面,為了最大程度的保持和Hive的兼容性,Shark使用了Hive的API來實現query Parsing和 Logic Plan generation,最後的PhysicalPlan execution階段用Spark代替Hadoop MapRece。通過配置Shark參數,Shark可以自動在內存中緩存特定的RDD,實現數據重用,進而加快特定數據集的檢索。同時,Shark通過UDF用戶自定義函數實現特定的數據分析學習演算法,使得SQL數據查詢和運算分析能結合在一起,最大化RDD的重復使用。
Spark streaming: 構建在Spark上處理Stream數據的框架,基本的原理是將Stream數據分成小的時間片斷(幾秒),以類似batch批量處理的方式來處理這小部分數據。Spark Streaming構建在Spark上,一方面是因為Spark的低延遲執行引擎(100ms+)可以用於實時計算,另一方面相比基於Record的其它處理框架(如Storm),RDD數據集更容易做高效的容錯處理。此外小批量處理的方式使得它可以同時兼容批量和實時數據處理的邏輯和演算法。方便了一些需要歷史數據和實時數據聯合分析的特定應用場合。
Bagel: Pregel on Spark,可以用Spark進行圖計算,這是個非常有用的小項目。Bagel自帶了一個例子,實現了Google的PageRank演算法。
End.
Ⅵ SQL-on-Hadoop技術與資料庫技術的差異在哪裡
主要是方向的差異。
關系資料庫技術建立在關系數據模型之上,是主要用來存儲結構化數據並支持數據的插入、查詢、更新、刪除等操作的資料庫。Hadoop技術為面向大數據分析和處理的並行計算模型。兩者反向不一樣。
簡介:
資料庫是「按照數據結構來組織、存儲和管理數據的倉庫」。是一個長期存儲在計算機內的、有組織的、可共享的、統一管理的大量數據的集合。
資料庫是存放數據的倉庫。它的存儲空間很大,可以存放百萬條、千萬條、上億條數據。但是資料庫並不是隨意地將數據進行存放,是有一定的規則的,否則查詢的效率會很低。當今世界是一個充滿著數據的互聯網世界,充斥著大量的數據。
即這個互聯網世界就是數據世界。數據的來源有很多,比如出行記錄、消費記錄、瀏覽的網頁、發送的消息等等。除了文本類型的數據,圖像、音樂、聲音都是數據。
Ⅶ 星環 hadoop 是開源的嗎
Hadoop等大數據分析技術也是對海量數據進行大規模的數據分析和深度挖掘,也包含互動式聯機查詢和統計報表類應用,同時大數據的數據質量也較低,數據分布是真實而不均勻的。
因此TPC-DS成為客觀衡量多個不同Hadoop版本以及SQLonHadoop技術的最佳測試集。
Ⅷ 如何選擇基於Hadoop的SQL引擎
在Hadoop和NoSQL技術中,人們逐漸把焦點轉移到了Hadoop上的SQL引擎。今天,可選擇的引擎越來越多,反倒讓組織陷入了選擇困境。本文將羅列幾點選擇引擎時需要考量的因素,供您參考。
基於Hadoop的SQL技術一大優勢在於可以使用熟悉的SQL語言,訪問存儲在Hadoop中的大數據集。
用戶幾乎可以應用任何報表或工具來分析和研究數據。在Hadoop上還不能應用SQL的時候,要訪問Hadoop中的大數據集,需要十分了解Hadoop
的技術應用程序界面,比如HDFS、MapRece或HBase。現在有了基於Hadoop的SQL引擎,每個人都可以使用他喜歡的工具了。對企業而
言,相當於Hadoop開放了更大的窗口,有更多的企業可以應用Hadoop處理大數據。
有哪些技術可以選擇
第一個基於Hadoop的SQL引擎是Apache Hive,不過過去一年裡,有很多新產品出現,包括CitusDB、Cloudera
Impala、Concurrent Lingual、Hadapt、InfiniDB、 JethroData、MammothDB、Apache
Drill、MemSQL、Pivotal HawQ、Progress DataDirect、ScleraDB、Simba和Splice
Machine。
除了上述引擎之外,數據虛擬化伺服器也應在此列,因為它們對Hadoop數據實現了SQL訪問。虛擬化伺服器可以訪問所有數據源,包括Hadoop,不同的數據源都可以集成。數據虛擬化伺服器有很多,包括Cirro Data Hub、Cisco/Composite
當然,還有一些SQL資料庫管理系統也支持多種數據源。它們在自己的SQL資料庫或Hadoop中存儲數據,提供對Hadoop數據的SQL訪問。比如
EMC/Greenplum UAP、 HP Vertica (on MapR)、Microsoft PolyBase、Actian
ParAccel 和Teradata Aster Database (via SQL-H)。
這么多基於Hadoop的SQL工具可以使用,可以說是讓組織眼花繚亂。那麼該如何選擇呢?它們彼此的差別又在哪呢?
事實上,不同的技術之間差別很大,比如說,CitusDB知道數據存儲在哪裡,可以更快地訪問數據;JethroData存儲索引,可以直接訪問數據;Splice Machine提供交易型SQL界面。
要選擇正確的技術,需要比對細節。以下是具體的考慮因素:
SQL語言
支持的SQL語言越多,能使用的應用程序也就越多。並且,支持的語言越豐富,Hadoop能運行的查詢程序就越多,應用和報表工具要做的就越少。
節點連接
在大表上快速有效地執行節點連接並不容易,尤其是在SQL引擎不知道數據存儲在哪的情況下。效率低下的連接過程會導致大量的I/O,以及不同節點之間巨大的數據傳輸,最終影響處理速度。
非結構化數據
SQL是為結構化數據設
計的。表中的每一條記錄都位於同一列,每一列都有同樣的屬性。但在大數據時代,並不是所有的數據都是結構化的。Hadoop文件中可能包含嵌套的數據、可
變的數據(具有層級結構)、無模式的數據和自我描述的數據。基於Hadoop的SQL引擎必須能夠把所有數據都轉換為關系數據,並優化這些數據之間的查
詢。
存儲模式
Hadoop支持一些標准存儲格式,比如Parquet、Avro和ORCFile。基於Hadoop的SQL技術使用的格式越多,其他引擎和技術能夠讀取的格式也就越多。這極大地減少了復制數據的工作。
用戶定義函數
要在SQL上執行復雜的分析函數,比如高斯判別分析和購物籃分析等,很重要的前提是SQL對該函數的支持。這樣的函數被稱為用戶定義函數(UDF)。基於Hadoop的SQL引擎需要能夠在多節點上分部執行用戶定義函數。
多用戶工作負載
還需要考量的一個因素是,引擎應該如何在不同的查詢和不同類型的查詢之間劃分資源。比如,不同應用程序的查詢有不同的處理優先順序;需要運行較長時間的查詢
應該讓位於需要立即處理的查詢;如果計劃外的或資源密集型的查詢佔用很多資源的話,應該被取消或暫停查詢。基於Hadoop的SQL技術需要更加智能的工
作負載管理。
數據聯合
並不是所有的數據都存儲在Hadoop中。大部分企業數據還存儲在其他數據源中,比如SQL資料庫。基於Hadoop的SQL引擎需要支持存儲在不同類型數據源中的數據的連接。換言之,它必須支持數據聯合。
應用Hadoop的企業部署SQL引擎是大勢所趨。企業在選擇不同技術的時候,希望能考慮到上述因素。
Ⅸ hadoop用postgresql資料庫嗎
您好,1)用戶實用程序:
createdb 創建一個新的PostgreSQL的資料庫(和SQL語句:CREATE DATABASE 相同)
createuser 創建一個新的PostgreSQL的用戶(和SQL語句:CREATE USER 相同)
dropdb 刪除資料庫
dropuser 刪除用戶
pg_mp 將PostgreSQL資料庫導出到一個腳本文件
pg_mpall 將所有的PostgreSQL資料庫導出到一個腳本文件
pg_restore 從一個由pg_mp或pg_mpall程序導出的腳本文件中恢復PostgreSQL資料庫
psql 一個基於命令行的PostgreSQL互動式客戶端程序
vacuumdb 清理和分析一個PostgreSQL資料庫,它是客戶端程序psql環境下SQL語句VACUUM的shell腳本封裝,二者功能完全相同
(2)系統實用程序
initdb 創建一個用於存儲資料庫的PostgreSQL數據目錄,並創建預定義的模板資料庫template0和template1,生成共享目錄表 catalog;此程序通常只在安裝PostgreSQL時運行一次
initlocation 創建一個輔助的PostgreSQL資料庫存儲區域
ipcclean 從停止的PostgreSQL伺服器中清除共享內在和孤立信號標志
pg_ctl 啟動、停止、重啟PostgreSQL服務(比如:pg_ctl start 啟動PostgreSQL服務,它和service postgresql start相同)
pg_controldata 顯示PostgreSQL服務的內部控制信息
postgres PostgreSQL單用戶模式的資料庫服務
postmaster PostgreSQL多用戶模式的資料庫服務
4.這裡面最重要的是psql這個客戶端程序最為重要。啟用客戶端程序psql的方法是:
切換到PostgreSQL預定義的資料庫超級用戶postgres,啟用客戶端程序psql,並連接到自己想要的資料庫,比如說:
psql template1
出現以下界面,說明已經進入到想要的資料庫,可以進行想要的操作了。
template1=#
5.在資料庫中的一些命令:
template1=# \l 查看系統中現存的資料庫
template1=# \q 退出客戶端程序psql
template1=# \c 從一個資料庫中轉到另一個資料庫中,如template1=# \c sales 從template1轉到sales
template1=# \dt 查看錶
template1=# \d 查看錶結構
template1=# \di 查看索引
6.要注意隨時對資料庫進行清理、收回磁碟空間並更新統計信息,使用下面的命令就搞定!
vaccumdb -d sales -z
-a 對所有的資料庫操作
-z 保證不斷地刪除失效的行,節約磁碟空間,將統計信息更新為最近的狀態
7.PostgreSQL用戶認證
PostgreSQL數據目錄中的pg_hba.conf的作用就是用戶認證,可以在/var/lib/pgsql/data中找到。
有以下幾個例子可以看看:
(1)允許在本機上的任何身份連接任何資料庫
TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local all all trust(無條件進行連接)
(2)允許IP地址為192.168.1.x的任何主機與資料庫sales連接
TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host sales all 192.168.1.0 255.255.255.0 ident sameuser(表明任何操作系統用戶都能夠以同名資料庫用戶進行連接)
8.看了那麼多,來一個完整的創建PostgreSQL資料庫用戶的示例吧
(1)進入PostgreSQL高級用戶
(2)啟用客戶端程序,並進入template1資料庫
psql template1
(3)創建用戶
template1=# CREATE USER hellen WITH ENCRYPED PASSWORD'zhenzhen'
(4)因為設置了密碼,所以要編輯pg_hba.conf,使用戶和配置文件同步。
在原有記錄上面添加md5
local all hellen md5
(4)使用新用戶登錄資料庫
template1=# \q
psql -U hellen -d template1
PS:在一個資料庫中如果要切換用戶,要使用如下命令:
template1=# \!psql -U tk -d template1
9.設定用戶特定的許可權
還是要用例子來說明:
創建一個用戶組:
sales=# CREATE GROUP sale;
添加幾個用戶進入該組
sales=# ALTER GROUP sale ADD USER sale1,sale2,sale3;
授予用戶級sale針對表employee和procts的SELECT許可權
sales=# GRANT SELECT ON employee,procts TO GROUP sale;
在sale中將用戶user2刪除
sales=# ALTER GROP sale DROP USER sale2;
10.備份資料庫
可以使用pg_mp和pg_mpall來完成。比如備份sales資料庫:
pg_mp sales>/home/tk/pgsql/backup/1.bak