從“存儲系統(tǒng)”、“處理系統(tǒng)”和“分析方法”來看大數(shù)據(jù)平臺
Intetix Foundation(英明泰思基金會)由從事數(shù)據(jù)科學、非營利組織和公共政策研究的中國學者發(fā)起成立,致力于通過數(shù)據(jù)科學改善人類社會和自然環(huán)境。通過聯(lián)絡、動員中美最頂尖的數(shù)據(jù)科學家和社會科學家,以及分布在全球的志愿者,我們創(chuàng)造性地踐行著我們的使命:為美好生活洞見數(shù)據(jù)價值。
原文鏈接:https://dzone.com/articles/commercial-and-open-source-big
解決問題時需要哪些技能呢?
直覺和數(shù)據(jù)分析能力。
當你去處理還沒發(fā)生的事件,即便是很大數(shù)據(jù)量的分析,也需要一定程度的直覺。但很明顯基于數(shù)據(jù)分析的決策比直覺意見更可信,因為它排除了決策人的偏好、品味和經(jīng)驗,客觀對待問題。
毫無疑問數(shù)據(jù)很重要,但不斷增長的數(shù)據(jù)使得數(shù)據(jù)處理越來越難。我們需要的不僅僅是數(shù)據(jù),還有技術。大數(shù)據(jù)科技存儲了大量的數(shù)據(jù),搜索出有意義的可視化數(shù)據(jù),通過預測數(shù)據(jù)為應用程序進行內(nèi)部業(yè)務處理。為讓大家更為清楚地了解大數(shù)據(jù)平臺技術,本文把不同的平臺技術分類成三方面:“存儲系統(tǒng)”、“處理系統(tǒng)”和“分析方法”,并且描述相關的產(chǎn)品和技術。
存儲系統(tǒng)方面
Parallel DBMS
NoSQL
這兩個系統(tǒng)都用外擴方法存儲大數(shù)據(jù)。
Parallel DBMS
目前的RDBMS技術適用于所有單系統(tǒng)鄰域,專業(yè)的架構(gòu)類系統(tǒng)讓處理OLAP,文本,串流,和高緯度數(shù)據(jù)變得更出色。同時隨著環(huán)境的變化,RDBMS對此也在OLTP處理領域做出了相應的改變。
NoSQL
NoSQL,是一個新存儲系統(tǒng)的總括,為了簡化碎片簡易定義的數(shù)據(jù)模型而出現(xiàn)。它是分布的基礎,并使得在一個分布復制環(huán)境或者約束隔離下的要求沒那么嚴格。
VoltDB
VoltDB系統(tǒng)是由適合高性能的OLTP環(huán)境的格式組成,通過水平分割表數(shù)據(jù)建立高速率的OLTP系統(tǒng)。
圖1展示了要求僅在一個分區(qū)內(nèi)操作的某個任務連續(xù)地在相應的分區(qū)內(nèi)被執(zhí)行,并且需要在多個分區(qū)處理的某一任務被協(xié)調(diào)者處理。如果有很多操作需要在幾個分區(qū)處理,行和大小不宜過大。
SAP HANA
SAP HANA是SAP公司的一個基于記憶的存儲系統(tǒng)。它的特點是組織一個系統(tǒng)最佳化的分析任務,比如OLAP。如果所有數(shù)據(jù)在系統(tǒng)內(nèi)存內(nèi),那么重中之重是突破內(nèi)存和CPU緩存之間的瓶頸。為了最小化緩存缺失,處理帶有時間的連續(xù)數(shù)據(jù)是更有利的,這意味著分析許多OLAP時列結(jié)構(gòu)表可能更有利。
面向列的表有很多優(yōu)勢,典型實例是一個高數(shù)據(jù)壓縮率和處理速度。如果一個相同的數(shù)據(jù)域,與完全整合在一起的數(shù)據(jù)塊相比,幾個數(shù)據(jù)域?qū)?shù)據(jù)壓縮更好。下面的圖展示了行結(jié)構(gòu)和列結(jié)構(gòu)方法的簡明對比。
Vertica
Vertica是OLAP專業(yè)的數(shù)據(jù)庫,它通過列方法在磁盤上存儲數(shù)據(jù)。不共享方式的MPP結(jié)構(gòu)包含一個最佳化寫入的存儲,寫入更快,在壓縮的形式下讀入存儲,并且管理雙側(cè)數(shù)據(jù)流元組移動。下面的圖3幫助理解Vertica結(jié)構(gòu):
Greenplum
Greenplum是一個非共享MPP結(jié)構(gòu)的數(shù)據(jù)庫,基于PostgreSQL產(chǎn)生。保存的數(shù)據(jù)可以選擇行或列方式。數(shù)據(jù)存儲在服務器段,并且由日志傳輸?shù)姆绞綔y試段單位復制使得其可用。
1.一個由SMP結(jié)構(gòu)主機運行的查詢執(zhí)行計劃和聚集的結(jié)構(gòu),而由MPP結(jié)構(gòu)在S-BLADE節(jié)點處理查詢來執(zhí)行。
2.每個S-BLADE是通過一種被稱作FPGA特殊的數(shù)據(jù)處理器(現(xiàn)場可編程門陣列)和磁盤連接而成。
3.每個S-BLADE和主機使用IP地址連接到網(wǎng)絡。
與其他系統(tǒng)不同,F(xiàn)PGA對數(shù)據(jù)進行壓縮過濾、記錄或柱;在事務處理方面,它具有過濾或轉(zhuǎn)換功能。在處理大數(shù)據(jù)的時候,它遵循的是在執(zhí)行位于數(shù)據(jù)操作的數(shù)據(jù)時盡可能減少不必要數(shù)據(jù)的原則。
處理方面
并行處理的關鍵點是各個擊破,即數(shù)據(jù)被分割在獨立的類型,之后并行地處理它。就像矩陣乘法,它可以分割和運行每個運算。大數(shù)據(jù)處理的意思是把一個問題分割成幾個小操作,并且將他們整合成一個單一的結(jié)果。但如果有操作依賴,那么不可能最好地使用并行操作,在保存和處理數(shù)據(jù)時很有必要考慮這些因素。
多核處理
被廣泛熟知的處理大數(shù)據(jù)的技術是一個分布式數(shù)據(jù)多核處理的過程框架,比如Apache Hadoop.
通過多核處理方法的數(shù)據(jù)有以下特征:
通過使用內(nèi)置硬盤,而非特殊存儲方式。
當很多電腦參與處理,一般情況下假設會有系統(tǒng)錯誤和硬件錯誤,而非例外。
通過簡化抽象的Maps和Reduce的基本操作,你可以解決很多復雜的問題。即使是不熟悉平行程序的程序員也能輕松執(zhí)行數(shù)據(jù)的并行處理。
通過使用大量計算機來實現(xiàn)高流通量。
下圖展示了map-reduce方法的實現(xiàn)流程。存儲在HDFS的數(shù)據(jù)被分給一個可行的工作者和一個表達值類型,并將結(jié)果存放在本來磁盤。數(shù)據(jù)服從減少過程,并生成一個結(jié)果文件。
Dryad
Dryad是一個圖形框架,它能通過形成程序之間的數(shù)據(jù)通道加工并行數(shù)據(jù)。開發(fā)者用Map或者reduce 框架的就可以直接寫Map和Reduce函數(shù),而如果用Dryad,他們需要做圖來處理相應的數(shù)據(jù)。如下圖7描述了數(shù)據(jù)處理在Dryad和UNIX’s 通道的比較。
Dryad使DAG類型的數(shù)據(jù)流成為可能。盡管并行數(shù)據(jù)運算框架為處理大數(shù)據(jù)提供了足夠的函數(shù),但沒有經(jīng)驗的開發(fā)者或數(shù)據(jù)分析員以及未成年人在用系統(tǒng)進入的時候仍會遇到障礙。因此,我們需要一種方法通過更高的標準抽象概念來幫助數(shù)據(jù)處理更簡便。
Apache Pig
Apache Pig 提供一個更高標準的數(shù)據(jù)過程結(jié)構(gòu),允許通過結(jié)合處理大數(shù)據(jù)。它支持Pig Latin語言,有如下特征:
1.提供高標準結(jié)構(gòu),比如一個關系,包,和元組,包括int, long,和兩個基本類型。
2.提供關系運算,比如FILTER, FOREACH, GROUP, JOIN, LOAD 和STORE。
3.你也可以指定自定義用戶功能。
一個通過Pig Latin指明的數(shù)據(jù)處理程序,轉(zhuǎn)換成邏輯執(zhí)行計劃,接著再轉(zhuǎn)換成Map-Reduce 執(zhí)行計劃。下圖顯示Pig運算過程。
Apache Pig 是一個訪問方式,使大數(shù)據(jù)處理程序在編程語言中成為可能,叫C或者Java。另外一個類似的訪問方式是Google’s Sawzall.
一些技術幫助說明了數(shù)據(jù)處理,比如SQL,在編程語言中沒有說明數(shù)據(jù)處理過程。典型的例子比如Apache Hive, Google Tenzing和微軟的SCOPE.
Apache Hive
為了支持來自用戶的擴張,它允許用戶用標量值,集合體以及表格水平闡明功能。
分析方面
GNU R
GNU R 是軟件環(huán)境,包含了專供統(tǒng)計分析和制圖以及程序包的程序語言。它確保了一個平滑的矢量和矩陣數(shù)據(jù)過程從而優(yōu)化語言上的統(tǒng)計核算。
在過去,R是使用單一CPU將數(shù)據(jù)放入電腦記憶中進行分析,但由于增加的數(shù)據(jù)要處理,它已經(jīng)有了很多的發(fā)展。有些典型的例子如下:
利用多核的DoSMP 程序包;
Bigmemory package: 存儲數(shù)據(jù)的共享存儲器。它只存儲關鍵的內(nèi)存值并將其存在磁盤中;
雪包:它使R程序在計算機簇環(huán)境中執(zhí)行成為可能。
如下圖示范雪包如何在簇環(huán)境中處理數(shù)據(jù)的,這是一個典型的分類和攻克方法。
Map-Reduce運算已經(jīng)越來越普通,我們可以看到技術,比如RHIPE, RHadoop包和Ricardo, 那里MR運算和R都是集合形式。還有rhive 包,它結(jié)合了如Apache Hive這樣高標準數(shù)據(jù)處理技術。
Apache Mahout 應用于擴大數(shù)據(jù)分析運算。不僅Apache Hadoop,它也可以在多樣環(huán)境中執(zhí)行。它也通過存儲數(shù)學庫和Java 手機的方式提供有效包,比如向量矩陣或者其他NoSQL數(shù)據(jù)庫作為數(shù)據(jù)資源的功能。
以上我們通過對大數(shù)據(jù)的存儲、處理以及分析三個方面來了解大數(shù)據(jù)平臺技術,我們希望大數(shù)據(jù)最終在處理技術上發(fā)揮自身作用,而將數(shù)據(jù)和技術要素結(jié)合起來則可以獲得顯著的結(jié)果。