做大數(shù)據(jù)過程中遇到的13個(gè)問題_第1頁(yè)
做大數(shù)據(jù)過程中遇到的13個(gè)問題_第2頁(yè)
做大數(shù)據(jù)過程中遇到的13個(gè)問題_第3頁(yè)
做大數(shù)據(jù)過程中遇到的13個(gè)問題_第4頁(yè)
做大數(shù)據(jù)過程中遇到的13個(gè)問題_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、做大數(shù)據(jù)過程中遇到的 13 個(gè)問題1、最早的數(shù)據(jù)分析可能就報(bào)表目前很多數(shù)據(jù)分析后的結(jié)果,展示的形式很多,有各種圖形以及報(bào)表,最早的應(yīng)該是簡(jiǎn)單的幾條數(shù)據(jù),然后搞個(gè) web 頁(yè)面,展示一下數(shù)據(jù)。早期可能數(shù)據(jù)量也不大,隨便搞個(gè)數(shù)據(jù)庫(kù),然后 SQL 搞一下,數(shù)據(jù)報(bào)表就由來了。但是數(shù)據(jù)量大起來怎么分析呢?數(shù)據(jù)分析完了怎么做傳輸呢?這么大的數(shù)據(jù)量怎么做到實(shí)時(shí)呢?分析的結(jié)果數(shù)據(jù)如果不是很大還行,如果分析的結(jié)果數(shù)據(jù)還是很大改怎么辦呢?這些問題在這篇文章中都能找到答案,下面各個(gè)擊破。2、要做數(shù)據(jù)分析,首先要有數(shù)據(jù)這個(gè)標(biāo)題感覺有點(diǎn)廢話,不過要做飯需要食材一樣。有些數(shù)據(jù)時(shí)業(yè)務(wù)積累的,像交易訂單的數(shù)據(jù),每一筆交易都會(huì)

2、有一筆訂單,之后再對(duì)訂單數(shù)據(jù)作分析。但是有些場(chǎng)景下,數(shù)據(jù)沒法考業(yè)務(wù)積累,需要依賴于外部,這個(gè)時(shí)候外部如果有現(xiàn)成的數(shù)據(jù)最好了,直接 join 過來,但是有時(shí)候是需要自己獲取的,例如搞個(gè)爬蟲爬取網(wǎng)頁(yè)的數(shù)據(jù),有時(shí)候單臺(tái)機(jī)器搞爬蟲可能還爬不完,這個(gè)時(shí)候可能就開始考慮單機(jī)多線程爬取或者分布式多線程爬取數(shù)據(jù),中間涉及到一個(gè)步驟,就是在線的業(yè)務(wù)數(shù)據(jù),需要每天晚上導(dǎo)入到離線的系統(tǒng)中,之后才可以進(jìn)行分析。3、有了數(shù)據(jù),咋分析呢?先將數(shù)據(jù)量小的情況下,可能一個(gè)復(fù)雜的 SQL 就可以搞由來,之后搞個(gè) web 服務(wù)器,頁(yè)面請(qǐng)求的時(shí)候,執(zhí)行這個(gè) SQL,然后展示數(shù)據(jù),好了,一個(gè)最簡(jiǎn)單的數(shù)據(jù)分析,嚴(yán)格意義上講是統(tǒng)計(jì)的分析

3、。這種情況下,分析的數(shù)據(jù)源小,分析的腳本就是在線執(zhí)行的 SQL,分析的結(jié)果不用傳輸, 結(jié)果的展示就在頁(yè)面上, 整個(gè)流程一條龍。 4、數(shù)據(jù)量大了,無法在線分析了,咋辦呢?這個(gè)時(shí)候,數(shù)據(jù)量已經(jīng)大的無法用在線執(zhí)行 SQL 的形式進(jìn)行統(tǒng)計(jì)分析了。這個(gè)時(shí)候順應(yīng)時(shí)代的東西產(chǎn)生了(當(dāng)然還有其他的,我就知道這個(gè)呵呵),數(shù)據(jù)離線數(shù)據(jù)工具 hadoop 由來了。這個(gè)時(shí)候,你的數(shù)據(jù)以文件的形式存在,可能各個(gè)屬性是逗號(hào)分隔的,數(shù)據(jù)條數(shù)有十幾個(gè)億。這時(shí)候你可能需要構(gòu)建一個(gè) hadoop 集群,然后把自己的文件導(dǎo)入到集群上面去,上了集群之后,文件就是 HDFS 的格式了,然后如果要做統(tǒng)計(jì)分析,需要寫mapreduce 程

4、序,所謂的 mapreduce 程序,就是實(shí)現(xiàn) map 和 reduce的接口,按照自己的業(yè)務(wù)邏輯寫分析流程,之后把程序打成 jar 包上傳到集群, 之后開始執(zhí)行。 分析后的結(jié)果還是文件的形式產(chǎn)生。 5、分析個(gè)數(shù)據(jù)還要寫 java 代碼是不是效率低了點(diǎn)這個(gè)確實(shí)是,mapreduce 的程序,本身的可測(cè)性沒有執(zhí)行一個(gè)簡(jiǎn)單的單元測(cè)試來的爽,所以效率確實(shí)不高。這個(gè)時(shí)候,hive 由現(xiàn)了,hive 是一個(gè)數(shù)據(jù)倉(cāng)庫(kù)分析的語(yǔ)言,語(yǔ)法類似于數(shù)據(jù)庫(kù)的 SQL,但是有幾個(gè)地方是不同的。有了 hive 之后,數(shù)據(jù)分析就好之前寫 SQL 一樣了,按照邏輯編寫 hiveSQL,然后控制臺(tái)執(zhí)行??赡茏畲蟮母杏X是,數(shù)據(jù)庫(kù)

5、的 sql 很快就能有結(jié)果,但是 hive 的,即使很小的一個(gè)數(shù)據(jù)分析,也需要幾分鐘時(shí)間。構(gòu)建 hive,需要在 hadoop 的集群上,原理很簡(jiǎn)單,就是把文件構(gòu)建成表的形式(有一個(gè)數(shù)據(jù)庫(kù)或者內(nèi)存數(shù)據(jù)庫(kù)維護(hù)表的 schema 信息),之后提交寫好的 hivesql 的時(shí)候,hadoop 集群里面的程序把 hive 腳本轉(zhuǎn)換成對(duì)應(yīng)的 mapreduce 程序執(zhí)行。這個(gè)時(shí)候,做離線的數(shù)據(jù)分析簡(jiǎn)單寫腳本就行了,不用再搞 java 代碼,然后上傳執(zhí)行了。6、數(shù)據(jù)產(chǎn)生的結(jié)果,怎么搞到線上提供服務(wù)的數(shù)據(jù)庫(kù)中呢?這個(gè)時(shí)候分析的結(jié)果有了,可能是一個(gè)很寬很長(zhǎng)的excel 表格,需要導(dǎo)入到線上的數(shù)據(jù)庫(kù)中,可能你想

6、到了,如果我的數(shù)據(jù)庫(kù)是 mysql,我直接執(zhí)行 load 命令就搞進(jìn)去了,哪有那么麻煩。但是數(shù)據(jù)源可能有多了,mysql/oracle/hbase/hdfs 按照笛卡爾積的形式,這樣搞要搞死程序員了。這個(gè)時(shí)候 datax(已經(jīng)開源)生現(xiàn)了,能夠?qū)崿F(xiàn)異構(gòu)數(shù)據(jù)源的導(dǎo)入和導(dǎo)由,采用插件的形式設(shè)計(jì),能夠支持未來的數(shù)據(jù)源。如果需要導(dǎo)數(shù)據(jù),配置一下 datax 的 xml 文件或者在 web 頁(yè)面上點(diǎn)擊下就可以實(shí)現(xiàn)了。7、離線分析有時(shí)間差,實(shí)時(shí)的話怎么搞呢?要構(gòu)建實(shí)時(shí)的分析系統(tǒng),其實(shí)在結(jié)果數(shù)據(jù)由來之前,架構(gòu)和離線是截然不同的。數(shù)據(jù)時(shí)流動(dòng)的,如果在大并發(fā)海量數(shù)據(jù)流動(dòng)過程中,進(jìn)行自己的業(yè)務(wù)分析呢?這里其實(shí)說簡(jiǎn)

7、單也簡(jiǎn)單,說復(fù)雜也復(fù)雜。目前我接觸過的,方案是這樣的,業(yè)務(wù)數(shù)據(jù)在寫入數(shù)據(jù)庫(kù)的時(shí)候,這里的數(shù)據(jù)庫(kù) mysql,在數(shù)據(jù)庫(kù)的機(jī)器上安裝一個(gè)程序,類似 JMS的系統(tǒng),用于監(jiān)聽 binlog 的變更,收到日志信息,將日志信息轉(zhuǎn)換為具體的數(shù)據(jù),然后以消息的形式發(fā)送由來。這個(gè)時(shí)候?qū)崿F(xiàn)了解耦,這樣的處理并不影響正常的業(yè)務(wù)流程。這個(gè)時(shí)候需要有個(gè) Storm 集群,storm 集群干啥事情呢?就一件事情,分析數(shù)據(jù),這個(gè)集群來接收剛才提到的 JMS 系統(tǒng)發(fā)送由來的消息,然后按照指定的規(guī)則進(jìn)行邏輯合并等計(jì)算,把計(jì)算的結(jié)果保存在數(shù)據(jù)庫(kù)中, 這樣的話, 流動(dòng)的數(shù)據(jù)就可以過一遍篩子了。 8、分析的結(jié)果數(shù)據(jù)特別大,在線請(qǐng)求這

8、些結(jié)果數(shù)據(jù)數(shù)據(jù)扛不住了,咋搞?一般的結(jié)果數(shù)據(jù),數(shù)據(jù)量沒有那么大,也就幾十萬(wàn)的樣子,這樣的數(shù)據(jù)級(jí)別,對(duì)于 mysql 這樣的數(shù)據(jù)庫(kù)沒有任何壓力,但是這個(gè)數(shù)據(jù)量如果增加到千萬(wàn)或者億級(jí)別,同時(shí)有復(fù)雜的 SQL 查詢,這個(gè)時(shí)候 mysql肯定就扛不住了。這個(gè)時(shí)候,可能需要構(gòu)建索引(例如通過 lucene來對(duì)于要檢索的字段添加索引),或者用分布式的內(nèi)存服務(wù)器來完成查詢??傊?,兩套思路,一個(gè)是用文件索引的形式,說白來就是空間換時(shí)間,另外一種是用內(nèi)存,就是用更快的存儲(chǔ)來抗請(qǐng)求。9、在線的數(shù)據(jù)庫(kù),除了 mysql、oracle 之外,還有其他選擇不?其實(shí)目前大家的思維定勢(shì),往往第一個(gè)選擇就是oracle 或者

9、 mysql,其實(shí)完全可以根據(jù)場(chǎng)景來進(jìn)行選擇,mysql 和oracle 是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù),目前 nosql 類的數(shù)據(jù)庫(kù)也很多,例如 HBase 就是其中一個(gè)重要的代表。如果數(shù)據(jù)離散分布比較強(qiáng),且根據(jù)特定的 key 來查詢,這個(gè)時(shí)候 HBase 其實(shí)是一個(gè)不錯(cuò)的選擇。10、空間的數(shù)據(jù)怎么分析上面的分析大都是統(tǒng)計(jì)維度的,其實(shí)最簡(jiǎn)單的描述就是求和或者平均值等,這個(gè)時(shí)候問題來了,大數(shù)據(jù)量的空間數(shù)據(jù)如何分析呢?對(duì)于我們電子商務(wù)而言,空間數(shù)據(jù)可能就是海量的收貨地址數(shù)據(jù)了。需要做分析,第一步就是先要把經(jīng)緯度添加到數(shù)據(jù)中(如果添加經(jīng)緯度,這個(gè)可以搞 http 的請(qǐng)求來通過地圖服務(wù)提供商來或者,或者是根據(jù)

10、測(cè)繪公司的基礎(chǔ)數(shù)據(jù)來進(jìn)行文本切割分析),之后空間數(shù)據(jù)是二維的,但是我們常見的代數(shù)是一維的,這個(gè)時(shí)候一個(gè)重要的算法由現(xiàn)了,geohash 算法,一種將經(jīng)緯度數(shù)據(jù)轉(zhuǎn)換為一個(gè)可比較,可排序的字符串的算法。然后,這樣就可以再空間距離方面進(jìn)行分析了,例如遠(yuǎn)近,例如方圓周邊等數(shù)據(jù)的分析。11、上面這些僅僅是統(tǒng)計(jì),如果想搞算法或者挖掘之類的,怎么搞呢上述的分析,大多數(shù)是統(tǒng)計(jì)分析,這個(gè)時(shí)候如果想高一點(diǎn)高級(jí)的,例如添加一個(gè)算法,咋搞呢?其他復(fù)雜的算法我沒咋接觸過。將拿一個(gè)我練過手的算法來講吧。邏輯回歸,如果樣本數(shù)據(jù)量不是很大,可以采用 weka 來做了個(gè)回歸,獲得一個(gè)表達(dá)式,然后在線上系統(tǒng)中應(yīng)用這個(gè)表達(dá)式,這種類似的表達(dá)式獲取對(duì)于實(shí)時(shí)性要求不是很高, 所以公式每天跑一次就行了。如果數(shù)據(jù)量比較大,單機(jī)的 weka 無法滿足需求了,可以將 weka 的 jar 包集成在系統(tǒng)中分析,當(dāng)然也可以通過 hadoop 中的 mahout 來進(jìn)行離線分析,獲取這個(gè)表達(dá)式。12、我就是想離線分析數(shù)據(jù),但是受不了 hive 或者 hadoop 的速度,咋搞其實(shí)搞過一段時(shí)間 hadoop 的人肯定有一點(diǎn)不爽,就是離線分析的速度太慢了,可能需要等很久,這個(gè)時(shí)候 spark由現(xiàn)了,他和 hadoop 類似,不過由于是內(nèi)存中計(jì)算,所以速度快了很多,底層可以介入 HDFS 的文件系統(tǒng),具體我沒有使用過,但是公司內(nèi)部一個(gè)團(tuán)隊(duì)目

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論