撥開(kāi)數(shù)據(jù)迷霧:如何理清大數(shù)據(jù)脈絡(luò)?
首先聲明,文章所有觀點(diǎn)不是什么定論,只是一家之言、個(gè)人觀點(diǎn)而已,不管是認(rèn)同者還是不認(rèn)同者歡迎理智交流。
緣起
之所以有這么一個(gè)話題,確實(shí)是有原因的。就在前幾天,我又收到了一個(gè)同行的郵件,是向我咨詢關(guān)于大數(shù)據(jù)方向的問(wèn)題。
可能是我的博客–博客蟲|大數(shù)據(jù)博客的原因,可能是我錄制的一些大數(shù)據(jù)課程的原因,也可能是在這個(gè)圈子里話稍微的多一些。這半年多來(lái),陸陸續(xù)續(xù)總有十幾個(gè)甚至于數(shù)十個(gè)相同話題的資訊郵件或者信息,無(wú)一例外:他們想涉足大數(shù)據(jù)這個(gè)領(lǐng)域,或者說(shuō)已經(jīng)涉足大數(shù)據(jù)這個(gè)領(lǐng)域,只是不知道下一步該如何進(jìn)行,很是迷茫。
恰巧一個(gè)最近一個(gè)在亞信的老友,有意向跳槽,他這兩年來(lái)基本做都是大數(shù)據(jù)BI領(lǐng)域多一些,對(duì)于Hive之類的比較熟悉,只是不知道將來(lái)跳槽具體往哪個(gè)方向去。
于是我想,這么多人都在糾結(jié)自己到底該在大數(shù)據(jù)領(lǐng)域中如何前行,面對(duì)于大數(shù)據(jù)這個(gè)看起來(lái)很泛的概念,并且有愈演愈亂的趨勢(shì),我們確實(shí)需要好好的理一理。
于是就有了這個(gè)話題。這個(gè)圈子到底是干嗎的,涉及的技術(shù)到底有哪些,我們到底該如何入手,該如何進(jìn)一步提升自己。
對(duì)于個(gè)人來(lái)說(shuō),很慶幸一畢業(yè)就在這個(gè)圈子里偷摸打滾,雖然不能說(shuō)懂多少,但還是很愿意把自己的一些觀點(diǎn)分享給大家,能幫的上忙當(dāng)然是好的,幫不上忙純當(dāng)個(gè)人的吐槽了。
理清大數(shù)據(jù)的脈絡(luò)
我們先來(lái)理一理大數(shù)據(jù)這個(gè)圈子的脈絡(luò),再言其它。
先來(lái)確定一個(gè)問(wèn)題:我們所說(shuō)的大數(shù)據(jù),研究其的核心價(jià)值在哪里?
是的,這是一個(gè)很奇怪問(wèn)題,像是在幾年前,大數(shù)據(jù)這個(gè)詞突然就火了,然后就一直火,然后火的一塌糊涂。我們?cè)賮?lái)思考一下這個(gè)問(wèn)題,在數(shù)據(jù)量未增長(zhǎng)到一定規(guī)模,或者說(shuō)大家還沒(méi)有意識(shí)到數(shù)據(jù)成長(zhǎng)到了一定規(guī)模,又或者說(shuō)相關(guān)技術(shù)支撐尚未成熟的時(shí)期,數(shù)據(jù)被人關(guān)注的并不是太多。
在大數(shù)據(jù)技術(shù)日漸成熟時(shí)候,特別是以hadoop生態(tài)為代表的技術(shù)圈日漸豐富,在數(shù)據(jù)規(guī)模日漸增長(zhǎng)的今天,對(duì)于數(shù)據(jù)研究的人也越來(lái)越多。
于是,越來(lái)越多的人投身其中。我們需要先明白我們的目的:挖掘數(shù)據(jù)中的價(jià)值。這里所謂的挖掘并不是狹義上的數(shù)據(jù)挖掘的概念,而是包括了對(duì)于雜亂數(shù)據(jù)的整理以期發(fā)現(xiàn)其體現(xiàn)的業(yè)務(wù)現(xiàn)狀,通過(guò)對(duì)大批數(shù)據(jù)的統(tǒng)計(jì)分析達(dá)到對(duì)業(yè)務(wù)的調(diào)整以及決策,通過(guò)對(duì)大批量數(shù)據(jù)的潛在關(guān)系或者趨勢(shì)的挖掘?qū)嵤┫嚓P(guān)個(gè)性化的策略等等。
說(shuō)白了就兩個(gè)字,價(jià)值。不管是大的價(jià)值還是小的價(jià)值,我們需要從數(shù)據(jù)中獲利,這是我們的根本目標(biāo)。也就是說(shuō),我們?cè)诖髷?shù)據(jù)這個(gè)圈子里所干的一切,都是為了榨干數(shù)據(jù)潛藏的價(jià)值。
明白了核心價(jià)值所在,我們?cè)賮?lái)關(guān)注一下我們的研究實(shí)體–數(shù)據(jù)。
我們的數(shù)據(jù)從哪而來(lái)?我們的數(shù)據(jù)拿過(guò)來(lái)就可以用嗎?榨干數(shù)據(jù)的價(jià)值,用榨汁機(jī)榨嗎?數(shù)據(jù)到底該怎么處理?是的,我們要用到哪些技術(shù)?
圍繞怎么榨干數(shù)據(jù)這個(gè)問(wèn)題,我們可以衍生出很多很多的問(wèn)題,都是需要我們一一去解決的,這也就是為何很多人迷茫的直接原因。
雜亂無(wú)章,無(wú)從下手。這是很多新手或者說(shuō)已經(jīng)身陷其中的程序猿都面臨的一個(gè)問(wèn)題。
不可否認(rèn)的是我們的研究實(shí)體始終是數(shù)據(jù),我們是圍繞它在轉(zhuǎn)的,確定了這一點(diǎn),剩下的問(wèn)題,我們一個(gè)一個(gè)的來(lái)理。
數(shù)據(jù)從何而來(lái)?
對(duì)于這個(gè)問(wèn)題,答案還是比較多的。
在此之前,雖然很多企業(yè)公司對(duì)于數(shù)據(jù),并沒(méi)有很大的研究,但是潛意識(shí)的把那些產(chǎn)生的數(shù)據(jù)都收集起來(lái)了,如今在有能力研究或者進(jìn)一步處理的前提下,這就是一個(gè)不可估量的數(shù)據(jù)量。在傳統(tǒng)的數(shù)據(jù)收集方式上,主要以現(xiàn)成文件或者傳統(tǒng)數(shù)據(jù)庫(kù)的方式體現(xiàn)。
企業(yè)公司線上業(yè)務(wù)產(chǎn)生的業(yè)務(wù)log。這應(yīng)該是最常見(jiàn)的一種數(shù)據(jù)來(lái)源,當(dāng)前很大一部分同行處理的應(yīng)該都是這種數(shù)據(jù)。這種數(shù)據(jù)的格式主要是按時(shí)間切分的log文件。
互聯(lián)網(wǎng)公開(kāi)數(shù)據(jù)。這部分?jǐn)?shù)據(jù)源有以下幾個(gè)特點(diǎn):獲取難度高,數(shù)據(jù)比較雜亂。想要使用這一部分?jǐn)?shù)據(jù),其成本也是相對(duì)較高的。所以,就目前來(lái)說(shuō)能夠使用這部分?jǐn)?shù)據(jù)的企業(yè)還是比較少的,但在未來(lái)它必定是一個(gè)主流數(shù)據(jù)來(lái)源。
除此之外,隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,移動(dòng)終端帶來(lái)的數(shù)據(jù)也越來(lái)越多,成為一種新型的數(shù)據(jù)來(lái)源。當(dāng)然進(jìn)一步延伸,包括了各種智能終端產(chǎn)生的數(shù)據(jù)。
數(shù)據(jù)拿來(lái)就能用嗎?
答案顯然是否定的,就連怎么拿數(shù)據(jù)都是一個(gè)大問(wèn)題。這就不得不說(shuō)到一些大數(shù)據(jù)領(lǐng)域數(shù)據(jù)收集相關(guān)的技術(shù)了,比如比較流行的Scribe以及Flume等,他們都是為解決多節(jié)點(diǎn)日志收集而產(chǎn)生的解決方案。我們通常產(chǎn)生的數(shù)據(jù)都是分散在各個(gè)不同節(jié)點(diǎn)上的,我們需要用到這些數(shù)據(jù),進(jìn)一步從數(shù)據(jù)中提取價(jià)值,前提是能統(tǒng)一收集到這些數(shù)據(jù)。而這些開(kāi)源的日志收集系統(tǒng)解決了分散數(shù)據(jù)如何集中的痛點(diǎn)。
此外,對(duì)于存儲(chǔ)在關(guān)系型數(shù)據(jù)庫(kù)中的傳統(tǒng)數(shù)據(jù),我們需要通過(guò)一定的轉(zhuǎn)換,讓其導(dǎo)入到我們的大數(shù)據(jù)處理平臺(tái)中,比如數(shù)據(jù)倉(cāng)庫(kù)中等等。這就涉及到一些數(shù)據(jù)轉(zhuǎn)換的開(kāi)源系統(tǒng),比如sqoop之類的。
而對(duì)于互聯(lián)網(wǎng)上公共數(shù)據(jù),這就涉及到各種網(wǎng)絡(luò)爬蟲、網(wǎng)頁(yè)解析相關(guān)的技術(shù)。
并且對(duì)于絕大部分?jǐn)?shù)據(jù)來(lái)說(shuō),在獲取之后并不能直接使用,典型如各種業(yè)務(wù)數(shù)據(jù),我們需要進(jìn)一步提取其中我們所需要的信息。而對(duì)于爬取的互聯(lián)網(wǎng)數(shù)據(jù),更是紛雜凌亂,我們需要進(jìn)一步的進(jìn)行篩選,進(jìn)一步的清洗,最終拿到有用的基礎(chǔ)數(shù)據(jù)。
對(duì)于數(shù)據(jù)的清洗、預(yù)處理,大規(guī)模離線處理典型如MapReduce,內(nèi)存處理典型如Spark Streming,數(shù)據(jù)流式處理典型如Storm等。
在數(shù)據(jù)傳遞的過(guò)程中,我們又涉及到了各種消息隊(duì)列;在整個(gè)數(shù)據(jù)平臺(tái)中,涉及到了分布式協(xié)調(diào)、分布式監(jiān)控、任務(wù)調(diào)度等相關(guān)的知識(shí)。
不管在各個(gè)環(huán)節(jié)也好,或者說(shuō)最終處理的數(shù)據(jù)也好,我們需要進(jìn)行存儲(chǔ),這就涉及到分布式存儲(chǔ)、非關(guān)系型數(shù)據(jù)庫(kù)、大規(guī)模數(shù)據(jù)倉(cāng)庫(kù)等相關(guān)的技術(shù)。
榨取數(shù)據(jù)的價(jià)值!
在數(shù)據(jù)經(jīng)過(guò)層層處理之后,終于到了我們的目的所在了。對(duì)于部分業(yè)務(wù)來(lái)說(shuō),在經(jīng)過(guò)精提純的數(shù)據(jù)已經(jīng)是可用的了,可以直接呈現(xiàn)了,這就直接體現(xiàn)了數(shù)據(jù)價(jià)值,不多說(shuō)。
對(duì)于部分?jǐn)?shù)據(jù),我們需要進(jìn)行進(jìn)一步的統(tǒng)計(jì)分析,然后把握數(shù)據(jù)體現(xiàn)的業(yè)務(wù)趨勢(shì)、業(yè)務(wù)變化,這可以算是大數(shù)據(jù)BI的領(lǐng)域,也算是數(shù)據(jù)價(jià)值的體現(xiàn)。
而對(duì)于部分?jǐn)?shù)據(jù),不能直接使用,并且其數(shù)據(jù)直接體現(xiàn)的狀況對(duì)于我們并沒(méi)有太大的作用,這個(gè)時(shí)候我們需要進(jìn)一步的挖掘其潛藏的價(jià)值。典型如個(gè)性化推薦,我們希望通過(guò)一定的數(shù)據(jù)模型,建立起現(xiàn)有數(shù)據(jù)與未來(lái)數(shù)據(jù)的關(guān)系,進(jìn)一步實(shí)施我們個(gè)性化業(yè)務(wù),提升商業(yè)利益。這也是一種數(shù)據(jù)價(jià)值的體現(xiàn)。
我們來(lái)梳理一下整個(gè)過(guò)程!
在最開(kāi)始階段,我們進(jìn)行初始數(shù)據(jù)的收集工作,根據(jù)不同的業(yè)務(wù)場(chǎng)景,可能會(huì)涉及到的一些技術(shù)領(lǐng)域:分散日志收集技術(shù),諸如Scribe、Flume為代表的開(kāi)源日志收集系統(tǒng);數(shù)據(jù)消息傳遞相關(guān)的技術(shù),各種開(kāi)源的消息隊(duì)列MQ,諸如ActiveMQ、RocketMQ、Kafka等;各種爬蟲技術(shù)、網(wǎng)頁(yè)解析技術(shù);數(shù)據(jù)庫(kù)數(shù)據(jù)轉(zhuǎn)換技術(shù),如Apache的Sqoop等;
在數(shù)據(jù)處理階段,通常我們會(huì)有兩種不同的處理方式,一種是在數(shù)據(jù)落地之前,我們進(jìn)行預(yù)處理,典型如Storm為代表的實(shí)時(shí)處理系統(tǒng),還有近一兩年比較火的Spark Streming;還有一種就是落地之后進(jìn)行的批量離線處理,如Hadoop的MapReduce,以及使用Spark進(jìn)行處理。當(dāng)然,對(duì)于數(shù)據(jù)的預(yù)處理,并不是說(shuō)一定要用到什么框架,但是這個(gè)過(guò)程肯定是需要的,我們需要對(duì)數(shù)據(jù)進(jìn)行進(jìn)一步得過(guò)濾、規(guī)整操作。
然后是數(shù)據(jù)的落地,對(duì)于規(guī)整之后的數(shù)據(jù),我們需要進(jìn)行落地存儲(chǔ),然后才能做進(jìn)一步的處理。對(duì)于一般性的大規(guī)模存儲(chǔ),目前有很多開(kāi)源的分布式文件系統(tǒng)方案,典型如HDFS,但更多的是存入數(shù)據(jù)倉(cāng)庫(kù)中,或者一些NoSQL中。其中以Hadoop生態(tài)中的Hive以及Hbase為代表。
然后在整個(gè)數(shù)據(jù)被規(guī)整到存儲(chǔ)落地的過(guò)程中,是一整套完整的數(shù)據(jù)處理流程,是一個(gè)完善的數(shù)據(jù)處理平臺(tái),我們可能還會(huì)涉及到一些分布式的協(xié)調(diào)系統(tǒng),典型如Zookeeper;還涉及到一些分布式平臺(tái)的監(jiān)控,如Ganglia和Nagios的結(jié)合使用,以及Puppet、Zabbix等等相關(guān)技術(shù)。
然后接著就是數(shù)據(jù)的價(jià)值體現(xiàn),對(duì)于部分業(yè)務(wù)來(lái)說(shuō),處理過(guò)的數(shù)據(jù)已經(jīng)是可以直接使用了,例如通過(guò)數(shù)據(jù)倉(cāng)庫(kù)的操作,直接對(duì)外展現(xiàn);而部分?jǐn)?shù)據(jù)則是需要對(duì)其進(jìn)行統(tǒng)計(jì)分析,例如通過(guò)對(duì)Hive的各種操作,生產(chǎn)的各種BI報(bào)表,我們則可以從中找到現(xiàn)有數(shù)據(jù)的規(guī)律,進(jìn)而完善我們的業(yè)務(wù)策略;而部分業(yè)務(wù)則希望現(xiàn)有的數(shù)據(jù)對(duì)未來(lái)數(shù)據(jù)能夠產(chǎn)生影響,所以引入了各種數(shù)據(jù)深度挖掘的東西,例如在大規(guī)模數(shù)據(jù)挖掘場(chǎng)景下的Mahout以及Spark的MLlib等;還有部分業(yè)務(wù)則是想把這些數(shù)據(jù)作為一個(gè)搜索數(shù)據(jù)源,那這個(gè)時(shí)候我們會(huì)對(duì)數(shù)據(jù)索引化的操作。
在如上的這些過(guò)程中,雖然在使用的技術(shù)上可能會(huì)有所出入,但是這個(gè)基本流程是不變的。通過(guò)這個(gè)梳理,我們知道在這個(gè)過(guò)程中,我們會(huì)涉及到哪些流程,然后才能說(shuō)在大數(shù)據(jù)的這個(gè)圈子里,我們到底該往哪個(gè)方面發(fā)展。
定位自己的位置
如上所言,在大數(shù)據(jù)整個(gè)領(lǐng)域中,涉及的東西很多,需要掌握的處理問(wèn)題的思路也很多。但我們的精力是有限的。
我很慶幸自己一畢業(yè)就投身其中。最早開(kāi)始接觸是構(gòu)建數(shù)據(jù)中心平臺(tái),包括了一整套數(shù)據(jù)接入,實(shí)時(shí)處理以及離線處理的東西。在往后的工作中又陸續(xù)接觸到了大數(shù)據(jù)領(lǐng)域中數(shù)據(jù)倉(cāng)庫(kù)以及數(shù)據(jù)大規(guī)模緩存相關(guān)的技術(shù),逐漸補(bǔ)充我在大數(shù)據(jù)領(lǐng)域的空白,并且陸陸續(xù)續(xù)在NoSQL、搜索、網(wǎng)頁(yè)解析、爬蟲等方面也有所了解。而如今,一邊做著數(shù)據(jù)處理相關(guān)的工作,一邊依托于大規(guī)模的數(shù)據(jù),在此基礎(chǔ)上進(jìn)行數(shù)據(jù)潛在價(jià)值的挖掘,比如正在研究的推薦系統(tǒng),熱度排名模型研究等等。
在整個(gè)體系中,其實(shí)也是可以分為兩類的,由于在這個(gè)圈子里大量使用了各種開(kāi)源的平臺(tái)系統(tǒng),因此對(duì)于平臺(tái)人員的需求量也是很大的,保證大規(guī)模集群以及平臺(tái)的正常運(yùn)行,也是一個(gè)很有挑戰(zhàn)的事;然后就是純開(kāi)發(fā)人員,需要考慮的東西就會(huì)更多一些。
對(duì)于初入這個(gè)領(lǐng)域的人來(lái)說(shuō),首先需要確定自己的興趣所在,然后結(jié)合如上所說(shuō)的脈絡(luò),找到自己的切入點(diǎn),想一下子都整明白是不可能的,找準(zhǔn)自己的興趣點(diǎn),然后逐漸完善自己對(duì)大數(shù)據(jù)的認(rèn)知體系。