數據工程師必須掌握的7個大數據實戰項目

簡介: 值得收藏,數據工程師必須掌握的7個大數據實戰項目
原創: Lenis 有關SQL算法

做爲一名電影愛好者,我閱片無數,有些片子還常常翻來覆去看個好幾遍。小時候由於這事兒,沒少被我媽抓耳朵,「看過的片子爲啥還要倒二遍?」我也說不上來,就是單純的愛看。數據庫

男人愛看的電影,以武俠,動做,科技爲多,也認識了一幫明星,好比尼古拉斯凱奇,史泰龍,李小龍,成龍,李連杰,甄子丹等等。這些人很猛,有男人氣。只要是他們的片兒,確定不落下。在我眼裏,他們就是好片代名詞。編程

不知幾什麼時候,電影上開始出現一些不認識的男明星了,好比張翰,韓庚,鹿晗等等。看着這些人主演的片子,真是……哎,能不睡着就算是對得起票錢了。小程序

後來我從半佛那裏才知道,啥叫鮮肉,啥叫老阿姨審美。假如看到有更嫩的男演員,不用問了,老阿姨審美又變了。註定又是一部爛片。微信小程序

那麼,審美能夠變,審詞呢?緩存

好比這幾年,媒體一直在炒做的大數據,用前衛的詞兒來講,Big Data. 聽得人耳朵老繭都漲了一層。那麼 你們是真把它當作有效的工具呢,仍是執拗的認爲又是換湯不換藥的營銷噱頭呢?服務器

爲弄清楚這個問題,我查了不少資料,中文的,外文的,百度文庫的, Google 論文。期間的所見所聞能夠寫 3 部小說還不止。微信

令我印象最深的還屬這件事:
《紐約時報》將 1851 - 1922 之間的 1100 多萬篇文章,在24小時內花費3000美金,轉成 PDF 供大衆搜索查看。網絡

資料背景指出,這些文章已經作好了 TIFF 圖檔格式,要解決的本質問題就是將 TIFF 轉換成 PDF.這件事情,工做量很是大。單純寫代碼轉換,可行,但對完工時間很差把握。架構

此時有個工程師,僅憑一人之力完成了這項工做,整個過程,他只作了 4 件事情:

1) 首先他是資深編程愛好者。日常閱讀技術Blog,知道 AWS, S3,EC2 等雲計算概念,還熟悉 Google 的 MapReduce 論文,而且知道 Hadoop 的功能。

2)因而他本身在他的我的電腦上,搭建了Hadoop,玩起大數據,利用 MapReduce 來試着完成 TIFF 到 PDF 的轉換;

3)接着在 Amazon 上申請 4 臺 EC2 的主機,搭建了 Hadoop 集羣,跑了一批 TIFF 到 PDF 轉換程序。發現竟然可行。

4)大規模實施批量轉換,用了 24 個小時,3000 美金,最終將 1100 萬文章的影音圖像,轉成了 PDF,並對外提供服務。

再舉一些通過報道的大數據應用案例:
Yahoo!使用4000節點的集羣運行 Hadoop, 支持廣告系統和 Web 搜索;
Facebook 使用 1000 節點運行 Hadoop, 存儲日誌數據,支持其上的數據分析和機器學習;
百度使用 Hadoop 處理每週 200TB 的數據,進行搜索日誌分析和網頁數據挖掘工做;
中移動基於 Hadoop 開發了 BigCloud 系統,提供對內外的數據支持;
淘寶的 Hadoop 則處理電子商務交易數據。

初學者要入門大數據,最好的方式,從瞭解具體的應用開始。掌握大數據能作哪些事情,完成哪些小數據作不到的功能,學着纔有意思。只有學着有意思,纔會繼續往下學。越學越想學,越學越開心,天然也就學好了。

接下來,我整理一些大數據已經發揮它真正做用的應用場景,若是你要作大數據項目,確定離不開這7個範疇。

所以,你說大數據離咱們遠嗎,我說確定很近。無論你信不信,反正我信了。

項目一:數據整合
說到數據整合,咱們作數據的人,通常想到的是數據倉庫。

image.png

當咱們有不少應用,好比 MES, ERP, HR, SALES AND Marketing, CRM 等,每一個應用都是一些獨立的數據島,每一個使用這些應用的人,均可以從這些應用裏面找到本身想要的數據和答案,若是找不到也能夠找IT幫你作報表。

可是當咱們須要的數據,是整條完整的數據鏈,這些系統就顯得無力了。好比咱們要分析每一個 ERP 的成本中心,到底分攤到每一個車間,每道工序,有多少成本時,僅僅靠ERP就無能爲力了,必須將 MES 的數據導入ERP,綜合起來分析。此時,ERP數據就會整合部分的MES數據。但自己ERP是排斥這些MES數據的,過於詳細,對BOM,PP等的支持粒度不夠,須要從新寫代碼完善。

那麼與其把這些數據都導入ERP,再從新編碼,那還不如將MES,ERP的數據整合到一個數據庫裏面,從新出完整的數據字典,供財務或者運營去作分析。這就是數據倉庫的做用了。

若是HR也想要從數據中,獲得招聘人員的產出,一樣也須要整合HR系統。CRM的分析師,可能想知道某個客戶的利潤,是否與生產成正相關,總不能讓利潤最少的客戶長期霸佔工廠的資源吧。所以CRM也能夠接入到數據倉庫來。

當數據倉庫數據量超額時,好比 Oracle 成本已經很高,且計算能力也達不到旺盛的分析需求時,就須要考慮 Hadoop 了。所以 Hadoop 在這裏扮演的角色就是數據倉庫的落地數據存儲和計算。

從傳統的數據倉庫架構擴展而來,此時企業的數據倉庫又多了一層大數據,以下圖:

image.png
(圖來自mastechinfotrellis.com)

可是也有可能,Hadoop 的離線應用完成了聚合,分析師須要從原有的RDBMS獲取,那麼咱們就須要回寫到RDBMS裏面來,方便分析師的調用。這裏須要說明下爲何要回寫關係數據庫(SQL類數據庫),不少分析師還在使用 Excel 和 Tableau 作數據分析,而這類工具最搭配的即是 RDBMS, SQL 的學習成本放在那裏,Excel 的易用性擺在那裏,還有 Tableau 漂亮的UI。而從 Hadoop 這類分佈式數據系統中,取數分析,須要新型的做戰武器, Zepplin 或者 IPython Notebook , 固然這類工具,SQL仍是必不可少。

總之,數據整合是 Hadoop 的最基礎應用,扮演的多是最終存儲,也有多是整條數據鏈上的一環,也就是ETL中的任一角色。

在正式的報告中(官方文檔或者公司知識庫),你們會採用"企業級數據中心"或者"數據湖"來表示 Hadoop 的這類應用。

爲何要用 Hadoop 而不是傳統的 Teradata 和 Netezza 呢?
很大的緣由,Teradata, Netezza 的成本不是通常的高,若是用來存儲一些非交易性的數據,形成很大的資源成本。好比評論,用戶行爲,這些徹底能夠存儲在 Hadoop 的低成本集羣中

項目二:專業分析

在《Spark高級數據分析》這本書裏講到一個實例,就是:
Estimating Financial Risk Through Monte Carlo Simulation

蒙特卡洛模擬分析,用來預測和監控銀行流動性風險。這類專業應用,通常的軟件公司並不會去考慮如何兼容,如何作的性能更優,好比數據量巨大的狀況下,R有什麼特別好的方法去處理,T-SQL會怎麼處理,恐怕都無能爲力?

針對有限的數據量,上述兩個工具會 有不錯的效果,但現在的數據量堆積下,要將本來一臺單機提供的算力,複製到成千上百臺計算機,傳統的RDBMS和分析工具都會失效。

此時,Hadoop 配合 Spark 的組合,就有用武之地了!

衆所周知,Yahoo!已有4000個Hadoop節點,用這4000個節點去計算一次聚合統計,好比有4億的訂單,須要覈算每一個訂單的總金額,成本,和利潤,那分配到4000個節點上,每一個節點平均處理10萬訂單,以後彙總便可。

因此 Hadoop 能夠處理更多的量,而 Spark 則在更快的計算上知足了需求。

拿 Spark 舉個例子,好比推薦系統。喜好音樂的朋友會用網易雲音樂,喜歡看書的朋友常常會去亞馬遜。不難發現的事情是,當你打開這些 App 的時候,會有不少音樂或者書推薦給你,你打開這些推薦的音樂或者書,可能還會以爲很好,正是本身喜歡或者須要的。這就是推薦系統。

推薦系統最大的難點在於實時性。咱們能夠用 Hadoop 聚合所有人的喜愛,進一步去作實時推薦。而 Hadoop 的計算框架,要搭配 MapReduce 程序使用,這類程序最大的弱點是中間結果集存盤,而不是存在內存,那麼對於推薦中常用的 ALS(Alternating Least Squares )算法就不友好了。這類訓練算法須要無數次回頭重讀中間結果集,每次從硬盤讀取結果(有可能還要重算),就會浪費極大的時間。

Spark 就是在解決這個問題。

它將全部的數據集封裝在 RDD(Resilient Distributed Dataset)中,這個結果集自然就帶着分佈式特性,也就是每一個Spark節點上都有一個小的RDD,針對RDD的計算都會分攤到這些小的RDD上,同步計算。這個特性知足了分佈式並行計算的需求,RDD還有個特性就是Cache操做,將RDD的結果緩存到內存保存,以後能夠複用RDD結果集。這是Spark區別於MapReduce的重要特色,簡單說來,就是整個計算過程變快了,使得實時推薦也變成了可能。

image.png
(圖來自https://luminousmen.com/post/...

看上去,咱們只提交了一個Spark Job,完成對輸入數據的處理,而且輸出結果。沒有特別厲害的地方。但背後作了很大的工做,它均衡地在每一個數據節點上分配處理算子(Executor),作本地處理,以後將這些中間結果集緩存起來,以提供給其餘子程序使用。

項目三:大數據做爲服務

一般企業足夠大,就會自建 Hadoop 集羣用來知足數據整合或者專業分析的需求。當企業擁有自主開發 Hadoop 實力以後,會有多餘的計算資源能夠分享給其餘企業用戶,那麼這時能夠把 Hadoop 做爲服務開放給市場。

這就是雲計算的力量。

國外的案例有 GCP(Google Cloud Platform), Amazon, Microsoft Azure, 而國內出色的供應商則是HTA(華爲雲,騰訊雲和阿里雲).

要說明的是,Hadoop 做爲雲服務的一種,須要很強的技術性。針對創業型或資源短缺性的中小企業,則能夠付費使用大公司提供的服務,你們各得其所。

雲計算:基本概念

雲計算目前可分爲 IAAS,SAAS,PAAS,這三者在使用上有很大區別。

都說雲計算有不可替代的成本優點,那麼成本到底優化在哪裏?

好比公司若是內建一個運維團隊,包括硬件,軟件與人員,配套的基礎設施有機房,辦公樓。再簡單一些,這團隊由一我的,一臺服務器,一個辦公室組成,軟件所有由這我的來編寫,採用的所有是開源技術,一年的費用算50萬。

而這些採用雲計算,這我的負責編程沒變,可是能夠在咖啡館,圖書館,高鐵,飛機,任何只要有網線的地方便可,這樣就省去辦公樓,硬件與軟件的採購費用,主要成本都在雲上和應用的開發人員身上。雲上有專業的Devops團隊,有DBA專業人員保障基礎設施,還有可靠的機房雙災備,一切後顧之憂都交給了雲服務商。按照騰訊雲最新的企業雲服務器,一年下來就3,500千塊。

即買即用,部署極速

某天公司須要使用 Hadoop 的離線大容量存儲來容納日誌,而且用 MapReduce 負責超大規模的計算,那麼自建一個大數據團隊,負責裝機,配置和搭建,可能要花去1個月左右的時間,同時還須要進行業務的梳理和代碼的編寫,等到系統完畢,上線調試,這樣大半時間下去了,效果還出不來。

而使用雲計算,接口調試好,今天就能夠導入數據,極大節約了時間成本。

若是雲服務商對於每次查詢都須要結算,而大數據又是公司避不可避的戰略,那麼內建也不是大問題。但每每公司業務還沒成熟呢,就急着去部署大數據系統是不划算的。

雲計算:IAAS, SAAS, PAAS 的區別:

經過NYT(NewYorkTimes)的4T TIFF圖片數據轉PDF的事件,咱們來講明這三者的區別,就很容易了:

詳細案例:https://t.zsxq.com/QrBmeaY

這個案例中,做者經過購買Amazon EC2 的100臺服務器,將S3的4T文件轉成PDF,並最終提供給大衆搜索。

正好將IAAS,SAAS都涉及到了。好比 EC2,S3就是典型的IAAS,提供服務器操做系統,存儲,網絡,就是典型的IAAS應用;而最終開發的PDF搜索就是SAAS應用;若是做者不是本身寫MapReduce來轉換PDF,而是使用AWS提供的編輯軟件,且使用了AWS的Hadoop, Spark做業接口實現了轉換,那麼PAAS也就被用到了。可能當時AWS並無提供這樣整套的開發環境。

若是你是微信小程序開發者,不難理解,小程序的開發就是在PAAS平臺上完成的。

項目四:流分析
項目五:複雜的事件處理
項目六:流式ETL
項目七:可視化分析

閱讀原文看其他項目:https://developer.aliyun.com/...

相關文章
相關標籤/搜索