第一篇:EXCEL 數據處理與分析
EXCEL 數據處理與分析
學院:計算機科學與工程學院
學號:1141906109
姓名:繆忍忍
2014年6月27日星期五
關于EXCEL的歷史
1982年
Microsoft推出了它的第一款電子制表軟件-Multiplan,并在CP/M系統上
大
Excel
獲成功,但在MS-DOS系統上,Multiplan敗給了Lotus1-2-3(一款較早的電子表格軟件)。這個事件促使了Excel的誕生,正如Excel研發代號DougKlunder:做Lotus1-2-3能做的,并且做的更好。
1983年9月
比爾蓋茨召集了微軟最高的軟件專家在西雅圖的紅獅賓館召開了3天的“頭腦風暴會議”。蓋茨宣布此次會議的宗旨就是盡快推出世界上最高速的電子
表格軟件。
1985年
第一款Excel誕生,它只用于Mac系統,中文譯名為“超越”。
1987年
第一款適用于Windows系統的Excel也產生了(與Windows環境直接捆綁,在Mac中的版本號為2.0)。Lotus1-2-3遲遲不能適用于Windows系統,到了1988年,Excel的銷量超過了1-2-3,使得Microsoft站在了PC軟件商的領先位置。這次的事件,促成了軟件王國霸主的更替,Microsoft鞏固了它強有力的競爭者地位,并從中找到了發展圖形軟件的方向。此后大約每兩年,Microsoft就會推出新的版本來擴大自身的優勢,目前Excel的最新版本為11,也被稱作Microsofot Office Excel2003。
早期,由于和另一家公司出售的名為Excel的軟件同名,Excel曾成為了商標法的目標,經過審判,Microsoft被要求在它的正式文件和法律文檔中以MicrosoftExcel來命名這個軟件。但是,隨著時間的過去,這個慣例也就逐漸消逝了。Excel雖然提供了大量的用戶界面特性,但它仍然保留了第一款電子制表軟件VisiCalc的特性:行、列組成單元格,數據、與數據相關的公式或者對其他單元格的絕對引用保存在單元格中。Excel是第一款允許用戶自定義界面的電子制表軟件(包括字體、文字屬性和單元格格式)。它還引進了“智能重算”的功能,當單元格數據變動時,只有與之相關的數據才會更新,而原先的制表軟件只能重算全部數據或者等待下一個指令。同時,Excel還有強大的圖形功能。
1993年
Excel第一次被捆綁進Microsoft Office中時,Microsoft就對Microsoft Word和Microsoft Powerpoint的界面進行了重新設計,以適應這款當時極為流行的應用程序。
從1993年,Excel就開始支持Visual Basic for Applications(VBA).VBA是一款功能強大的工具,它使Excel形成了獨立的編程環境。使用VBA和宏,可以把手工步驟自動化,VBA也允許創建窗體來獲得用戶輸入的信息。但是,VBA的自動化功能也導致Excel成為宏病毒的攻擊目標。
1995年
Excel被設計為給您所需要的工具。無論您是做一個簡單的摘要、制作銷售趨勢圖,還是執行高級分析,無論您正在做什么工作,Microsoft Excel能按照
您希望的方式幫助您完成您的工作。
1997年
Excel97是Office97中一個重要程序,Excel一經問世,就被認為是當前功能強大、使用方便的電子表格軟件。它可完成表格輸入、統計、分析等多項工作,可生成精美直觀的表格、圖表。為日常生活中處理各式各樣的表格提供了良好的工具。此外,因為Excel和Word同屬于Office套件,所以它們在窗口組成、格式設定、編輯操作等方面有很多相似之處,因此,在學習Excel時要注意應用以
前Word中已學過的知識。
2001年
利用Office XP中的電子表格程序--Microsoft Excel2002版,您可以快速創建、分析和共享重要的數據。諸如智能標記和任務窗格的新功能簡化了常見的任務。協作方面的增強則進一步精簡了信息審閱過程。新增的數據恢復功能確保您不會丟失自己的勞動成果。可刷新查詢功能使您可以集成來自Web及任意其他
數據源的活動數據。
2003年
Excel2003使您能夠通過功能強大的工具將雜亂的數據組織成有用的Excel
信息,然后分析、交流和共享所得到的結果。它能幫助您在團隊中工作的更為出色,并能保護和控制對您工作的訪問。另外,您還可以使用符合行業標準的擴展標記語言(XML),更方便地連接到業務程序。
2007年
1.由于在2003中顯示活動單元格的內容時,編輯欄常會越位,擋到列標和工作表的內容。特別是在編輯欄下面的單元格有一個很長的公式,此時單元格內容根本看不見,也無法雙擊、拖動填充柄。而現在2007中以編輯欄上下箭頭(如果調整編輯欄高度,則出現流動條)和折疊編輯欄按鈕完全解決此問題,不再占用編輯欄下方的空間。調整編輯欄的高度,有兩種方式——拖曳編輯欄底部的調整條,或雙擊調整條。調整編輯欄的高度時,表格也隨之下移,因此表里的內容不會再被覆蓋到,同時為這些操作添加了快捷鍵(CTRL+SHIFT+U),以便在編輯欄的單行和多行模式間快速切換。
2.2003的名稱地址框是固定的,不夠用來顯示長名稱。而2007則可以左右活動的,有水平方向調整名稱框的功能。用戶可以通過左右拖曳名稱框的分隔符(下凹圓點),來調整寬度,使其能夠適應長名稱。
3.2003編輯框內的公式限制還是讓人惱火的,2007有幾個方面增加了改進。
1、公式長度限制(字符),2003版限制:1K個字符,2007版限制:8k個字符;
2、公式嵌套的層數限制,2003版限制:7層,2007版限制:64層;
3、公式中參數的個數限制:2003版限制:30個,2007版限制:255個。
EXCEL的主要功能
主要功能:
單元1:Excel 入門。
瀏覽 Excel,瀏覽菜單,選擇多重單元格,創建和編輯工作表,使用模板,使用幫助信息
單元2:公式和格式。
創建公式和函數,使用粘貼函數,自動求和,填充指令,絕對引用,格式化數字,自動套用格式,使用條件格式 單元3:預覽及打印。
拼寫檢查,設置打印選項,創建頁眉頁腳,應用Web特征,使用E-mai 功能 單元4:圖表及地圖。
使用圖表向導,編輯圖表,創建餅型圖,創建地圖,繪圖及插入對象 單元5:數據庫入門。
創建及過濾數據庫,過濾和命名區域,定位和刪除記錄,財務公式 單元6:數據庫管理。
數據導入和導出,導入HTML文件,創建透視圖表,發布透視表到Web 單元7:工作表管理。
鏈接工作表,鏈接工作簿,合并工作表,設定密碼,保護儲存格和對象,群組及大綱,創建報表
單元8:Visual Basic。
錄制宏,編輯宏,調試宏,制作宏按鈕 單元9:IF邏輯塊。
趨勢分析,變量求解,頻率分布,方案管理器,審核工作表,數據確認,使用IF函數,嵌套IF函數,合并邏輯函數 單元10:高級數據管理。
使用 HLOOKUP,使用 VLOOKUP,創建單變量數據表,創建雙變量數據表,使用Solver 單元11:用戶自定義函數。
創建函數,使用應用程序對象,控制程序流程,編寫子程序 單元12:自定義 EXCEL。
創建批注,創建自定義菜單,創建自定義工具欄,使用模板
有關EXCEL統計分析方法
一、數據處理的方法:分類(拆分)、排序、篩選、匯總(合并)、圖表化
二、在EXCEL中,對數據進行處理的手段(工具)非常豐富,主要有: ①基礎操作(即手工處理,包括分列、排序、篩選等)、②函數公式(包括數組公式)、③分組、④分類匯總、⑤合并計算、⑥數據透視表、⑦SQL、⑧編程技術(VBA及其它)
有關函數的功能及實例
Excel中所提的函數其實是一些預定義的公式,它們使用一些稱為參數的特定數值按特定的順序或結構進行計算。用戶可以直接用它們對某個區域內的數值進行一系列運算,如分析和處理日期值和時間值、確定貸款的支付額、確定單元格中的數據類型、計算平均值、排序顯示和運算文本數據等等。Excel函數一共有11類,分別是數據庫函數、日期與時間函數、工程函數、財務函數、信息函數、邏輯函數、查詢和引用函數、數學和三角函數、統計函數、文本函數以及用戶自定義函數。如時間函數day、date、datedif、weekday、month、year、now,統計函 數countif、max、min、counta、count、average,數學函數mod、sum、sumif等等常用的函數。現在就我在徐老師的excel高級應用課上學到的從身份證號碼中提取出 生年月、性別信息的excel運用舉例說明其方便好用的實用功能。
(1)根據身份證號碼求性別輸入=IF(VALUE(RIGHT(E4,3))/2=INT(VALUE(RIGHT(E4,3))/2),“女”,“男”)。公式解釋:RIGHT(E4,3)用于求出身份證號碼中代表性別的數字,實際求得的為代表數字的字符串。VALUE(RIGHT(E4,3)用于將上一步所得的代表數字的字符串轉換為數字。VALUE(RIGHT(E4,3))/2=INT(VALUE(RIGHT(E4,3))/2用于判斷這個身份證號碼是奇數還是偶數,當然你也可以用Mod函數來做出判斷。如果上述公式判斷出這個號碼是偶數時,顯示“女”,否則,這個號碼是奇數的話,則返回“男”。
(2)根據身份證號碼求出生年月 輸入公式“=IF(LEN(E4)=15,MID(E4,7,4),MID(E4,9,4))”,其中: LEN(E4)=15:檢查E4單元格中字符串的字符數目,本例的含義是檢查身份證號碼的長度是否是15位。MID(E4,7,4):從E4單元格中字符串的第7位開始提取四位數字,本例中表示提取15位身份證號碼的第7、8、9、10位數字。MID(E4,9,4):從C2單元格中字符串的第9位開始提取四位數字,本例中表示提取18位身份證號碼的第9、10、11、12位數字。IF(LEN(E4)=15,MID(E4,7,4),MID(E4,9,4)):IF是一個邏輯判斷函數,表示如果C2單元格是15位,則提取第7位開始的四位數字,如果不是15位則提取自第9位開始的四位數字。如果需要顯示為“2010年6月”這樣的格式,則使用DATE格式,并在“單元格格式→日期”中進行設置。
學習數據處理的心得體會
學習《Excel與數據處理》這門課程之后,使我受益匪淺。當初學這門課就是為了再次復習重溫一下大一計算機基礎課程學習的內容,更加扎實的掌Excel的使用和簡單的數據處理,我相信這在我將來的學習工作中會幫助我改善工作質量,提高效率。通過學習使我認識到其實計算機技術并不是很難的,只要多上機實驗,配合課堂和書本知識,基本的辦公和數據處理能力是能夠得到大幅度的提升的,我意識到從今往后我應該積極主動地去學習,主動探索未知知識,把它們變為自己的知識,改掉以前那種只靠學習課本的方法。在第一節課時,覺得這門課對我來說應該不難,里邊有很多內容早在大一時候便就已經學過了,因此便在不知不覺中不想再聽老師的講解,慢慢地卻發現里邊講的好多內容我都不懂,老師在上課過程中的一系列操作問題我都不懂的漸漸地我終于意識到我該好好地聽老師講課,我雖然懂得一些操作,但都是平時經常用的一些基礎的操作,很多的高級應用操作我都還沒有接觸到,而且缺乏實踐經驗。孰能生巧,一個人理論上再完善,沒有通過大量的練習,在遇到問題時往往會不知所措。通過這門課的學習我意識到學習與實踐的重要性,在以后的學習中我一定要多練習,多實踐,以求自己對知識掌握得更好。以下是該門課程的主要學習內容和我的一點感悟。Excel是個人電腦普及以來用途最廣泛的辦公軟件之一,也是Microsoft Windows平臺下最成功的應用軟件之一。說它是普通的軟件可能已經不足以形容它的威力,事實上,在很多公司,Excel已經完全成為了一種生產工具,在各個部門的核心工作中發揮著重要的作用。無論用戶身處哪個行業、所在公司有沒有實施信息系統,只要需要和數據打交道,Excel幾乎是不二的選擇。Excel之所以有這樣的普及性,是因為它被設計成為一個數據計算與分析的平臺,集成了最優秀的數據計算與分析功能,用戶完全可以按照自己的思路來創建電子表格,并Excel的幫助下出色的完成工作任務。在電子表格軟件領域,Excel軟件唯一的競爭對手就是自己。基于這樣的絕對優勢地位,Excel已經成為事實上的行業標準。因此,您大可不必花時間去關注別的電子表格軟件。即使需要,以Excel的功底去學習其他同類軟件,學習成本會非常低。如此,學習Excel的綜合優勢就很明顯了Excel一向具有良好的向下兼容特性,每一次升級都能帶來新的功能,但卻幾乎可以不費力的掌握這些新功能并同時沿用原有的功能。而且,各個版本的功能有99%的部分都是通用的,文件格式也可以完全通用。所以,無論你現在正在使用哪個版本的Excel,都不必擔心現有的知識會很快被淘汰掉。從這個角度上講,把時間投資在學習Excel上,是相當保值的當老師講到一個精通掌握Excel和數據處理的應聘者在北上廣等一線城市,月薪高達一兩萬時,我和我的小伙伴們都驚呆了。可見如果能熟練使用Excel,就能做到一招鮮,吃遍天,無論在哪個行業哪家公司,高超的Excel水平都能在職場上助您成功。
Excel中的函數很多,功能也非常強大,如能掌握一些常用的函數,將給日常的數據處理帶來很大的便利。Excel函數一共有11類,分別是數據庫函數、日期與時間函數、工程函數、財務函數、信息函數、邏輯函數、查詢和引用函數、數學
和三角函數、統計函數、文本函數以及用戶自定義函數。
通過老師在課堂上的具體而熟練的操作,使我認識到Excel還有更多的功能等著我們去開發和學習,想要熟練掌握并不是一朝一夕就能做到的,它需要在不斷地工作和學習中去鍛煉,去實踐,才能更好的去駕馭,去為我們的工作帶來更大的便利。
通過這門課程的學習,我首先充分認識到了excel在我們以后工作中的重要性,能夠熟練的掌握excel軟件是我以后從事任何工作不可缺少的一種專業技能。如果以后我們從事會計、財務、人事、數據分析??等相關職業時,那么用到Excel的地方隨處可遇,不但要會用,還要求要用好(比如透視與篩選、函數的運用、圖表的制作??)
總的來說,我覺得做到以下兩點對我們學習Excel和數據處理很重要:
一、動手實踐才是王道
Excel的學習過程實際上是一個動手操作,多次練習的過程,理論知識再多,再豐富,最終還是要動手來完成任務的。老板叫你做一個表格,你不能說如何做,你要做出來給老板看。在學習Excel方面,一定要結合理論知識在Excel軟件里多次練習,這樣你才能發現:哪些地方你會,哪些地方你不會。例如,把老師課件里的內容慢慢的通過上機來一點點消化吸收,逐漸變成自己的東西。
二、不懂就要問
當你在使用Excel的時候,肯定會遇到這樣那樣的問題,這個時候你就要及時的把這個問題解決掉,千萬不要跳過去,如果你這次跳過去了,下次遇到了類似的問題還是不會。可以通過請教老師,身邊的同學、朋友,可以去百度、谷歌,也可以去論壇發帖求助,總之你要弄明白這個問題。通過本課的學習使我受益匪淺,在老師的指導下,盡可能多的掌握了Excel的技能,可能現在還不能做到多么熟練,但肯定會對以后的學習和工作打下更好的基礎。再次感謝老師對我們的熱心講解(完)
第二篇:Matlab數據處理與分析_復習總結
1、save 文件名 [變量名表][-append][-ascii]
load 文件名[變量名表][-ascii]
2、linspace(a,b,n)與a:(b-a)/(n-1):b等價
3、伴隨矩陣:compan(p)其中p是一個多項式的系數向量,高次冪系數排在前,低次冪排在后。
4、diag(A)函數提取矩陣A主對角線元素。
diag(A,k)提取第k條對角線的元素。
diag(V,k)第k條對角線元素為向量V的元素。
5、上三角矩陣triu(A)triu(A,k)下三角矩陣tril(A)tril(A,k)
6、轉置運算符是單撇號(‘)
rot90(A,k)將矩陣A逆時針旋轉90度的k倍 fliplr(A)矩陣的左右翻轉 flipud(A)矩陣的上下翻轉
7、det(A)方陣的行列式值rank(A)矩陣的秩trace(A)矩陣的跡,對角線元素之和
8、(1)if條件語句組end(2)if條件語句組1else
語句組2end
(3)if條件1語句組1elseif條件2語句組2……
elseif條件m語句組melse
語句組nend9、switch表達式case表達式1語句組1case表達式2語句組2……
case表達式m語句組otherwise
語句組n
end10、try語句先試探性執行語句組1,如果語句組1在執行過程中出現錯誤,則將錯誤信息賦給保留的lasterr變量,并轉去執行語句組2。try
語句組1catch
語句組2end11、(1)for 循環變量=表達式1:表達式2:表達式3循環體語句end
(2)for 循環變量=矩陣表達式循環體語句end12、while(條件)
循環體語句end13、function 輸出形參表=函數名(輸入形參表)
注釋說明部分 函數體語句
14、[輸出實參表]=函數名(輸入實參表)
15、全局變量global
16、plotplotyy
17、title(圖形名稱)
xlabel(x軸說明)ylabel(y軸說明)text(x,y,圖形說明)
legend(圖例1,圖例2,…)
18、axis([xmin xmax ymin ymax zmin zmax])
axis equal:縱、橫坐標軸采用等長刻度。axis square:產生正方形坐標系(缺省為矩形)。axis auto:使用缺省設置。axis off:取消坐標軸。axis on:顯示坐標軸。
19、grid on/offbox on/offhold on/off 20、subplot(m,n,p)
21、polar(theta,rho,選項)
22、低層繪圖操作
23、max minmean(X):返回向量X的算術平均值;
median(X):返回向量X的中值; sum(X):返回向量X各元素的和。prod(X):返回向量X各元素的乘積。cumsum(X):返回向量X累加和向量。cumprod(X):返回向量X累乘積向量。std(X)返回一個標準方差。
注:默認dim=1列處理,dim=2行處理
24、元素排序[Y,I]=sort(A,dim,mode)
mode指明升序還是降序,若取’ascend’則按升序,若取’descend’,則按降序;
25、一維數據插值
Y1=interp1(X,Y,X1,'method')二維數據插值
Z1=interp2(X,Y,Z,X1,Y1,'method')method是插值方法,允許的取值有‘linear’、‘nearest’、‘cubic’、‘spline’
26、polyfit函數來求得最小二乘擬合多項式的系
數,再用polyval函數按所得的多項式計算所給出的點上的函數近似值
27、多項式乘法:conv(P1,P2):P1、P2是兩個
多項式系數向量;
多項式除法:[Q,r]=deconv(P1,P2),其中Q返回多項式P1除以P2的商式,r返回P1除以P2的余式。這里,Q和r仍是多項式系數向量。
28、Y=polyval(P,x)
Y=polyvalm(P,x)
29、多項式求根
x=roots(P)
30、LU分解 方陣
[L,U]=lu(A):滿足A=LU。[L,U,P]=lu(A):滿足PA=LU。
實現LU分解后,線性方程組Ax=b的解x=U(Lb)或x=U(LPb),31、QR分解方陣
[Q,R]=qr(A):滿足A=QR。[Q,R,E]=qr(A):滿足AE=QR。
實現QR分解后,線性方程組Ax=b的解x=R(Qb)或x=E(R(Qb))。
32、Cholesky分解矩陣A是對稱正定的Cholesky分解將矩陣A分解成一個下三角矩陣和上三角矩陣的乘積。設上三角矩陣為R,則下三角矩陣為其轉置,即A=R'R。R=chol(A):產生一個上三角陣R,使R‘R=A。[R,p]=chol(A):這個命令格式將不輸出出錯信息。當A為對稱正定的,則p=0,R與上述格式得到的結果相同;否則p為一個正整數。實現Cholesky分解后,線性方程組Ax=b變成R'Rx=b,所以x=R(R'b)。
33、A=sparse(S)將矩陣S轉化為稀疏方式存儲
34、sparse(u,v,S):u,v,S是3個等長的向量。S是
要建立的稀疏矩陣的非0元素。u(i)、v(i)分別是S(i)的行和列下標 full(A):返回和稀疏存儲矩陣A對應的完全存儲方式矩陣。
35、符號計算
符號表達式的加、減、乘、除運算可分別由函數symadd、symsub、symmul和symdiv來實現,冪運算可以由sympow來實現
36、符號表達式的因式分解與展開
factor(s):對符號表達式s分解因式。expand(s):對符號表達式s進行展開。collect(s):對符號表達式s合并同類項。collect(s,v):對符號表達式s按變量v合并同類項。
37、limit(f,x,a):求符號函數f(x)的極限值。即計
算當變量x趨近于常數a時,f(x)函數的極限值。
limit(f,x,a,'right'):求符號函數f的極限值。'right'表示變量x從右邊趨近于a。
limit(f,x,a,‘left’):求符號函數f的極限值。‘left’表示變量x從左邊趨近于a。
38、不定積分
int(s):沒有指定積分變量和積分階數時,系統按findsym函數指示的默認變量對被積函數或符號表達式s求不定積分。int(s,v):以v為自變量
39、定積分
int(s,v,a,b):求定積分運算。a,b分別表示定積分的下限和上限。該函數求被積函數在區間[a,b]上的定積分
40、無窮級數的和需要符號表達式求和函數
symsum,其調用格式為:symsum(s,v,n,m)
41、泰勒級數
taylor(f,v,n,a)
42、代數方程求解
solve(s):求解符號表達式s的代數方程 solve(s,v):求解符號表達式s的代數方程,求解變量為v
43、常微分方程求解
Dy表示y’,D2y表示y’’
dsolve(eq,c,v):求解常微分方程eq在初值條件c下的特解
第三篇:儀器分析實驗數據處理與表達
儀器分析實驗數據處理與表達
1.可疑數據的取舍 分析測定中常常有個別數據與其他數據相差較大,成為可疑數據(或稱離群值、異常值)。對于有明顯原因造成的可疑數據,應予舍去,但是對于找不出充分理由的可疑數據,則應慎重處理,應借助數理統計方法進行數據評價后再行取舍。
在3-10次的測定數據中,有一個可疑數據時,可采用Q檢驗法決定取舍; 若有兩個或兩個以上可疑數據時,宜采用Grubbs檢驗法。
2.有效數字及其運算規則
由于誤差的存在,任何測量的準確度都是有限的,因此在記錄數據時既不可隨意多寫數字的位數,夸大測量的精度;也不可輕率少寫數字的位數,降低測量的精度。在小數點后的“0”也不能任意增加或刪去。在進行運算時,還須注意遵守下列規則:
(1)有效數字的修約按國家標準GB 8187-1987進行:在擬舍棄的數字中,若左邊的第一個數字≤4,則舍去;在擬舍棄的數字中.若左邊的第一個數字≥6,則進—;在擬舍棄的數字中,若左邊的第一個數字為5,其右邊的數字井非全部為0,則進一;在擬舍棄的數字中,若左邊的第一個數字為5,其右邊的數字皆為0,所擬保留的末位數字為奇數時,則進一,若為偶數(包括“0”)時,則不進;有效數字的修約應一次完成,不得連續進行多次修約。
(2)加減運算結果中,保留有效數字的位數應與絕對誤差最大的相同;乘除運算結果中,保留有效數字的位數應以相對誤差最大的數據為準。
(3)對數計算中,對數小數點后的位數應與真數的有效數字位數相同。
(4)計算式中用到的常數如π、e以及乘除因子等,可以認為其有效數字的位數是無限的,不影響其他數據的修約。
3.分析結果的表達
取得實驗數據后,應以簡明的方法表達出來,通常有列表法、圖解法、數學 方程表示法等三種方法,可根據具體情況選擇一種表達方法。
列表法是將—組實驗數據中的自變量和因變量的數值按一定形式和順序一一對應列成表格,比較簡明、直觀,是最常用的方法。列表時應有完全而又簡明的表名,在表名不足以說明表中數據含義時,則在表名或表格下面再附加說明,如獲得數據的有關實驗條件、數據來源等;表中數據有效數字位數應取舍適當,小數點應上下對齊,以便比較分析。圖解法是將實驗數據按自變量與因變量的對應關系標繪成圖形,直觀反映變量間的各種關系,便于進行分析研究。每圖應有簡明的標題,并注明取得數據的主要實驗條件、作者姓名(包括合作者姓名)、以及實驗日期。注意坐標分度的選擇,其精度應與測量的精度一致。
圖解法是整理實驗數據的重要方法,通常借助標準工作曲線法、曲線外推法圖解微分法和圖解積分法直接或間接獲得樣品的有關信息。這些處理方法與它們在基礎化學分析課程中應用相似,本教材不再贅述。
數學方程表示法是對數據進行回歸分析,以數學方程式描述變量之間關系的方法。儀器分析實驗數據的自變量與因變量之間多成直線關系,或是經過適當變換后,使之呈現直線關系,因此儀器分析中比較常用的是一元線性回歸分析,多采用平均值法和最小二乘法完成。在實驗報告或論文中,往往還需算出相關系數r,以說明變量之間的相關程度;注意,|r|=0時,表明x與y毫無線性關系,但并不否定x與y之間可能存在其他的非線性關系。
儀器分析實驗和化學分析實驗相比,實驗數據和信息量要大得多,要注意利用先進的計算機技術進行分析處理,例如大家熟悉的Microsoft Excel、Origin等系列軟件就可以根據一套原始數據,在數據庫、公式、函數、圖表之間進行數據傳遞、鏈接和編輯等操作,從而對原始數據進行匯總列表、數據處理、統計計算、繪制圖表、回歸分析及驗證等。
第四篇:大數據處理技術的總結與分析
數據分析處理需求分類 1 事務型處理
在我們實際生活中,事務型數據處理需求非常常見,例如:淘寶網站交易系統、12306網站火車票交易系統、超市POS系統等都屬于事務型數據處理系統。這類系統數據處理特點包括以下幾點:
一是事務處理型操作都是細粒度操作,每次事務處理涉及數據量都很小。二是計算相對簡單,一般只有少數幾步操作組成,比如修改某行的某列; 三是事務型處理操作涉及數據的增、刪、改、查,對事務完整性和數據一致性要求非常高。
四是事務性操作都是實時交互式操作,至少能在幾秒內執行完成; 五是基于以上特點,索引是支撐事務型處理一個非常重要的技術。在數據量和并發交易量不大情況下,一般依托單機版關系型數據庫,例如ORACLE、MYSQL、SQLSERVER,再加數據復制(DataGurad、RMAN、MySQL數據復制等)等高可用措施即可滿足業務需求。
在數據量和并發交易量增加情況下,一般可以采用ORALCE RAC集群方式或者是通過硬件升級(采用小型機、大型機等,如銀行系統、運營商計費系統、證卷系統)來支撐。
事務型操作在淘寶、12306等互聯網企業中,由于數據量大、訪問并發量高,必然采用分布式技術來應對,這樣就帶來了分布式事務處理問題,而分布式事務處理很難做到高效,因此一般采用根據業務應用特點來開發專用的系統來解決本問題。2 數據統計分析
數據統計主要是被各類企業通過分析自己的銷售記錄等企業日常的運營數據,以輔助企業管理層來進行運營決策。典型的使用場景有:周報表、月報表等固定時間提供給領導的各類統計報表;市場營銷部門,通過各種維度組合進行統計分析,以制定相應的營銷策略等。數據統計分析特點包括以下幾點:
一是數據統計一般涉及大量數據的聚合運算,每次統計涉及數據量會比較大。二是數據統計分析計算相對復雜,例如會涉及大量goupby、子查詢、嵌套查詢、窗口函數、聚合函數、排序等;有些復雜統計可能需要編寫SQL腳本才能實現。
三是數據統計分析實時性相對沒有事務型操作要求高。但除固定報表外,目前越來越多的用戶希望能做做到交互式實時統計;
傳統的數據統計分析主要采用基于MPP并行數據庫的數據倉庫技術。主要采用維度模型,通過預計算等方法,把數據整理成適合統計分析的結構來實現高性能的數據統計分析,以支持可以通過下鉆和上卷操作,實現各種維度組合以及各種粒度的統計分析。
另外目前在數據統計分析領域,為了滿足交互式統計分析需求,基于內存計算的數據庫倉庫系統也成為一個發展趨勢,例如SAP的HANA平臺。數據挖掘
數據挖掘主要是根據商業目標,采用數據挖掘算法自動從海量數據中發現隱含在海量數據中的規律和知識。數據挖掘主要過程是:根據分析挖掘目標,從數據庫中把數據提取出來,然后經過ETL組織成適合分析挖掘算法使用寬表,然后利用數據挖掘軟件進行挖掘。傳統的數據挖掘軟件,一般只能支持在單機上進行小規模數據處理,受此限制傳統數據分析挖掘一般會采用抽樣方式來減少數據分析規模。
數據挖掘的計算復雜度和靈活度遠遠超過前兩類需求。一是由于數據挖掘問題開放性,導致數據挖掘會涉及大量衍生變量計算,衍生變量多變導致數據預處理計算復雜性;二是很多數據挖掘算法本身就比較復雜,計算量就很大,特別是大量機器學習算法,都是迭代計算,需要通過多次迭代來求最優解,例如K-means聚類算法、PageRank算法等。因此總體來講,數據分析挖掘的特點是:
1、數據挖掘的整個計算更復雜,一般是由多個步驟組成計算流,多個計算步驟之間存在數據交換,也就是會產生大量中間結果,難以用一條sql語句來表達。
2、計算應該能夠非常靈活表達,很多需要利用高級語言編程實現。二 大數據背景下事務型處理系統相關技術
在google、facebook、taobao等大互聯網公司出現之后,這些公司注冊和在線用戶數量都非長大,因此該公司交易系統需要解決“海量數據+高并發+數據一致性+高可用性”的問題。
為了解決該問題,從目前資料來看,其實沒有一個通用的解決方案,各大公司都會根據自己業務特點定制開發相應的系統,但是常用的思路主要包括以下幾點:(1)數據庫分片,結合業務和數據特點將數據分布在多臺機器上。
(2)利用緩存等機制,盡量利用內存,解決高并發時遇到的隨機IO效率問題。(3)結合數據復制等技術實現讀寫分離,以及提高系統可用性。(4)大量采用異步處理機制,對應高并發沖擊。(5)根據實際業務需求,盡量避免分布式事務。1相關系統介紹 1)阿里CORBAR系統
阿里COBAR系統是一個基于MYSQL數據庫的分布式數據庫系統,屬于基于分布式數據庫中間件的分布式數據庫系統。該系統是前身是陳思儒開發的“變形蟲”系統(以前調研過),由于陳思儒離開阿里去了盛大,阿里當心“變形蟲”穩定性等問題,重新開發該項目。
該系統主要采用數據庫分片思路,實現了:數據拆分、讀寫分離、復制等功能。由于此系統由于只需要滿足事務型操作即可,因此相對真正并行數據庫集群(例如TeraData等),此類系統提供操作沒有也不需要提供一些復雜跨庫處理,因此該系統存在以下限制:
(1)不支持跨庫的join、分頁、排序、子查詢。(2)insert等變更語句必須包括拆分字段等。(3)應該不支持跨機事務(以前變形蟲不支持)。
說白了此類系統不具備并行計算能力,基本上相當于數據庫路由器!
另外此類系統的在實際應用的關鍵問題是,根據什么對數據進行切分,因為切分不好會導致分布式的事務問題。2)阿里OceanBase系統
該系統也是淘寶為了解決高并發、大數據環境下事務型處理而定制開發的一個系統。該系統主要思路和特點如下:(1)他們發現在實際生成環境中,每天更新的數據只占總體數據的1%不到,因此他們把數據分為:基線數據和增量更新數據。
(2)基線數據是靜態數據,采用分布式存儲方式進行存儲。
(3)只在一臺服務器上存儲和處理增量更新數據,并且是在內存中存儲和處理更新數據。
(4)在系統負載輕的時候,把增量更新批量合并到基線數據中。(5)數據訪問時同時訪問基線數據和增量更新數據并合并。因此這樣好處是:(1)讀事務和寫事務分離
(2)通過犧牲一點擴展性(寫是一個單點),來避免分布式事務處理。
說明:該系統雖然能處理高并發的事務型處理,號稱很牛逼,但其實也只是根據電商的事務處理來定制開發的專用系統,個人認為其技術難度小于oracle等通用型的數據庫。該系統無法應用到銀行或者12306等,因為其事務處理的邏輯遠遠比電商商品買賣處理邏輯復雜。
在目前的大數據時代,一定是基于應用定制才能找到好的解決方案!
3)基于Hbase的交易系統
在hadoop平臺下,HBASE數據庫是一個分布式KV數據庫,屬于實時數據庫范疇。支付寶目前支付記錄就是存儲在HBASE數據庫中。
HBASE數據庫接口是非SQL接口,而是KV操作接口(基于Key的訪問和基于key范圍的scan操作),因此HBASE數據庫雖然可擴展性非常好,但是由于其接口限制導致該數據庫能支持上層應用很窄。基于HBASE應用的設計中,關鍵點是key的設計,要根據需要支持的應用來設計key的組成。
可以認為HBASE數據庫只支持作為KEY的這一列的索引。雖然目前HBASE有支持二級索引的方案,二級索引維護將會比較麻煩。
2并發和并行區別
并發是指同時執行通常不相關的各種任務,例如交易型系統典型屬于高并發系統。并行是通過將一個很大的計算任務,劃分為多個小的計算任務,然后多個小計算任務的并行執行,來縮短該計算任務計算時間。兩者主要區別在于:
(1)通訊與協調方面:在并行計算中,由于多個小任務同屬一個大的計算任務,因此小任務之間存在依賴關系,小任務之間需要大量通訊和協調;相反,并發中的多個任務之間基本相互獨立,任務與任務之間相關性很小。
(2)容錯處理方面:由于并發任務之間相互獨立,某個任務執行失敗并不會影響其它的任務。但是并行計算中的多個任務屬于一個大任務,因此某個子任務的失敗,如果不能恢復(粗粒度容錯與細粒度容錯),則整個任務都會失敗。
3本章總結
數據量大不一定需要并行計算,雖然數據量大,數據是分布存儲,但是如果每次操作基本上還是針對少量數據,因此每次操作基本上都是在一臺服務器上完成,不涉及并行計算。只是需要通過數據復制、數據緩存、異步處理等方式來支撐高并發訪問量
三
大數據背景下數據統計分析技術介紹
隨數據量變大,和事務處理不同的是,單個統計分析涉及數據量會非常大,單個統計分析任務涉及數據會分散在多臺服務器上,且由于計算量大,采用單臺服務器進行計算,會導致計算時間非常長,單個統計分析任務必須采用并行計算方式來加快單個統計分析任務執行速度。1并行查詢與并行計算技術介紹
在大數據背景下的數據統計分析技術門類很多,常見的有: n MPP并行數據庫 : TeraData、GreenPlum、Vertica等。n 基于MapReduce并行計算框架的數據倉庫: HIVE(Hadoop平臺)、Tenzing(Google公司)n 基于Hbase的Phoenix系統 n HadoopDB系統 n EMC公司的hapt系統
n MPP分布式查詢引擎: Dremel、Impala、Presto、Shard query、Citusdb。n 基于SPARK的Shark、基于Dryad的SCOPE、基于Tez的stinger。n 基于hadoop+index的JethroData系統 n 基于內存計算的Druid系統
這些系統都解決了海量數據下的數據統計分析的問題,并且這些系統另外一個共同特點是都提供了SQL或者類SQL接口。
為了能夠較好研究這些系統,我們需要對并行查詢與并行計算的相關技術做一個簡要的介紹。
首先所有的系統都可以分為三個層次: 語義層、并行計算引擎層、分布式存儲層。語義層提供一個編程接口讓用戶表達所需要計算,并負責把該計算翻譯成底層并行計算引擎可以執行的執行計劃,并由并行計算引擎來執行,最下面一層是分布式存儲層。
對于提供類SQL接口并行計算系統,語義層可以認為是SQL解析層。1)語義層
SQL語言是一種聲名式語言,SQL只是表達了要做什么,而沒有表達怎么做。為此,SQL解析層主要作用是:將用戶提交的基于SQL的統計分析請求,轉化為底層計算引擎層可以執行的執行計劃。也就是解決“怎么做”的問題。SQL解析層工作主要包括兩個大方面:(1)通過語法分析技術來理解要做什么。在關系數據庫中,一般會把SQL語言分析后,形成樹型結構的執行計劃。
(2)在語法分析技術上,利用各種優化技術和算法,找出一種最經濟物理執行計劃。
優化可以分為兩個方面:一是邏輯層面優化、二是物理執行層面優化。(1)邏輯層優化
邏輯層面個人認為主要是因為同樣表達一個分析請求,有的人SQL寫的好,有的人SQL寫的爛,因此在邏輯層面可以通過一些等價關系代數變換,實現查詢重寫,將寫的比較爛的sql變換為好的寫法。
比較典型優化是:“把投影和過濾下沉,先執行過濾和投影操作”,減少中間結果。
(2)物理層優化
物理層面優化是在邏輯優化后,結合實際物理執行過程,找出最優的物理執行計劃。生成物理查詢計劃的工作包括: ü 增加一些操作符: 包括掃描和排序等。
ü 確定各個操作符實現算法。例如掃描是全表掃描還是利用索引;Join是采用HASH連接、索引連接、合并排序等實現算法中的那一種。ü 確定操作符之間的數據流轉方法:物化還是流水線方式。
ü 采用基于代價估算方法確定最優的物理執行計劃,目前代價估算主要是以估算該物理計劃需要的IO量。另外對于并行數據庫,則還要考慮通訊代價,即盡量減少數據在各個機器之間的傳遞。
在物理層優化的代價估算過程中,代價估算需要依靠很多統計信息,如表有多大,表中相關列的值分布是什么樣子等。傳統數據庫在數據Load過程中會事先計算好這些統計信息。并行計算中還需要考慮通訊代價。需要指出是,由于imapla、Presto、HIVE等系統只是一個查詢引擎,它們可以直接查詢以普通文件方式存儲在HDFS系統上的文件,因此這些系統一般無法使用索引和各種統計信息來進行物理執行計劃的優化,這些系統一般只能在邏輯層進行一些基于規則靜態優化。根據SHARK論文,SHARK系統支持根據前面一些節點計算獲得的信息,來動態優化后面執行計劃。
(3)物化與流水線執行方法
一條SQL語句對開發人員而言,感覺只是一次調用,但是實際上在數據庫內部,一條SQL語句執行其實是有多個操作符組合而成的的樹型結構計算流。如下圖:
針對該計算流有兩種執行方式:一是基于物化或者是實體化執行方式,另外一種是基于數據流的執行方式。第一種方法的過程是: 把各個操作運算排序,并把每個操作運算的輸出的中間結果存儲在磁盤上,直到被另外一個操作運算所讀取。
另外一種方法是同時交錯進行多個運算,由一個運算產生每個元組直接傳遞給下一個運算,而不將中間結果存儲到磁盤,也不用等到前一個運算全部運算完畢。例如: 兩個表連接后,再進行投影操作。如果采用第一種方法,則需要 把兩表連接中間結果臨時寫入磁盤,然后再讀取該結果執行投影操作。而如果采用第二種方法,則連接操作一旦產生一個元組就可以立刻送到投影操作去進行投影操作。
流水線方法可以極大避免大量的中間結果磁盤IO。因此數據庫一般會采取流水線方法來執行。流水執行方法有兩種模式:一種是需求驅動流水線,也就是從上層主動向下層要求元組,另外一種是生產者驅動流水線執行方式,由低層主動產生元組,由下層向上層推。
目前大部分數據庫引擎采用的是需求驅動流水線,實現方式采用基于Graefe提出的迭代器模型。該模型把每個操作都表達為由三個接口: open(), getnext(), close()。每個操作被調用open()進行準備工作,然后通過反復迭代被調用getnext來獲取下一個元組,最后被調用close來進行清理工作。通過構建迭代器網絡,也就是迭代器之間的互相調用,就可以實現需求驅動流水線。
當然不是任何操作都可以流水執行,流水執行條件是:操作要滿足在接收輸入元組時可以輸出元組。例如排序操作就無法進行流水操作,在執行排序操作前都必須進行實體化。
(4)SQL解析層與并行計算引擎層 由于不同并行計算引擎層的執行計劃表達不同,因此不同系統需要將SQL解析成不同的形式物理執行計劃,例如:
MPP關系數據庫一般是把SQL解析成樹狀結構的物理執行計劃。
HIVE、Tezning數據庫是把SQL解析成DAG結構的多個MAPREDUCE組合。DRemel等則類似MPP關系數據庫,把SQL解析成一個樹狀結構執行計劃。微軟SCOPE則需要把類SQL解析成DAG結構的Dryad可執行的執行計劃。SHARK則需要把SQL解析成基于scala語言的DAG結構執行計劃。
并發
并行
并行計算引擎層(1)并行計算形式 并行化可以分為水平并行(無依賴并行)與垂直并行(流水線并行)兩類。如下圖:
如果兩個操作OP1、OP2 無相互依賴關系,則稱這兩個操作相互獨立。水平并行化指的是互相獨立的多個操作或者一個操作內互相獨立的多個子操作分別由不同的處理機并行執行的形式。例如,排序操作、掃描操作由不同處理機并行執行就是水平并行化的實例。
水平并行中一個非常常見的就是基于數據劃分的并行,例如MAPREDUCE,就是通過將數據劃分到多臺服務器上,并行執行MAP和Reduce來進行并行運算。也有人把這種基于數據劃分并行與操作獨立并行區分開。
垂直并行化則是指存在流水線方式依賴關系的操作分別由不同處理機并行執行的形式。流水線方式依賴:如果OP2無需等待OP1執行完畢即可在另一處理機上開始執行。由于一般情況下,流水的級數遠小于處理的數據條目,因此流水并行主要意義是在可以避免中間結果磁盤IO操作,對并行度的貢獻相對較小。
(2)并行計算面臨的問題與并行計算框架
并行計算需要解決的問題主要包括幾下幾個方面:自動并行化、通訊、任務調度、并發控制、容錯、資源管理。由于并行計算面向上述一系列問題,因為業界為了簡化并行程序開發,提供了一系列的并行計算底層庫或者框架。
在高性能計算領域,最常用于并行計算編程的庫是MPI庫,但是該庫主要只是解決通訊問題。這導致容錯、資源管理、任務調度、并行化等方面問題需要程序員來解決,因此利用MPI開發并行程序相對比較困難。
最近一些年,各大型互聯網公司開發開發了一系列的通用并行計算框架。包括谷歌公司的MAPREDUCE框架、微軟公司的Dryad框架(目前微軟已經停止該項目開發,轉而支持hadoop)、谷歌公司基于BSP模型的Pregel框架、Twitter公司的Storm框架、Yahoo公司S4框架、HortonWorks公司的Tez框架、Berkeley大學的spark框架等通用并行計算框架。
有了這些框架了,程序開發時只需要編寫串行執行程序即可,而且也不用考慮任務與任務之間的并發控制以及通訊等問題,其它所有問題都有框架來解決,這樣就大大簡化并行程序開發難度。例如采用MAPREDUCE框架,我們只需要提供MAP函數和Reduce函數,這些函數對程序員而言,都只是對本地數據操作。目前雖然并行計算框架很多,但是可以把它們分成幾個大類(基于BSP并行圖計算引擎請參考第四章):
流數據并行計算框架 Storm、S4是屬于流數據并行計算框架,適合對流數據實時處理,也就是在數據寫入磁盤前對數據進行實時并發運算。這類特點是計算不變,數據一直在變化。在上一個文檔中,對此框架做過詳細介紹,這里不再詳細介紹。基于DAG通用批處理并行計算框架
MapReduce、Tez、Dryad、Spark等屬于基于DAG(有向無環圖)的通用批處理并行計算框架。這類框架是針對存儲在存儲設備上的一批數據進行分析處理,而且把分析處理流程利用DAG模型來表達。
在這些框架中MAPREDUCE是最早出現的框架,而后面出現的一系列框架都為了改進MR框架不足而出現的升級版本。MR框架主要不足是兩個方面:
一是編程接口太簡單,表現在單個MAPREDUCE無法表達復雜運算,所以在實際應用環境中都是通過多個MR作業組合來完成一個任務。為了簡化MR作業組合,在早期出現了一系列項目來執行組和式MR作業,例如Cascading項目。另外一個方面所有問題都必須轉換為MAP和REDUCE模式,導致程序編寫比較麻煩。
二是MR只支持基于數據分區并行方式,不支持流水線并行,采用是步步物化策略來提高可靠性,當是這種導致大量中間結果物化,IO開銷非常大。因此Tez、Dryad、Spark等后續框架改進主要針對以下兩點進行改進: 一是直接支持基于DAG結構表達方法,DAG使得用戶能夠非常清晰地寫出非常復雜的業務邏輯; 二是通過支持流水線并性方式或者是盡量將中間結果放內存等方式,解決中間結果物化導致的IO開銷問題。Dryad和Spark框架在執行運算時,都會自動識別可以采取流水線方式執行的計算步驟,并盡量采用流水線執行方式來執行。容錯:由于支持流水線并行或者采取把中間結果放內存的方式,因此要必須考慮容錯的問題。由于這些框架都采用的是DAG結構,DAG中一個節點所代表計算的執行是不會對輸入進行修改(所謂函數式編程),因此可以多次重復執行不會影響計算。因此如果某個節點計算失敗,它可以根據輸入重復計算,而如果輸入數據也消失了,則讓前一個節點重新計算。所有這一切都是由框架自動執行。當然需要指出的是對一些流水線執行的多個計算步驟,如果某個計算節點失敗,則只能整個流水線整體失敗。
基于Tree結構的MPP并行查詢引擎
MPP并行數據庫與Dremel、impala、Presto、Shard query、Citusdb都采用的是基于Tree結構并行查詢引擎。此類并行計算引擎共同特點是: 一是針對SQL專用并行計算引擎,只支持SQL或者類SQL語義。二是執行計劃都是樹狀結構;
三是以流水線或者將中間結果放入內存方式來實現快速計算。四是粗粒度容錯機制。它們之間不同點:
一 MPP并行數據庫中并行查詢引擎與底層存儲是緊耦合的,導致如果采用MPP并行數據庫,則只能通過SQL來訪問數據,無法采用其他計算引擎直接處理存儲在數據庫中的數據。
二 Impala、Presto都只是一個并行查詢引擎,它們可以直接查詢以文件方式存儲在HDFS上的數據,這樣同一份數據既可以利用這些引擎來實現交互式查詢,也可以支持利用其他計算框架進行更深入分析。
三 Dremel 只支持Google自己的基于嵌套結構列式存儲(Column IO)。該引擎也主要適合于聚合型計算,不支持join操作。
四 上述引擎中只有MPP并行數據庫可以利用索引以及各種統計信息來優化物理執行過程,因此該系統執行效率應該是最高。
五 Dremel、impala都只適合中間結果越來越小的查詢,因為這些系統都是把中間結果放在內存,一旦某個中間節點輸出結果超過內存,則整個任務會失敗,例如大表之間Join。
六 shard query和citusdb 都是在單機版本關系數據庫基礎上,采用增加一層中間件方式來支持并行查詢。
n基于Tree并行計算引擎與基于DAG并行計算引擎本質區別
基于Tree結構并行計算引擎與基于DAG并行計算引擎從表面上看,它們之間的主要區別是在于語義層面:前者主要專用與SQL類,而后者更通用。但是MPP并行關系數據庫引擎、Imapla等都會支持通過UDF來擴展和解決標準SQL語言表達能力,另外SQL語言本身可以通過嵌套查詢、子查詢、union等各種方法表達很復雜的計算過程,因此從語義表達層面來講他們之間不存在本質區別。
這兩者之間主要區別還是在于表達執行計劃結構方面:樹結構是一個逐步匯聚的一個計算過程,無法表達split結構,因此基于DAG表達結構更靈活和通用。個人認為:樹型結構可能更加適合采用迭代器模型來實現流水線式的操作(只有樹結構才有上下層的關系,因此方便實現上層操作符嵌套調用下層操作符)。所以不是所有計算都可以通過一個復雜SQL語句來表達!
(5)自動并行化、數據重分布、本地調度
并行計算引擎最重要的一個職責是自動并行。根據前面的并行計算基礎知識,并行計算的形式主要包括:基于數據劃分水平并行、基于流水線垂直并行、基于無依賴水平并行三種方式。
大數據屬于數據密集型計算,數據數量遠遠超過計算步驟數量。因此基于數據劃分并行方式是最有效的一種并行計算方法。在整個并行計算過程中,基于數據劃分中涉及數據可以分為兩大類:原始數據與中間結果數據。n 原始數據劃分以及SN、SD架構討論
原始數據則可能存在兩種情況:一是在Shared-nothing架構中,原始數據本身就已經劃分好了,例如HDFS或者SN架構 MPP數據庫;另外一種情況如shared-disk結構中,原始數據沒有劃分。
第一種情況下針對原始數據劃分并行計算,就要受該劃分的限制。例如在MAPREDUCE中,map輸入是存儲在HDFS上的數據文件,因此MAP實例個數一是不能少于該數據文件分片數,二是MAP實例最好運行在該數據文件所在機器,也就是要求任務調度時,能把該任務調度到特定機器上,即所謂“本地調度”,將計算盡量移動到數據。第二種情況下,由于所有計算節點都可以看到所有數據,因此此時可以根據計算特點靈活選擇:數據劃分粒度、并行度、參與計算的節點。例如在ORALCE并性機制中,ORALCE可以針對某張表,按block或者partition 為單位進行劃分。根據上述分析我們可以發現SD架構相對SN架構,在針對原始數據第一級并性計算時,SD架構更靈活,SN架構面臨的一個缺陷就是如果原始數據分布不均衡,則存在計算傾斜問題。
但是現在大部分大的數據庫廠商的MPP數據庫還是采用了SN架構。根據網上所查資料來看,主要原因有兩點:
一是SD架構下,磁盤是一個共享資源,計算節點越多磁盤爭搶概率越大(和RAID隨機IO沖突道理一樣),導致該架構可擴展性不夠好,也就是可能計算節點越多,效率相反不會提高。
二是從緩存角度來看,SD架構下每個機器緩存都要面向全數據庫,會導致命中概率底下;目前ORACLE-RAC開發一個fusion cache技術,實現了一個全局共享緩存來解決上述問題,但是可想而知這會影響系統可擴展性。因此超過一定規模數據分析系統,都是采用SN架構。
中間結果數據劃分與數據重分布
中間結果是由各個計算節點產生的,因此中間結果生成是就是分布在各個參與計算節點之上的,因此:
一 :SD架構下數據共享好處,對中間結果無效。
二 :如果由于計算任務之間需要,需要在任務之間傳遞中間結果,則即使是SD架構也存在數據重分布的問題,主要是中間結果重分布,也就是中間結果傳輸。另外從該過程我們還可以得出另外一個結論:
一: 對于復雜的數據處理,索引只能影響第一級計算,對于中間結果,由于只使用一次,因此沒有必要去針對中間結果建立索引。也就是即使我們將數據存儲在關系型數據庫中,也只有第一級計算能有效利用數據庫索引。
二:即使采用并行數據庫,如果我們的整個計算過程不能用一個SQL語句來表達,則我們必須自己解決中間結果的劃分與并性計算的問題。
(6)并行計算引擎架構與資源管理
所有并行計算引擎實現基本上都是主從結構,即一個MASTER + 多個slave節點的結構。由client向MASTER提交一個job,然后由Master負責將邏輯執行計劃變成實際執行計劃,并由Master負責將各個任務分發到各個slave中,并負責各個任務的調度。MPP數據庫查詢引擎架構
MAPREDUCE架構和該架構缺點
Mapreduce框架中,JobTracker承當MASTER的職責,一般和HDFS中的NadeNode節點安裝在一個服務器上。TaskTracker安裝在各個DataNode上,承擔Slave的角色。
流程如下:
(1)首先用戶程序(Client Program)提交了一個job,job的信息會發送到Job Tracker中,Job Tracker是Map-reduce框架的中心,他需要與集群中的機器定時通信(heartbeat), 需要管理哪些程序應該跑在哪些機器上,需要管理所有job失敗、重啟等操作。
(2)TaskTracker是Map-reduce集群中每臺機器都有的一個部分,他做的事情主要是監視自己所在機器的資源情況(資源的表示是“本機還能起多少個map-task,多少個reduce-task”,每臺機器起map/reduce task的上限是在建立集群的時候配置的),另外TaskTracker也會監視當前機器的tasks運行狀況。
(3)TaskTracker需要把這些信息通過heartbeat發送給JobTracker,JobTracker會搜集這些信息以給新提交的job分配運行在哪些機器上。MAPREDUCE結構存在以下缺點:(1)jobtracker只能安裝在一臺服務器上,集中式作業控制導致可擴展性不好,另外JobTracker負責事情太多,容易成為性能瓶頸。
(2)資源調度與編程模型緊耦合,只支持MAPREDUCE一種編程模型。(3)資源劃分太簡單,每個TaskTracker只是簡單把整個機器資源按map task slot和reduce task slot來劃分,而沒有考慮不通任務所需的內存和CPU等的資源不同。
針對上述特點,hadoop平臺開發通用的資源管理器yarn,只負責資源管理和分配,即通過把jobtrack中的資源管理分配自和并行應用程序調度與控制分離,從而實現雙層調度框架:由yarn把資源分配給各計算引擎MASTER,再由MASTER分配給各個TASK。
資源管理器YARN
流程如下:
1)client 通過一個CLC(container launch context)向ResourceManager提交一個應用
2)RM 啟動該應用的 AplicationMaster。AplicationMaster啟動后先向ResourceManager注冊,并利用心跳信息,定期向ResourceManager報告自己存活性和資源分配請求
3)ResourceManager分配一個container(container包括CPU個數和所需內存數量)時,AplicationMaster構造一個CLC,并在該container對應機器上Nodemanager上啟動該container。AplicationMaster 監控該container的運行狀態,并且該資源需要被回收時,由AplicationMaster停止該container。監控container內部的作業的執行進度是AplicationMaster的職責。4)一旦整個運行完畢,AM從RM中解除注冊,并且干凈退出。
這種架構優點是:
優點一:減小了JobTracker(也就是現在的ResourceManager)的資源消耗,并且讓監測每一個Job子任務(tasks)狀態的程序分布式化了,更安全、更優美。也就是ApplicationMaster是每個應用一個,并且不通應用對應的ApplicationMaster的實例可以運行在不同服務器上。
優點二:能夠支持不同的編程模型ApplicationMaster是一個可變更的部分,用戶可以對不同的編程模型寫自己的ApplicationMaster,讓更多類型的編程模型能夠跑在Hadoop集群中。
優點三:對于資源的表示比之前以剩余slot數目更合理。
存儲層
數據存儲層主要包括以下幾類:
一類是基于MPP數據庫集群,這類系統特點是存儲層與上層并型計算引擎是緊耦合,屬于封閉性的系統。
二是采用分布式文件系統,例如SharK、Stinger、HIVE、Impala、Scope等。Shark、Stinger、Hive、Imapla都采用HDFS文件系統作為存儲層,Scope采用微軟自己開發的分布式文件系統。此類系統特點是存儲層與上層計算引擎層之間是松耦合關系。三是存儲層基于單機版本關系數據庫,例如CitusDB采用PostSQL數據庫系統、shardquery采用Mysql數據庫系統。此類系統類似于一個中間件,也可以認為上層和底層存儲層屬于松耦合關系。
四是可以支持各種異構的存儲系統,例如Presto、Tenzing。Presto設計即支持HDFS也支持存儲在Mysql中的數據,但是目前只支持HDFS;Tenzing底層支持:Google File System、MySQL、Bigtable。
不同存儲系統對上層計算有一些影響,典型如Tenzing系統會利用底層存儲系統的一些特性:
(1)例如如果低層是mysql數據庫,則可以直接利用mysql索引來過濾(2)如果底層是bigtable數據庫,則可以直接利用bigtable 范圍scan來過濾(3)如果底層是列存儲系統,則可以只掃描需要掃描的列。
(4)如果底層是列存儲系統,且頭文件里面有該列最大值和最小值,則可以利用該信息直接跳過某些文件的掃描。
另外需要指出的是,目前已上所有系統都有一個趨勢就是采用列式存儲。例如HIVE開發了行列混合的RCFILE文件格式(先按行劃分,保證每行的數據不會垮機器存儲,然后再按劣存儲),shark系統開發了內存中的列式存儲格式,citusDB開發了專用postSQL數據庫的列式存儲引擎。Druid等專用系統簡單介紹 1)JethroData系統 JethroData的特點是hadoop+index。該系統對存儲在HDFS上的結構化數據建立索引,并把索引文件也以普通文件方式存儲在HDFS系統,并在查詢處理時采取以下過程:
(1)查詢主節點負責分析SQL語句后,針對sql中的where條件部分,利用索引文件來得到符合where過濾條件后的rowid集合。
(2)該rowid集合涉及各datanode節點,采用并發方式來讀取數據。(3)所有數據匯總到查詢主節點,進行匯總與計算,并將最終結果返回給客戶端。可以看出,由于該系統設計思路是希望通過索引來加速數據選擇,因此只適合每次查詢處理只涉及少量一部分數據。
2)Druid系統
本系統是美國metamarket公司開發的面向海量數據的實時統計分析系統,以實現針對上億級別海量數據統計分析的延遲在1秒以內。該系統于2012年10月開源。該系統可以認為是一個分布式的內存OLAP系統。
該系統主要分析的數據為交易記錄,每條交易記錄包括三個部分:交易發生的時間點、多個維度屬性、多個數值型度量屬性。例如:
該系統設計用來可以回答以下問題“有多少個針對Justin Bieber的編輯來自San Francisco? ”、“一個月內來自Calgary的增加編輯字數的平均數是多少?”。而且要求:能夠在高并發環境下,在1秒以內完成任意維度組合的統計,且保證系統高可用;還系統還要能夠具備實時數據分析能力,也就是能夠查詢分析到最新的數據,延時時間為秒級。
為了達到上述目標,該公司先后通過測試發現關系數據庫技術和NOSQL數據庫都無法滿足其需求。關系型數據庫由于磁盤io瓶頸導致性能無法滿足需求,而NOSQL數據庫雖然可以采用預計算方法來達到高性能,但是預計算無法滿足分析需求靈活多變。
為解決該問題,該公司自己開發DRUID系統,主要技術思路如下:(1)將原始數據(alpha數據)進行一定粒度合并,合并成beta數據。(2)將beta數據全部放入內存,并通過分布式內存方式解決單臺服務器內存
上限問題。
(3)針對緯度屬性建立索引,以加速數據的選取。
(4)采用分布式方式進行并行統計,為了保證分布式統計高效,該系統不支持join,而且對聚合計算不支持中位數等無法分布計算的聚合計算函數。(5)利用數據復制解決系統高可靠性問題。4 本章總結
1)MPP并行數據庫得益于流水線的執行以及基于統計優化等方面,使得MPP并行數據庫的執行效率是最高的。但缺點包括:
n 數據導入時間長,導入時要做各種預處理,例如一些統計信息; n 執行引擎和存儲緊耦合導致數據難以被其他分析引擎進行分析;
n 基于樹型結構執行計劃,導致MPP并行數據庫表達能力有限,更適合做統計與查詢,而不適合數據分析處理;
n 容錯性差,特別是一個任務涉及數據量越大,該缺陷越明顯。2)HIVE、Tenzing、Shark、SCOPE、Stinger等系統可以認為基本屬于同一類系統。這類系統共同特點是:”通用并行計算引擎框架+SQL解析層”。并且可以將HIVE、Tenzing看成是基于第一代系統,而Shark、Scope、Stinger是第二代系統。這一類系統特點如下:
n 存儲層、執行引擎層、SQL解析層三者分離,可以方便替換執行引擎,對使用者而言,同一份數據可以采用不同并行執行引擎來分析。
n 在執行效率方面,由于存儲和上層分離因此一半只能具備邏輯優化能力,另外由于Tree結構執行計劃更容易采用流水線執行方式,因此這類系統執行效率總體來講不如MPP關系數據庫,它們之間排序是MPP數據庫 > 第二代系統 > 第一代系統。
n 在執行效率方面,另外一點是這類系統一般內置對索引的支持不是太好或者不支持。
n 在大規模計算容錯方面,這類系統要優于MPP關系數據庫。
3)Impala、Dremel等可以認為屬于同一類系統,此類系統介于前兩者系統之間。這類系統特點是:
n 和MPP數據庫類似,基于Tree結構執行計劃,專注于查詢統計,因此效率高于第二類系統,但是可能和第二類系統的第二代相當。
n 與MPP數據庫不同的是這類系統只是一個引擎,與存儲系統松耦合。也就是SQL解析層與執行層緊偶合,然后和存儲層松藕合。
n 只適合做中間結果越來越小查詢分析,中間結果都放內存,對內存要求較高,例如無法實現大表之間的join。因此,在大型互聯網企業中,數據量太大,就會出現所謂“高價值、低密度”情況,反映到數據處理上,互聯網企業不會長期存儲原始數據,而是會把原始數據先經過一部分預處理,經過部分提煉后,把提煉后數據進行長期存儲和分析。也就是如下流程:
例如淘寶,把每天數據直接寫入Hadoop平臺,然后通過每天運行相對固定
mapreduce作業來做ETL,然后在計算結果基礎上為提供各種分析功能。其中海量原始數據經過固定ETL后被刪除,由于只使用一次,因此沒有必要花很大精力把這些數據整理成適合分析與挖掘格式。例如在這種場景下,索引也沒有太大的價值,因此沒有必要花費大量代價來建立索引。
MPP并行數據庫,適合存儲高密度價值數據,并且是長期存儲和多次使用,所以MPP并行數據庫會花大量經歷在Load階段,把數據處理成適合分析格式。通過上述系統地介紹與比較,我們可以得出一個這樣結論:在大數據領域,沒有一個通用的解決方案,而需要根據具體業務場景,選擇合適的技術!
4)通過上述系統研究,我們可以發現一點就是Join操作,特別是大表之間join操作是最消耗資源,也是最優化難度較高的操作,特別是在并行join的實現難度較大。例如Druid和Dremel等都基本放棄了join操作。因此個人認為應該從業務上和從數據預處理方面,通過適當數據冗余來盡量避免在分析過程過程中執行join操作。
四 大數據背景下數據分析挖掘技術介紹 1 Mahout與MLlib項目
數據分析挖掘主要涉及兩個方面:一是數據預處理;二是數據挖掘。
在數據預處理方面,根據掌握資料來看,大型互聯網公司主要以MapReduce、Storm等計算框架為主,這些平臺可以較好解決大數據預處理面臨并行計算和處理靈活性的問題。但是個人認為spark、tez等屬于MapReduce升級版本,因此后面這些計算框架在這方面的應用會越來越廣泛。
在數據挖掘算法執行方面,主要問題解決數據挖掘算法并行計算問題。早期在數據挖掘算法并行化方面項目主要是Mahout項目,該項目基于MAPREDUC 并行計算框架實現了推薦、分類等常用數據挖掘算法的并行化。
但由于數據挖掘算法存在以下兩個方面特點導致基于MAPREDUCE框架來做數據數據挖掘算法執行引擎效率不高:一是機器學習算法一般比較復雜,通常需要多次迭代計算,而MapReduce框架的步步物化導致中間結果會反復的序列化和反序列化導致效率不高;二是數據與數據之間依賴特別多,在計算過程中機器與機器之間的通訊非常多,而MapReduce框架下Map與Reduce之間存在路障同步, 導致大量時間被消耗在同步等待上面,效率不高。
因此目前Mahout項目在2014年1月份在0.9版本發布后,該項目拋棄了MAPREDUCE框架,轉而采用SPARK作為底層計算框架。
除Mahout項目外,SPARK自己采用SPARK專門針對機器學習領域開發MLlib項目。但是MLlib項目出現時間比較晚,因此在成熟度方面不如Mahout。Mahout項目目前支持的數據挖掘算法如下:
MLLib支持的數據挖掘算法包括:
2 圖數據處理處理概述
在數據分析處理領域,隨社交網絡興起,對圖數據處理的需求越來越多。例如像Facebook和Twitter這樣的社交網絡,其數據天生就適合于圖表示法。對圖數據的處理和傳統數據庫處理一樣,也可以分為兩種類型的需求: OLTP工作負載,能夠快速低延遲訪問小部分圖數據。
OLAP工作負載,能夠對圖對象中的大部分數據進行批量分析與處理。1)圖數據OLTP處理(1)圖數據庫分類
適合圖書據OLTP處理的系統,主要是各種圖數據庫。從目前來看圖數據庫主要可以分為兩類:
一是基于圖存儲模型的專用圖數據庫,如Neo4j、OrientDB、Infinite Graph等;
二是以通用KV存儲系統或者關系數據庫系統開發的圖數據庫,例如Titan系統(2013年推出)可以后端存儲可以基于HBASE或者是Cassandra,Twitter公司的FlockDB圖形數據庫和facebook公司Tao圖形數據庫是基于mysql來進行開發。根據報道美國NSA就是利用2011年開源的Apache Accumulo(屬于分布式KV數據庫)來存儲社會關系網絡數據。
(2)圖數據查詢
圖數據查詢其實就是”遍歷”圖(Traverse)。圖數據庫查詢語言可以使用Gremlin、Cypher等查詢語言來查詢圖。例如Neo4j就支持Cypher查詢語言。Cyper查詢語言需要以一個節點來啟動(START)查詢,然后使用MATCH關鍵詞以WHERE關鍵字過濾節點或者關系的屬性,最后以RETRUN關鍵詞來指定查詢所返回的數據是節點、關系還是節點或者關系的屬性字段。例如: START barbara = node:nodeindex(name=”Barbara”);MATCH(barbara)—(connected_node)RETURNconnected_node.(3)兩類圖數據庫區別
第一類與第二類圖數據庫區別在于以下幾點:
查詢功能方面
第一類圖數據庫可以以非常高效率方式支持復雜查詢,既支持從指定起點開始,以任意深度來遍歷圖,并且還可以支持各種過濾。這樣就可以很方便的執行各種圖專用查詢任務,例如“查找兩個節點間所有路徑或者最短路徑”等。相反第二類數據庫則只能支持較為簡單查詢,如FlockDB就只支持深度為1的關系遍歷(個人認為也可以實現,只是效率不高)。可擴展性方面 大部分第一種圖形數據庫都不支持分布,個人認為可能分布后這種復雜查詢難以做到高效,因此可擴展性不好。而第二種由于只支持簡單的圖便歷,一般通過采取按“邊”切分的方法來進行分布存儲,因此可擴展性較好。
2)圖數據OLAP處理
對圖數據進行復雜分析,就需要分布式的批處理框架。例如大規模的PageRank計算。在這個領域出現并行圖計算框架常見有Apache Giraph、Apache Hama、GraphLab、Pregel、GraphX等。
Pregel是Google根據BSP并行計算模型開發的圖計算引擎,目前該系統沒有開源。GraphX是Spark項目組基于Spark框架開發的圖計算引擎;而GraphLab則是直接在MPI框架基礎上開發的專用圖計算引擎。下面簡單介紹幾種主流并行圖計算引擎。3 并行圖計算引擎
1)基于BSP模型的Pregel引擎
簡介
Pregel是Google公司開發的并行圖計算引擎,主要用于實現各種機器學習算法。Pregel的輸入是一個有向圖,該有向圖每一個頂點都有一個相應由String描述的頂點標識符。每一個頂點都有一個與之對應可修改用戶自定義值。每一條有向邊都和其源頂點關聯,并且也擁有一個可修改的用戶自定義值,并同時還記錄了其目標頂點的標識符。
Pregel可以采用多種文件格式進行圖的保存,比如可以用text文件、關系數據庫、Bigtable。為了避免規定死一種特定文件格式,Pregel將從輸入中解析出圖結構的任務從圖的計算過程中進行了分離。計算結果可以以任何一種格式輸出并根據應用程序選擇最適合的存儲方式。Pregel library本身提供了很多常用文件格式的readers和writers,但是用戶可以通過繼承Reader和Writer類來定義他們自己的讀寫方式。
編寫一個Pregel程序需要繼承Pregel中已預定義好的一個基類——Vertex類。
用戶覆寫Vertex類的虛函數Compute(),該函數會在每一個超級步中對每一個頂點進行調用。預定義的Vertex類方法允許Compute()方法查詢當前頂點及其邊的信息,以及發送消息到其他的頂點。Compute()方法可以通過調用GetValue()方法來得到當前頂點的值,或者通過調用MutableValue()方法來修改當前頂點的值。同時還可以通過由出邊的迭代器提供的方法來查看修改出邊對應的值。基于BSP的執行模型
讀取輸入初始化該圖,當圖被初始化好后,運行一系列的超級步直到整個計算結束,這些超級步之間通過一些全局的同步點分隔,輸出結果結束計算。在每個超級步中,頂點的計算都是并行的,每個頂點執行相同的用于表達給定算法邏輯的用戶自定義函數。每個頂點可以修改其自身及其出邊的狀態,接收前一個超級步(S-1)中發送給它的消息,并發送消息給其他頂點(這些消息將會在下一個超級步中被接收),甚至是修改整個圖的拓撲結構。邊,在這種計算模式中并不是核心對象,沒有相應的計算運行在其上。
算法是否能夠結束取決于是否所有的頂點都已經“vote”標識其自身已經達到“halt”狀態了。在第0個超級步,所有頂點都處于active狀態,所有的active頂點都會參與所有對應superstep中的計算。頂點通過將其自身的status設置成“halt”來表示它已經不再active。這就表示該頂點沒有進一步的計算需要執行,除非被再次被外部觸發,而Pregel框架將不會在接下來的superstep中執行該頂點,除非該頂點收到其它頂點傳送的消息。如果頂點接收到消息被喚醒進入active狀態,那么在隨后的計算中該頂點必須顯式的deactive。整個計算在所有頂點都達到“inactive”狀態,并且沒有message在傳送的時候宣告結束。
2)graphLab(1)簡介 GraphLab一套基于c++的開源圖計算庫,提供了在共享內存情況下的異步、動態和并行圖計算的高層抽象API。該庫采用MPI和TCPIP來實現進程間通訊,采用Pthreads實現進程內的多線程并發計算,支持從HDFS和標準文件系統中讀取數據。GraphLab定義了多種用于存儲圖的文件格式,包括“tsv”,“snap”, “adj” “bintsv4”。
(2)與Pregel的不同
GraphLab不是采用BSP的嚴格執行模型,GraphLab的基于BSP的Pregel的典型的改進是在更好的“異步迭代計算”和“動態計算”。因此該框架計算效率比Pregel更好。
異步計算:很多重要的MLDM算法迭代更新一大批參數,圖結構導致參數更新依賴其它的參數。同步系統會以上一次更新的參數基礎上一次更新所有的參數(BSP模型中超級步之間市全局路障同步),而異步系統則以最近的參數作為輸入來更新參數。異步迭代更新可以極大加 快MLDM算法的計算速度。因為如果采用同步計算,則存在木桶效應,整體速度取決于最慢的那臺機器。在大規模云計算環境下,負載不均衡、網絡不均衡、硬件差異和多租戶等會導致不同 機器之間的速度存在差異。另外由于圖分割不均衡,以及計算復雜性等導致各個節點計算量也不均衡。動態計算:很多MLDM算法的迭代計算收斂都不對稱,例如在參數優化是,通常很多參數在很少幾次迭代中就會快速收斂,而剩下少數參數則即使經過多次迭代也會收斂很慢。因此如果我們等同更新所有的參數,則會浪費大量的時間在重復計算那些已近收斂的參數上。最近的一些計算框架部分支持動態計算,例如Pregel可以通過讓某些節點跳過一些超級步來部分支持動態計算。(3)GraphLab的計算模型
graphLab包括三個部分:數據圖、更新函數、同步操作。數據圖表達用戶可修改 的程序狀態,存儲可變的用戶自定義數據和計算之間依賴。更新函數通過一個scope的數據變換來表達用戶對數據圖的計算和操作。同步操作并發維護全局匯總。
一個點的scope代表存儲在這個點上的數據 和所有與這個點相鄰的點和邊上的所有數據。update f(v ,s(v))--->(s(v), 邊集合)。經過一個更新函數后,新計算出 的s(v)會被寫回圖,并返回一個定點集合,針對該集合的每個點再執行 f(u ,s(u))
為了更高效的并行執行,GraphLab容許GraphLab框架動態的選擇執行順序,即RemoveNext(T)的返回值。因為很多MLDM算法需要執行優先級別,因此也可以指定點的優先級,這樣GraphLab會綜合考慮優先級以及網絡情況來調度。
(3)GraphLab的并行計算
根據領域知識,將圖分割為K份,K值遠大于機器數量。每個分區被稱為atom, 以一個文件形式存儲類似HDFS的分布式文件系統上。Atom中存儲的是增加點和變的操作記錄,可以通過回放的方式來重構圖。
采取把點著色的方法,先保證每個點和相鄰點之間的顏色都不相同。通過一個顏色一個顏色的并發執行,來實現邊一致性。把這種成為顏色步,與BSP的超步模型相對應。該引擎保證在執行下一個顏色步之前,所有的修改都被傳遞,實現顏色步之間的路障同步。
由Master根據atom索引來計算atom的位置,并負責機器與atom之間的分配關系。然后每個機器讀取atom文件來加載圖。每個機器上有一個調度器負責調度屬于自己的子圖的點的計算。調度器負責把每個需要執行update 函數之前所需要的數據和鎖準備好后,放入一個流水處理隊列中,再由一個worker線程池來執行,通過一個分布式算法來確定所有機器上的調度器中的T為空,也就是整個計算結束。
3)graphX
基于SPARK圖形計算引擎,GraphX提供的API可以很方便的表達各種針對的轉換、過濾和查詢操作,但是GraphX不能直接實現迭代并行圖計算算法,但是可以基于這些API用來實現各種并行圖計算算法。在GraphX論文中描述了利用GraphX來實現Pregel、PowerGraph的方法。
GraphX的優勢是可以很方便的與shark等進行集成,例如直接對shark查詢后的結果進行圖計算。
4)總結
(1)上述計算引擎都可以以靈活方式來存儲圖,基本上都可以以文件方式來存儲圖數據,實現計算引擎與存儲分離。
(2)圖計算引擎都根據MDML算法特點采用專用計算模型,以提高效率。(3)所有圖計算引擎在計算時,基本都是需要把數據都加載到內存中。(來自preglel論文:當前整個的計算狀態都是駐留在內存中的。我們已經開始將一些數據存到本地磁盤,同時我們會繼續在這個方向進行深入的研究,希望可以支持
第五篇:數據處理與分析初體驗-2017教學案例
數據統計與分析初體驗
——《條形統計圖一》教學案例
《條形統計圖一》是統計學知識的入門,小學生對條形統計圖的學習實際上是對統計概念的初步認識和進行統計活動的初步嘗試。通過讓學生親身經歷數據的收集、分類計數、數據呈現等統計過程,使他們充分了解統計的意義和作用;條形統計圖作為眾多統計圖表中的基礎,又要讓學生了解條形統計圖的各個組成部分,包括標題、項目、單位長度及單位名稱、統計數據等,為之后的學習打下堅實的基礎。同時,在教學中要注重培養發散型思維,加深理解使用條形統計圖的優點,激發學習的興趣。
教學目標:
1、通過引導,使學生認識到運用圖表進行數據分析時的速度和便利性優勢。
2、讓學生初步理解條形統計圖,并能根據統計圖表提出并回答簡單的問題。
3、讓學生體驗完整的數據統計過程,包括數據收集、數據整理、數據展示、數據分析,初步了解統計的方法和意義。
4、使學生充分認識條形統計圖應用于解決實際問題的作用,激發學生的學習興趣。
【思考一】:如何引入條形統計圖,關鍵是在引入的同時要通過對比,讓學生了解條形統計圖在數據展示和數據分析方面的優勢。
[片段一](一般性做法):
首先引入本節課的課題;隨后向學生展示數幅條形統計圖,讓學生觀察這些條形統計圖。
在學生觀察的同時,引導學生回答條形統計圖的結構和構成,這些條形統計圖有什么共同點,圖上有哪些要素等。
師:請大家觀察一下這些條形統計圖,思考一下條形統計圖上有些什么共同點。
生1:都有橫線和豎線。上面還有一些刻度,有名稱,有數字。生2:有長短不一的直條。生3:還有標題。……
[體會]:通過對數幅條形統計圖找共同點的方法,學生們能很快的了解條形統計圖的要素,也能較快明白條形統計圖是用于數據展示作用的圖表。但是這樣的引入方式,總感覺很少學生能體會條形統計圖表示數據時的優勢所在,因此對該知識點的掌握并不深入。
[片段二](我的新做法):
首先,給學生三行數字,讓學生找出其中的最大值,看誰找的快。
師:小朋友們,我們先來玩個找數游戲,誰能最快找出最大的數字。找到就直接大聲說出來。
出示圖片:遞進式
師:數字越來越多,找起來怎么樣? 生:數字越多,越難找。
之后,同樣的三組數據,將其用條形統計圖來表示,讓學生來找一找最長的直條。
師:現在我給你們一些直條圖,誰能最快找出最長的直條。找到
直接用手指一指。
出示圖片:遞進式 師:你又有發現了什么? 生:直條很多也不難找。
師:沒錯,這些直條圖能讓我們很快的找出我們想要的數字,直條很多也不難找。
[體會]:為了讓學生能更好的理解和學好條形統計圖,我認為最關鍵的是要讓學生明白條形統計圖的優勢,因此我設計了此環節,目的是通過對比,讓學生親身感受到條形統計圖在數據展示方面的便利性和查找數據的快速性。
【思考二】:讓學生經歷數據收集、數據整理、數據展示、數據分析的全過程,深入體會統計的意義、目的和效果。[片段三]:
師:我們現在要條形統計圖表示一下全班每個月份的生日人數?應該怎么開始?
生:先統計一下每個月的生日人數。
師:很好,這叫做數據收集,那么請1月份生日的同學舉手。師:嗯,一共有4個人。……
師:現在我們已經都統計好了,接下來應該怎么辦呢? 生2:最好先把這些數字做成表格。
師:很好,這一步叫做數據整理。我們先用曾經學過的表格的知識將統計好的人數紀錄下來。
師:那接下來我們又應該怎么辦呢? 生3:把表格里的數據用條形統計圖來表示。
師:不錯,這一步就叫做數據展示了,讓我們來看一看用條形統計圖的展示結果。
師:那么接下來我們就要進行數據分析,我問幾個問題,看看你們能不能通過條形統計圖分析出來呢?在這張條形統計圖中,我指到某個月,你能迅速看出這個月有幾個人生日嗎?4、5、6、7月?
問:你們是怎么看的?
師:是的,從直條的上端橫著往左看是幾,直條就表示幾個人。師: 8月、9月、10月(齊說)
11、12月(手勢)
師:所以要知道這個月有幾個人生日,在條形統計圖中看什么?(看直條)是的,直條就表示統計的數據。
問:那你能一眼看出哪個月過生日的人最多嗎?哪個月過生日的人最少嗎?
生:9月最多。6月最少。
師:你怎么知道的?(9月的直條最長,6月的直條最短)問:所以人數的多少和什么有關?和直條的什么有關?是什么關系?
師小結:是呀,直條越長,數量越多;直條越短,數量越少。問:仔細觀察這張條形統計圖,你都看到了些什么?(同桌討論)生:標題、項目、單位名稱、直條:表示統計數據、一格表示1。師小結:是啊,統計表上的每一塊內容,我們都在條形統計圖上表示出來。統計的數據,我們用直條的長短來表示。特別要注意的是,這張圖里一格表示1。
[體會]:當今世界的迅速發展使得我們進入大數據時代,我們的生活中無處都離不開數據,使用數據的全過程包括數據收集、數據整理、數據展示、數據分析,條形統計圖作為眾多數據圖表的基礎之一,包含了數據展示和數據分析的功能,但其前端工作數據收集與數據整理同樣不容忽視,而這兩部分恰恰也是我們平時教學中所忽略的。
基于此,我設計了片段三這一環節,讓學生完整的感受數據處理的全過程。學生們在老師的引導下,想到了用統計的知識來解決問題,并一起動手親身參與到整個數據統計的過程當中,明白了在制作條形統計圖之前還需要進行數據收集和數據整理的環節,而且前兩個環節往往更加重要,也需要花費更多的時間。
在整個數據統計過程中,我選取了整個班級的生日數據作為數據樣本,在有限的時間內使每個學生都參與到數據統計中來,現實生活與教學知識的有機融合,使學生的主動性得到了很好的發展,并進一步體會到統計這一數學知識解決生活中實際問題的過程,較好地培養了學生的統計觀念和學習興趣。