淺談大資料和hadoop家族

來源:互聯網
上載者:User

標籤:

按照時間的早晚從大資料出現之前的時代講到現在。暫時按一個城市來比喻吧,反正Landscape的意思也大概是”風景“的意思。

早在大資料概念出現以前就存在了各種各樣的關於數學、統計學、演算法、程式設計語言的研究、討論和實踐。這個時代,演算法以及各種數學知識作為建築的原料(比如鋼筋、磚塊),程式設計語言作為粘合劑(比如水泥)構成了一座座小房子(比如一個應用程式),形成了一小片一小片的村莊(比如一台伺服器)。這個時代村與村之間還沒有高速公路(GFS, HDFS, Flume, Kafka等),只有一條泥濘不好走的土路(比如RPC),經濟模式也是小作坊式的經濟。一開始互連網並不發達,網速也不快,這種老土的方式完全應付得來,可是隨著社交網路和智能手機的興起,改變了這一切。網站流量成百上千倍的提高,資料變得更加多樣化,電腦硬體效能無法按照摩爾定律穩定的提升,小村莊,小作坊生產的模式註定受到限制。人們需要更強大的模式...大資料應用領域總結來講分為離線計算和即時計算。隨著資料量的增加,OLTP模式已經難以勝任,於是OLAP逐漸成為主流。無論是即時計算還是離線計算,基本思想是相同的,即:分而治之。

起開始,人們以為只要有一個強大的中央資料庫,也就是在所有的村莊之間建一座輸送量巨大,並且相容並蓄(非關係型,NoSQL)的倉庫,用來中轉每個村莊生產的大量異質貨物就能夠拉動經濟的增長。可是沒過多久,人們就意識到這是一個too young to simple的想法,因為這個倉庫的大小也總是有上限的。

之後MapReduce的概念最早由google提出,用來解決大規模叢集協同運算的問題,既然一台電腦效能有限,何不將他們聯合起來?其野心勃勃,希望為每個村莊都建立一條”村村通“公路,也就是GFS了,就是GoogleDistributed File System的意思,將不同伺服器的硬碟串連起來,在外面看起來就好像一塊巨大的硬碟。然後構建與其上的MapReduce就是一座工廠調度每個村莊的勞動力和物資,讓這些村莊作為一個經濟體運轉起來。居民變得富裕起來了。
不過,富裕起來的只有”Google鎮“,世界的其他村鎮仍然過著原始的生活。這個時候雅虎和Apache的一幫人本著獨樂樂不如眾樂樂的精神,仿造google的思想,建立了HDFS(Hadoop Distributed File System,對應GFS)、Hadoop(對應google的MapReduce),並公開了全部的藍圖,供全世界免費使用。這樣整個世界到處都建立起來了工廠,人們變得富裕起來了。這個時代,Hadoop叫做大資料基礎設施。

俗話說:飽暖思淫慾,工廠的領導不滿足於村鎮工廠的粗放型生產,也不再想僱用那麼多的勞動力,所以Mahout、HBase、Hive、Pig應運而生,他們都是數控機床,加工中心,只需要幾名操作手就能夠讓整個工廠運轉起來,自此人們安居樂業,豐衣足食。

當然,少數更有野心的資本家,不滿足於現在的生產力,為了追求更高的利潤(這是資本主義的本質),開發了效率更高的系統Spark,可以10倍於Hadoop的速度生產產品,新的時代才剛剛拉開序幕...

HBase:是一個高可靠性、高效能、面向列、可伸縮的分布式儲存系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化資料集群。像Facebook,都拿它做大型即時應用 Facebook‘s New Realtime Analytics System: HBase to Process 20 Billion Events Per Day

Pig:Yahoo開發的,並行地執行資料流處理的引擎,它包含了一種指令碼語言,稱為Pig Latin,用來描述這些資料流。Pig Latin本身提供了許多傳統的資料操作,同時允許使用者自己開發一些自訂函數用來讀取、處理和寫資料。在LinkedIn也是大量使用。

Hive:Facebook領導的一個資料倉儲工具,可以將結構化的資料檔案映射為一張資料庫表,並提供完整的sql查詢功能,可以將sql語句轉換為MapReduce任務進行運行。其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計。像一些data scientist 就可以直接查詢,不需要學習其他編程介面。

Cascading/Scalding:Cascading是Twitter收購的一個公司技術,主要是提供資料管道的一些抽象介面,然後又推出了基於Cascading的Scala版本就叫Scalding。Coursera是用Scalding作為MapReduce的編程介面放在Amazon的EMR運行。

Zookeeper:一個分布式的,開放源碼的分布式應用程式協調服務,是Google的Chubby一個開源的實現。

Oozie:一個基於工作流程引擎的開源架構。由Cloudera公司貢獻給Apache的,它能夠提供對Hadoop MapReduce和Pig Jobs的任務調度與協調。

Azkaban: 跟上面很像,Linkedin開源的面向Hadoop的開源工作流程系統,提供了類似於cron 的管理工作。

Tez:Hortonworks主推的最佳化MapReduce執行引擎,與MapReduce相比較,Tez在效能方面更加出色。

hadoop vs spark Hadoop:

分布式批處理計算,強調批處理,常用於資料採礦、分析 Spark:是一個基於記憶體計算的開源的叢集計算系統,目的是讓資料分析更加快速, Spark 是一種與 Hadoop 相似的開源叢集計算環境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現得更加優越,換句話說,Spark 啟用了記憶體分布資料集,除了能夠提供互動式查詢外,它還可以最佳化迭代工作負載。 Spark 是在 Scala 語言中實現的,它將 Scala 用作其應用程式架構。

與 Hadoop 不同,Spark 和 Scala 能夠緊密整合,其中的 Scala 可以像操作本地集合對象一樣輕鬆地操作分布式資料集。 儘管建立 Spark 是為了支援分布式資料集上的迭代作業,但是實際上它是對 Hadoop 的補充,可以在 Hadoop 檔案系統中並行運行。通過名為Mesos的第三方叢集架構可以支援此行為。

Spark 由加州大學伯克利分校 AMP 實驗室 (Algorithms,Machines,and People Lab) 開發,可用來構建大型的、低延遲的資料分析應用程式。

雖然 Spark 與 Hadoop 有相似之處,但它提供了具有有用差異的一個新的叢集計算架構。首先,Spark 是為叢集計算中的特定類型的工作負載而設計,即那些在並行操作之間重用工作資料集(比如機器學習演算法)的工作負載。為了最佳化這些類型的工作負載,Spark 引進了記憶體叢集計算的概念,可在記憶體叢集計算中將資料集緩衝在記憶體中,以縮短訪問延遲.

在大資料處理方面相信大家對hadoop已經耳熟能詳,基於GoogleMap/Reduce來實現的Hadoop為開發人員提供了map、reduce原語,使並行批次程式變得非常地簡單和優美。

Spark提供的資料集操作類型有很多種,不像Hadoop只提供了Map和Reduce兩種操作。比如map,filter, flatMap,sample, groupByKey, reduceByKey, union,join, cogroup,mapValues, sort,partionBy等多種操作類型,他們把這些操作稱為Transformations。同時還提供Count,collect, reduce, lookup, save等多種actions。

這些多種多樣的資料集操作類型,給上層應用者提供了方便。各個處理節點之間的通訊模型不再像Hadoop那樣就是唯一的Data Shuffle一種模式。使用者可以命名,物化,控制中間結果的分區。

引自於知乎

淺談大資料和hadoop家族

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.