盘点大数据生态圈,那些繁花似锦的开源项目
盤點大數據生態圈,那些繁花似錦的開源項目
發表于12小時前| 2466次閱讀| 來源CSDN| 6 條評論| 作者仲浩
大數據開源HadoopSpark width="22" height="16" src="http://hits.sinajs.cn/A1/weiboshare.html?url=http%3A%2F%2Fwww.csdn.net%2Farticle%2F2015-09-11%2F2825674&type=3&count=&appkey=&title=%E8%BF%87%E5%8E%BB%E6%95%B0%E5%B9%B4%EF%BC%8C%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%BC%80%E6%BA%90%E7%94%9F%E6%80%81%E5%9C%88%E5%BE%97%E5%88%B0%E4%BA%86%E9%95%BF%E8%B6%B3%E7%9A%84%E5%8F%91%E5%B1%95%E2%80%94%E2%80%94%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%9A%84%E6%95%B4%E4%B8%AA%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E4%B8%AD%EF%BC%8C%E5%90%84%E7%A7%8D%E5%BC%80%E6%BA%90%E6%8A%80%E6%9C%AF%E6%A1%86%E6%9E%B6%E6%9E%97%E7%AB%8B%E3%80%82%E8%80%8C%E5%9C%A8%E8%BF%99%E4%BA%9B%E5%BC%80%E6%BA%90%E6%8A%80%E6%9C%AF%E7%9A%84%E5%9F%BA%E7%A1%80%E4%B8%8A%EF%BC%8C%E4%B8%9A%E5%86%85%E6%B6%8C%E7%8E%B0%E5%87%BA%E4%B8%80%E7%B3%BB%E5%88%97%E4%BB%A4%E4%BA%BA%E6%95%AC%E4%BD%A9%E7%9A%84%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%9E%B6%E6%9E%84%E5%AE%9E%E8%B7%B5%E3%80%82&pic=&ralateUid=&language=zh_cn&rnd=1441979066017" frameborder="0" scrolling="no" allowtransparency="true">摘要:過去數年,大數據開源生態圈得到了長足的發展——在數據的整個生命周期中,各種開源技術框架林立。而在這些開源技術的基礎上,業內涌現出一系列令人敬佩的大數據架構實踐。隨著互聯網和移動互聯網的發展,時下我們正處在一個大數據的時代。在數據金山的誘惑下,各個機構紛紛開始探索從數據中提取洞見并指導實踐的可能。而在這個需求的刺激下,在過去數年,大數據開源生態圈得到了長足的發展——在數據的整個生命周期中,從收集到處理,一直到數據可視化和儲存,各種開源技術框架林立。
以這些開源技術為基石,業內涌現出一系列令人敬佩的大數據架構實踐,而《程序員》電子刊9月B大數據實戰與技術專題則摘錄了電商、金融、游戲等行業的大數據應用,并覆蓋了當下熱門的大數據開源技術實踐與技術細節,如Hadoop、Spark、Docker等,詳情參閱《程序員》電子刊9月B。而在本文中,筆者將帶大家一覽這些精彩實踐賴以成型的根本——繁華的開源大數據生態圈。
資源調度與管理
談海量數據處理,機構首先面臨的就是對系統進行擴展,其中又分為縱向擴展和橫向擴展兩種方式。首先看縱向擴展,對于大型IT機構來說,拋開成本不談,用單機去應對海量數據顯然已不切實際,因此各個機構不得不在橫向擴展上尋找出路,也就是所謂的集群計算方式。聚焦集群計算,資源調度無疑構成了整個計算模式的基礎。在這個領域,YARN無疑最為耀眼,被廣泛部署于生產環境。然而,受限于資源粒度控制和隔離性等問題,Mesos同樣備受矚目,并在一些擁有深厚技術資本的公司得以使用,比如Apple、Twitter等。
分布式文件系統
在資源調度之外,大數據這一塊最主要的基礎無疑當屬分布式文件系統,而歷經數年發展,HDFS顯然已獨占鰲頭,同時也是MapReduce、Spark和Flink等系統的默認文件系統。關于HDFS細節相信已無需詳述。
出于業務對速度的追求,在內存速度遠高于磁盤價格又逐漸降低的情況下,機構使用內存來緩存大量數據已愈來愈普遍。而基于當下內存計算框架存在的普遍挑戰,內存文件系統Tachyon得到了顯著地關注,并在大量場景中得以部署,就拿下文提到的Spark來說:可以用作不同計算框架的數據共享,以避免磁盤IO;用以緩存數據,從而避免了JVM崩潰時的數據丟失并緩解GC開銷。此外,Tachyon還被用作遠程數據緩存,服務于即席查詢。在內存為王的時代,Tachyon前景不可小覷。
分布式計算類別
時至今日,隨著業務的不斷發展,分布式計算可大體分為3個方向——批處理、流計算和即席查詢。而針對這3個不同領域,大數據生態圈內同樣存在大量值得參考的框架。
1. 批處理
在開源大數據處理上,業內最早接觸的無疑就是MapReduce,同時也是當下生產環境部署最多的計算框架。然而正如上文所述,缺乏對內存的有效利用,效率比較低的MapReduce同樣面臨著大量的競爭者,其中兩個備受關注的就是Spark和Flink。
Spark出自伯克利AMPLab之手,基于Scala實現,從開源至今已吸引了越來越多企業的落地使用,僅國內比較知名的大規模部署就有百度、阿里、騰訊等。Spark最主要抽象概念是彈性分布式數據集(RDD),在內存中儲存數據,只有在需要時才會訪問磁盤,在迭代計算上具有明顯優勢。同時需要注意的是,Spark并不是一個完全基于內存的計算平臺。
Flink于今年躋身Apache頂級開源項目,與HDFS完全兼容。Flink提供了基于Java和Scala的API,是一個高效、分布式的通用大數據分析引擎,其主要借鑒了MPP的思路。更主要的是,Flink支持增量迭代計算,從而系統可以快速地處理數據密集型和迭代任務;同時,即使內存被耗盡,通過內存管理組件、序列化框架和類型推理引擎,Flink也可以正常運行。
2.流計算
當下知名度比較高的開源流式計算框架有Storm/JStorm、Spark Streaming、Flink、S4、Samza。其中S4出現的比較早,但是基于該項目的活躍度,這里不再討論。
Storm編程模型簡單,顯著地降低了進行實時處理的難度,也是當下最人氣的流計算框架之一。同時,對比其他計算框架,Storm有一個更低的延時(毫秒級)。此外,歷經數年發展,Storm也更加成熟,在容錯性、擴展性、可靠性上都有不俗的表現。
Samza出自于LinkedIn,構建在Kafka之上的分布式流計算框架,于今年年初躋身于Apache頂級開源項目。與Storm的區別是,Samza可以直接利用YARN。
Spark Streaming。嚴格來講,Spark Streaming該歸屬于批處理,其處理機制是將數據流分解成一系列小的RDD,通過時間窗來控制數據塊的大小。 雖然Spark Streaming在實時性上略微遜色,但卻擁有更大的吞吐,并且可以輕松的與Spark其它組件結合,發揮更強大的作用。
Flink支持delta-iterations,在迭代中可以顯著減少計算。同時,在處理方式中,Flink是一行一行處理,從而能獲得與Storm類似的性能。然而,對于SQL支持和社區活躍度上,Flink都稍遜Spark一籌。
3. 即席查詢
即席查詢當下比較受關注的有Hive、SparkSQL、Presto、Impala、Drill等,其中Hive借助于Hadoop的東風,已然在生產環境得到廣泛使用。在Hive之外,關注度最高的無疑是Spark SQL。Impala出自知名大數據創業公司Cloudera,在沉寂了一段時間后,當下亦有了復蘇的跡象。Presto來自Facebook,類似于Impala的一個即席查詢工具,在該公司內部得到廣泛使用,而國內也在一些知名公司得到部署,比如美團。Drill則是Google Dremel的開源實現,于今年5月發布了里程碑版本1.0,稍顯年輕。
大數據開源生態繁花似錦
在大數據領域,除下上述幾個分布式計算類別之外,在圖處理和機器學習領域同樣存在許多優秀的開源技術框架,比如:圖計算開源技術Spark Graphx、PowerGraph、Giraph、Neo4j等;機器學習開源技術Spark MLlib、Mahout、PredictionIO等。同時,開源技術已經占領了數據從收集到可視化和存儲的整個流程,比如:用于數據收集的Flume(NG)和Sqoop,分布式消息隊列技術Kafka、RabbitMQ,用于數據可視化的HighCharts、D3.js、Kibana、Echarts等等。此外,加之Cassandra、HBase、MongoDB、Redis等NoSQL,Lucene、Solr、ElasticSearch等搜索技術,Docker等容器技術,ZooKeeper等分布式應用程序協調服務,整個大數據開源生態繁花似錦!
總結
以上是生活随笔為你收集整理的盘点大数据生态圈,那些繁花似锦的开源项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度发布机器人助理度秘 “三大基石”炼成
- 下一篇: 华为,15万大军孤独行走在世界上