天天看點

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

<a target="_blank"></a>

hadoop: 開源的資料分析平台,解決了大資料(大到一台計算機無法進行存儲,一台計算機無法在要求的時間内進行處理)的可靠存儲和處理。适合處理非結構化資料,包括hdfs,mapreduce基本元件。

hdfs:提供了一種跨伺服器的彈性資料存儲系統。

mapreduce:技術提供了感覺資料位置的标準化處理流程:讀取資料,對資料進行映射(map),使用某個鍵值對資料進行重排,然後對資料進行化簡(reduce)得到最終的輸出。

amazon elastic map reduce(emr): 托管的解決方案,運作在由amazon elastic compute cloud(ec2)和simple strorage service(s3)組成的網絡規模的基礎設施之上。如果你需要一次性的或不常見的大資料處理,emr可能會為你節省開支。但emr是高度優化成與s3 中的資料一起工作,會有較高的延時。

hadoop 還包含了一系列技術的擴充系統,這些技術主要包括了sqoop、flume、hive、pig、mahout、datafu和hue等。

pig:分析大資料集的一個平台,該平台由一種表達資料分析程式的進階語言和對這些程式進行評估的基礎設施一起組成。

hive:用于hadoop的一個資料倉庫系統,它提供了類似于sql的查詢語言,通過使用該語言,可以友善地進行資料彙總,特定查詢以及分析。

hbase:一種分布的、可伸縮的、大資料儲存庫,支援随機、實時讀/寫通路。

sqoop:為高效傳輸批量資料而設計的一種工具,其用于apache hadoop和結構化資料儲存庫如關系資料庫之間的資料傳輸。

flume:一種分布式的、可靠的、可用的服務,其用于高效地搜集、彙總、移動大量日志資料。

zookeeper:一種集中服務,其用于維護配置資訊,命名,提供分布式同步,以及提供分組服務。

cloudera:最成型的hadoop發行版本,擁有最多的部署案例。提供強大的部署、管理和監控工具。開發并貢獻了可實時處理大資料的impala項目。

hortonworks:使用了100%開源apache hadoop提供商。開發了很多增強特性并送出至核心主幹,這使得hadoop能夠在包括windows server和azure在内平台上本地運作。

mapr:擷取更好的性能和易用性而支援本地unix檔案系統而不是hdfs。提供諸如快照、鏡像或有狀态的故障恢複等高可用性特性。上司着apache drill項目,是google的dremel的開源實作,目的是執行類似sql的查詢以提供實時處理。

資料存儲

我們的目标是做一個可靠的,支援大規模擴充和容易維護的系統。計算機裡面有個locality(局部性定律),如圖所示。從下到上通路速度越來越快,但存儲代價更大。

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

相對記憶體,磁盤和ssd就需要考慮資料的擺放, 因為性能會差異很大。磁盤好處是持久化,機關成本便宜,容易備份。但随着記憶體便宜,很多資料集合可以考慮直接放入記憶體并分布到各機器上,有些基于 key-value, memcached用在緩存上。記憶體的持久化可以通過 (帶電池的ram),提前寫入日志再定期做snapshot或者在其他機器記憶體中複制。當重新開機時需要從磁盤或網絡載入之前狀态。其實寫入磁盤就用在追加日 志上面 ,讀的話就直接從記憶體。像voltdb, memsql,ramcloud 關系型又基于記憶體資料庫,可以提供高性能,解決之前磁盤管理的麻煩。

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

hyperloglog &amp; bloom filter &amp; countmin sketch

都是是應用于大資料的算法,大緻思路是用一組互相獨立的哈希函數依次處理輸入。hyperloglog 用來計算一個很大集合的基數(即合理總共有多少不相同的元素),對哈希值分塊計數:對高位統計有多少連續的0;用低位的值當做資料塊。 bloomfilter,在預處理階段對輸入算出所有哈希函數的值并做出标記。當查找一個特定的輸入是否出現過,隻需查找這一系列的哈希函數對應值上有沒 有标記。對于bloomfilter,可能有false positive,但不可能有false negative。bloomfilter可看做查找一個資料有或者沒有的資料結構(資料的頻率是否大于1)。countmin sketch在bloomfilter的基礎上更進一步,它可用來估算某一個輸入的頻率(不局限于大于1)。

cap theorem

後Hadoop時代的大資料架構後Hadoop時代的大資料架構
後Hadoop時代的大資料架構後Hadoop時代的大資料架構

根據不同的延遲要求(sla),資料量存儲大小, 更新量多少,分析需求,大資料處理的架構也需要做靈活的設計。上圖就描述了在不同領域中大資料元件。

說大資料的技術還是要先提google,google 新三輛馬車,spanner, f1, dremel

spanner:高可擴充、多版本、全球分布式外加同步複制特性的谷歌内部資料庫,支援外部一緻性的分布式事務;設計目标是橫跨全球上百個資料中心,覆寫百萬台伺服器,包含萬億條行記錄!(google就是這麼霸氣^-^)

f1: 建構于spanner之上,在利用spanner的豐富特性基礎之上,還提供分布式sql、事務一緻性的二級索引等功能,在adwords廣告業務上成功代替了之前老舊的手工mysql shard方案。

dremel: 一種用來分析資訊的方法,它可以在數以千計的伺服器上運作,類似使用sql語言,能以極快的速度處理網絡規模的海量資料(pb數量級),隻需幾秒鐘時間就能完成。

spark

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

flink

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

使用了一種類似于sql資料庫查詢優化的方法,這也是它與目前版本的apache spark的主要差別。它可以将全局優化方案應用于某個查詢之上以獲得更佳的性能。

kafka

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

storm

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

samza

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

linkedin主推的流式計算架構。與其他類似的spark,storm做了幾個比較。跟kafka內建良好,作為主要的存儲節點和中介。

lambda architecture

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

summingbird

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

nosql

資料傳統上是用樹形結構存儲(層次結構),但很難表示多對多的關系,關系型資料庫就是解決這個難題,最近幾年發現關系型資料庫也不靈了,新型nosql出現 如cassandra,mongodb,couchbase。nosql 裡面也分成這幾類,文檔型,圖運算型,列存儲,key-value型,不同系統解決不同問題。沒一個one-size-fits-all 的方案。

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

cassandra

sql on hadoop

impala

cloudera公司主導開發的新型查詢系統,它提供sql語義,能夠查詢存儲在hadoop的hdfs和hbase中的pb級大資料,号稱比hive快5-10倍,但最近被spark的風頭給罩住了,大家還是更傾向于後者。

drill

apache社群類似于dremel的開源版本—drill。一個專為互動分析大型資料集的分布式系統。

<a href="http://druid.io/" target="_blank">druid</a>

在大資料集之上做實時統計分析而設計的開源資料存儲。這個系統集合了一個面向列存儲的層,一個分布式、shared-nothing的架構,和一個進階的索引結構,來達成在秒級以内對十億行級别的表進行任意的探索分析。

berkeley data analytics stack

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

上面說道spark,在berkeley amp lab 中有個更宏偉的藍圖,就是bdas,裡面有很多明星項目,除了spark,還包括:

cloudera

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

hadoop老大哥提出的經典解決方案。

hdp (hadoop data platform)

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

hortonworks 提出的架構選型。

redshift

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

amazon redshift是 paraccel一個版本。它是一種(massively parallel computer)架構,是非常友善的資料倉庫解決方案,sql接口,跟各個雲服務無縫連接配接,最大特點就是快,在tb到pb級别非常好的性能,我在工作中 也是直接使用,它還支援不同的硬體平台,如果想速度更快,可以使用ssd。

netflix

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

完全基于aws的資料處了解決方案。

intel

後Hadoop時代的大資料架構後Hadoop時代的大資料架構

原文釋出時間:2015-04-23

本文來自雲栖合作夥伴“linux中國”