摘要: 大數據,無論是從產業上,還是從技術上來看,都是目前的發展熱點。在中國,政府控制著80%的數據,剩下的多由“BAT”這樣的大公司擁有,中小企業如何構建自己的大數據系統?其他企業如何建設自己的大數據系統? 推薦兩大應用最廣泛、國人認知最多的Apache開源大數據框架系統:Spark Hadoop......
▲(來源:36大數據)
Spark:速度快、易於使用 Spark以性能見長,但是它也因易用性而小有名氣,原因是它隨帶易於使用的API,支持Scala(原生語言)、Java、Python和Spark SQL。Spark SQL非常類似於SQL 92,所以幾乎不需要經歷一番學習,馬上可以上手。 Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的並行計算框架,Spark基於map reduce算法實現的分佈式計算,擁有Hadoop MapReduce所具有的優點;但不同於MapReduce的是Job中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用於數據挖掘與機器學習等需要迭代的map reduce的算法。
Spark還有一種交互模式,那樣開發人員和用戶都可以獲得查詢和其他操作的即時反饋。MapReduce沒有交互模式,不過有了Hive和Pig等附加模塊,採用者使用MapReduce來得容易一點。 成本上來看:Spark需要大量內存,但是可以使用常規數量的常規轉速磁盤。一些用戶抱怨會產生臨時文件,需要清理。這些臨時文件通常保存7天,以便加快針對同一數據集的任何處理。磁盤空間相對便宜,由於Spark不使用磁盤輸入/輸入用於處理,已使用的磁盤空間可以用於SAN或NAS。
容錯上:Spark使用彈性分佈式數據集(RDD),它們是容錯集合,裡面的數據元素可執行並行操作。RDD可以引用外部存儲系統中的數據集,比如共享式文件系統、HDFS、HBase,或者提供Hadoop InputFormat的任何數據源。Spark可以用Hadoop支持的任何存儲源創建RDD,包括本地文件系統,或前面所列的其中一種文件系統。
Hadoop:分佈式文件系統
Hadoop是Apache.org的一個項目,其實是一種軟件庫和框架,以便使用簡單的編程模型,跨計算器集群對龐大數據集(大數據)進行分佈式處理。Hadoop可靈活擴展,從單一計算機系統,到提供本地存儲和計算能力的數千個商用系統,它都能輕鬆支持。實際上,Hadoop就是大數據分析領域的重量級大數據平台。 Hadoop由協同運行、構建Hadoop框架的多個模塊組成。Hadoop框架的主要模塊包括如下: Hadoop Common Hadoop分佈式文件系統(HDFS) Hadoop YARN Hadoop MapReduce
雖然上述四個模塊構成了Hadoop的核心,不過還有其他幾個模塊。這些模塊包括:Ambari、Avro、Cassandra、Hive、Pig、Oozie、Flume和Sqoop,它們進一步增強和擴展了Hadoop的功能,得以擴大到大數據應用領域,處理龐大數據集。 許多使用大數據集和分析工具的公司使用Hadoop。它已成為大數據應用系統中事實上的標準。設計Hadoop的初衷是處理這項任務:搜尋和搜索數十億個網頁,將這些信息收集到數據庫中。正是由於渴望搜尋和搜索互聯網,才有了Hadoop的HDFS及分佈式處理引擎MapReduce。
成本上: MapReduce使用常規數量的內存,因為數據處理基於磁盤,所以公司得購買速度更快的磁盤和大量磁盤空間來運行MapReduce。MapReduce還需要更多的系統,將磁盤輸入/輸出分佈到多個系統上。
容錯上: MapReduce使用TaskTracker節點,它為JobTracker節點提供了心跳(heartbeat)。如果沒有心跳,那麼JobTracker節點重新調度所有將執行的操作和正在進行的操作,交給另一個TaskTracker節點。這種方法在提供容錯性方面很有效,可是會大大延長某些操作(即便只有一個故障)的完成時間。
總結
Spark與MapReduce是一種相互共生的關係。Hadoop提供了Spark所沒有的功能特性,比如分佈式文件系統,而Spark為需要它的那些數據集提供了實時內存處理。完美的大數據場景正是設計人員當初預想的那樣:讓Hadoop和Spark在同一個團隊裡面協同運行。
作者:張景龍暢移(上海)信息科技有限公司CTO,CCFYOCSEF上海委員,京東今夜酒店特價APP技術奠基人和首任CTO,中國第一代智能手機開發者。
轉貼自: 36大數據
留下你的回應
以訪客張貼回應