跟小菜一塊兒學大數據之工具篇(二)

       今天我們接着聊大數據入門之工具篇,爲了提升學習的熱情,此次我們以一種需求驅動的方式來介紹剩下的幾個工具。做爲剛剛接觸大數據,而尚未實戰的你,可能會想,雖然HBase適合有不少優點,但他畢竟得依附於大數據平臺,也就是說沒有大數據平臺那麼HBase也無從談起,而做爲業務庫數據,通常普通的小型系統爲了作到數據的實效性每每會將數據存放在常見的關係型數據庫中(順便提一句,對於大型的系統有時也會選擇直接將數據存放在大數據平臺,這時的實效性就須要用到一些像Spark之類的專門處理大數據流的工具,這個後面聊),那麼問題就來了,既然業務數據是在關係型數據庫,而處理(好比最多見的根據業務數據在大數據平臺上作一些聚類算法)大數據平臺上,那勢必就須要有一個橋樑來連接他們,這個橋樑就是今天要聊得第一個工具,即Sqoop。mysql

        Sqoop(發音:skup)是一款開源的工具,主要用於在Hadoop(Hive)與傳統的數據庫(mysql、postgresql...)間進行數據的傳遞,能夠將一個關係型數據庫(例如 : MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也能夠將HDFS的數據導進到關係型數據庫中。其功能能夠用下圖形象化的表示。算法

 

Sqoop常見的用法包括兩種,一種是以命令行方式執行數據的導入導出,另外一種是以建立job的方式,兩種的區別能夠想象成shell命令和shell腳本的關係,即命令行只能執行一次, 下次執行還須要重寫,而建立job後能夠重複的調用該job,因爲是初期入門,因此我們只簡單的瞭解一下各類工具,至於具體工具的用法會在後面結合具體的項目詳細描述,在這裏就不作過多的贅述了。sql

         在經過上面介紹的Sqoop將數據導入到大數據平臺了,不少朋友可能又會問了,根據前面的介紹在大數據平臺下用Hive對數據查詢的話,最大的優點是能夠自動將sql轉換爲map任務去執行,這對於執行ETL操做是優點,但對於臨時數據的核對這卻偏偏成爲最大的劣勢,由於他會將任意一個,哪怕是很簡單的sql都解讀爲Map-Reduce的形式去執行,這樣當咱們只須要執行一個簡單的查詢的時候就須要浪費不少時間等着他去轉換,這時咱們就想要一種既能夠在大數據平臺下工做,又能明顯提升效率的sql工具,這時就該 Impala 登場了。shell

        Impala是Cloudera公司主導開發的新型查詢系統,它提供SQL語義,能查詢存儲在Hadoop的HDFS和HBase中的PB級大數據。簡單的講他就是專門解決大數據平臺下數據實時交互的問題。Impala沒有再使用緩慢的 Map-Reduce處理模式,而是經過使用與並行多節點的關係數據庫中相似的分佈式查詢引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分組成),能夠直接從HDFS或HBase中用SELECT、JOIN和統計函數查詢數據,從而大大下降了延遲。因此,Impala的最大特色也是最大賣點就是它的快速。下面列舉一下impala主要的優勢。數據庫

一、Impala不須要把中間結果寫入磁盤,省掉了大量的I/O開銷。json

二、省掉了MapReduce做業啓動的開銷。MapReduce啓動task的速度很慢(默認每一個心跳間隔是3秒鐘),Impala直接經過相應的服務進程來進行做業調度,速度快了不少。微信

三、Impala徹底拋棄了MapReduce這個不太適合作SQL查詢的範式,而是像Dremel同樣借鑑了MPP並行數據庫的思想另起爐竈,所以可作更多的查詢優化,從而省掉沒必要要的shuffle、sort等開銷。網絡

四、經過使用LLVM來統一編譯運行時代碼,避免了爲支持通用編譯而帶來的沒必要要開銷。數據結構

五、用C++實現,作了不少有針對性的硬件優化,例如使用SSE指令。分佈式

六、使用了支持Data locality的I/O調度機制,儘量地將數據和計算分配在同一臺機器上進行,減小了網絡開銷。

       最後再簡單的介紹一個經常使用的基於分佈式文件存儲的數據庫MongoDB,他 是一個基於分佈式文件存儲的數據庫。由C++語言編寫。旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。他支持的數據結構很是鬆散,是相似json的bson格式,所以能夠存儲比較複雜的數據類型。Mongo最大的特色是他支持的查詢語言很是強大,其語法有點相似於面向對象的查詢語言,幾乎能夠實現相似關係數據庫單表查詢的絕大部分功能,並且還支持對數據創建索引。在這裏爲了更好的理解MongoDB,舉一個數據結構出來,以供參考。

        至此,大數據平臺的入門類工具基本都介紹完了,鑑因而剛開始,只跟你們聊一些概念化的東西,至關因而對整個大數據平臺的搭建以及使用有一個初步的概念,爲了更好的理解這些工具,後面我們會經過一個實戰項目,更具體的說明一下這些工具的具體用法以及他們在實際運用中是如何緊密配合協做的。

掃碼關注微信公衆號,與小菜一塊兒進步,共同成長。

相關文章
相關標籤/搜索