
1. 數(shù)據(jù)工程
1.1. 自從公司開(kāi)始使用數(shù)據(jù)做事,數(shù)據(jù)工程就以某種形式存在了
- 1.1.1. 預(yù)測(cè)性分析、描述性分析和報(bào)告
1.2. 數(shù)據(jù)工程師獲取數(shù)據(jù)、存儲(chǔ)數(shù)據(jù),并準(zhǔn)備數(shù)據(jù)供數(shù)據(jù)科學(xué)家、分析師和其他人使用
1.3. 數(shù)據(jù)工程是系統(tǒng)和流程的開(kāi)發(fā)、實(shí)施和維護(hù),這些系統(tǒng)和流程接收原始數(shù)據(jù)并生成支持下游用例(例如分析和機(jī)器學(xué)習(xí))的高質(zhì)量、一致的信息
1.4. 數(shù)據(jù)工程是安全、數(shù)據(jù)管理、數(shù)據(jù)運(yùn)維(DataOps)、數(shù)據(jù)架構(gòu)、編排和軟件工程的交集
1.5. 數(shù)據(jù)工程師管理數(shù)據(jù)工程生命周期,從源系統(tǒng)獲取數(shù)據(jù)開(kāi)始,到為用例(例如分析或機(jī)器學(xué)習(xí))提供數(shù)據(jù)結(jié)束
2. 數(shù)據(jù)工程生命周期
2.1. 生成
2.2. 存儲(chǔ)
2.3. 獲取
2.4. 轉(zhuǎn)換
2.5. 服務(wù)
3. 數(shù)據(jù)工程師的演變
3.1. 舊的又成了新的
3.2. 早期
3.2.1. 1980年到2000年,從數(shù)據(jù)倉(cāng)庫(kù)到Web
3.2.2. 數(shù)據(jù)工程師的誕生可以說(shuō)起源于數(shù)據(jù)倉(cāng)庫(kù),最早可以追溯到20世紀(jì)70年代
-
3.2.3. 商業(yè)數(shù)據(jù)倉(cāng)庫(kù)在20世紀(jì)80年代初具規(guī)模,Bill Inmon于1989年正式創(chuàng)造了數(shù)據(jù)倉(cāng)庫(kù)一詞
- 3.2.3.1. 數(shù)據(jù)倉(cāng)庫(kù)開(kāi)創(chuàng)了第一個(gè)可擴(kuò)展分析的時(shí)代,新的大規(guī)模并行處理(Massively Parallel Processing,MPP)數(shù)據(jù)庫(kù)使用多個(gè)處理器來(lái)處理市場(chǎng)上出現(xiàn)的大量數(shù)據(jù)并支持前所未有的數(shù)據(jù)量
3.2.4. 在IBM的工程師開(kāi)發(fā)了關(guān)系數(shù)據(jù)庫(kù)和結(jié)構(gòu)化查詢(xún)語(yǔ)言(Structured Query Language,SQL)之后,Oracle普及了該技術(shù)
3.3. 21世紀(jì)00年代初期
3.3.1. 當(dāng)代數(shù)據(jù)工程的誕生
3.3.2. 雅虎、谷歌和亞馬遜最初繼續(xù)依賴(lài)20世紀(jì)90年代傳統(tǒng)的單機(jī)關(guān)系數(shù)據(jù)庫(kù)和數(shù)據(jù)倉(cāng)庫(kù),將這些系統(tǒng)推向了極限
3.3.3. 一些創(chuàng)新允許在大規(guī)模計(jì)算集群上進(jìn)行大規(guī)模分布式計(jì)算和存儲(chǔ)
-
3.3.4. 數(shù)據(jù)的三個(gè)V
3.3.4.1. 速度(velocity)
3.3.4.2. 多樣性(variety)
3.3.4.3. 數(shù)量(volume)
3.3.5. 2003年,谷歌發(fā)表了一篇關(guān)于Google文件系統(tǒng)的論文
3.3.6. 在2004年發(fā)表了一篇關(guān)于MapReduce(一種超可擴(kuò)展數(shù)據(jù)處理范式)的論文
3.3.7. 谷歌的出版物構(gòu)成了數(shù)據(jù)技術(shù)的“大爆炸”和我們今天所知的數(shù)據(jù)工程的文化根基
-
3.3.8. Google的論文啟發(fā)了Yahoo的工程師開(kāi)發(fā)并于2006年開(kāi)源了Apache Hadoop
- 3.3.8.1. 隨著各種規(guī)模和類(lèi)型的公司看到他們的數(shù)據(jù)增長(zhǎng)到數(shù)TB甚至PB,大數(shù)據(jù)工程師的時(shí)代誕生了
-
3.3.9. 亞馬遜
3.3.9.1. 創(chuàng)建了彈性計(jì)算環(huán)境(Amazon Elastic Compute Cloud,或EC2)、無(wú)限可擴(kuò)展的存儲(chǔ)系統(tǒng)(Amazon Simple Storage Service,或S3)、高度可擴(kuò)展的NoSQL數(shù)據(jù)庫(kù)(Amazon DynamoDB)和許多其他核心數(shù)據(jù)構(gòu)建塊
3.3.9.2. 亞馬遜選擇通過(guò)Amazon Web Services(AWS)為內(nèi)部和外部消費(fèi)提供這些服務(wù),成為第一個(gè)流行的公有云
-
3.3.9.3. AWS通過(guò)虛擬化和轉(zhuǎn)售巨大的商品硬件池創(chuàng)建了一個(gè)超靈活的即付即得資源市場(chǎng)
3.3.9.3.1. 簡(jiǎn)單地從AWS租用計(jì)算和存儲(chǔ),無(wú)須為數(shù)據(jù)中心購(gòu)買(mǎi)硬件
-
3.3.10. Google Cloud、微軟Azure和DigitalOcean
- 3.3.10.1. 公有云可以說(shuō)是21世紀(jì)最重要的創(chuàng)新之一,它引發(fā)了軟件和數(shù)據(jù)應(yīng)用程序開(kāi)發(fā)與部署方式的革命
3.4. 21世紀(jì)00年代和21世紀(jì)10年代
3.4.1. 大數(shù)據(jù)工程
3.4.2. 任何企業(yè)都可以使用頂級(jí)科技公司使用的相同的前沿?cái)?shù)據(jù)工具
3.4.3. 從批處理計(jì)算到事件流的轉(zhuǎn)變,開(kāi)創(chuàng)了大“實(shí)時(shí)”數(shù)據(jù)的新時(shí)代
3.4.4. Hadoop、Apache Pig、Apache Hive、Dremel、Apache HBase、Apache Storm、Apache Cassandra、Apache Spark、Presto以及出現(xiàn)的許多其他新技術(shù)
-
3.4.5. 大數(shù)據(jù)工程師必須精通軟件開(kāi)發(fā)和底層基礎(chǔ)設(shè)施黑客技術(shù)
- 3.4.5.1. Hadoop、YARN、Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)和MapReduce在內(nèi)的Hadoop生態(tài)系統(tǒng)
-
3.4.6. 大數(shù)據(jù)很快成為其自身成功的犧牲品
3.4.6.1. 大數(shù)據(jù)抓住了試圖理解不斷增長(zhǎng)的數(shù)據(jù)量的公司的想象力,以及銷(xiāo)售大數(shù)據(jù)工具和服務(wù)的公司無(wú)休止的營(yíng)銷(xiāo)
3.4.6.2. 沒(méi)有足夠的時(shí)間來(lái)提供業(yè)務(wù)的洞察力和價(jià)值
-
3.4.7. 大數(shù)據(jù)一詞本質(zhì)上是描述處理大量數(shù)據(jù)的特定時(shí)間和方法的遺留物
3.4.7.1. 如今,數(shù)據(jù)的移動(dòng)速度比以往任何時(shí)候都快,而且數(shù)據(jù)增長(zhǎng)越來(lái)越大,但是大數(shù)據(jù)處理已經(jīng)變得如此容易理解,以至于它不再是一個(gè)單獨(dú)的術(shù)語(yǔ)
3.4.7.2. 每家公司都旨在解決其數(shù)據(jù)問(wèn)題而不用關(guān)心實(shí)際數(shù)據(jù)大小
3.4.7.3. 大數(shù)據(jù)工程師現(xiàn)在只是數(shù)據(jù)工程師
3.5. 21世紀(jì)20年代
3.5.1. 數(shù)據(jù)生命周期工程
3.5.2. 包括現(xiàn)代數(shù)據(jù)棧,代表了一組現(xiàn)成的開(kāi)源和第三方產(chǎn)品,這些產(chǎn)品組合起來(lái)可以讓分析師的工作更輕松
-
3.5.3. 雖然數(shù)據(jù)工程師保持低級(jí)數(shù)據(jù)編程技能并根據(jù)需要使用這些技能,但他們?cè)絹?lái)越多地發(fā)現(xiàn)自己的角色側(cè)重于價(jià)值鏈中更高層次
3.5.3.1. 安全
3.5.3.2. 數(shù)據(jù)管理
3.5.3.3. DataOps
3.5.3.4. 數(shù)據(jù)架構(gòu)
3.5.3.5. 編排
3.5.3.6. 一般數(shù)據(jù)生命周期管理
3.5.4. 開(kāi)源項(xiàng)目和服務(wù)不再關(guān)注誰(shuí)擁有“最大數(shù)據(jù)”,而是越來(lái)越關(guān)注管理和治理數(shù)據(jù),使其更易于使用和發(fā)現(xiàn),并提高其質(zhì)量
3.5.5. 設(shè)計(jì)管道時(shí),關(guān)心隱私、匿名化、數(shù)據(jù)垃圾收集和法規(guī)遵從性
3.5.6. 強(qiáng)調(diào)去中心化和敏捷性,這與傳統(tǒng)的企業(yè)命令-控制型方法形成鮮明對(duì)比
-
3.5.7. 數(shù)據(jù)生命周期管理的黃金時(shí)代
- 3.5.7.1. 管理數(shù)據(jù)工程生命周期的數(shù)據(jù)工程師擁有比以往更好的工具和技術(shù)
4. 數(shù)據(jù)工程與數(shù)據(jù)科學(xué)
4.1. 數(shù)據(jù)工程與數(shù)據(jù)科學(xué)和分析學(xué)是分開(kāi)的
-
4.1.1. 數(shù)據(jù)工程位于數(shù)據(jù)科學(xué)的上游
- 4.1.1.1. 意味著數(shù)據(jù)工程師提供數(shù)據(jù)科學(xué)家使用的輸入(數(shù)據(jù)工程的下游)
4.1.2. 數(shù)據(jù)科學(xué)家將這些輸入轉(zhuǎn)化為有用的東西
4.2. 數(shù)據(jù)科學(xué)需求層次
4.2.1. 收集
4.2.2. 移動(dòng)/存儲(chǔ)
4.2.3. 探索/轉(zhuǎn)變
4.2.4. 復(fù)合/標(biāo)簽
4.2.5. 學(xué)習(xí)/優(yōu)化
4.3. 數(shù)據(jù)科學(xué)家通常沒(méi)有接受過(guò)設(shè)計(jì)生產(chǎn)級(jí)數(shù)據(jù)系統(tǒng)的培訓(xùn),他們最終會(huì)隨意地做這項(xiàng)工作,因?yàn)樗麄內(nèi)狈?shù)據(jù)工程師的支持和資源
4.3.1. 在理想情況下,數(shù)據(jù)科學(xué)家應(yīng)該將90%以上的時(shí)間專(zhuān)注于金字塔的頂層:分析、實(shí)驗(yàn)和ML
4.3.2. 當(dāng)數(shù)據(jù)工程師專(zhuān)注于層次結(jié)構(gòu)的這些底層部分時(shí),他們?yōu)閿?shù)據(jù)科學(xué)家的成功奠定了堅(jiān)實(shí)的基礎(chǔ)
4.4. 隨著數(shù)據(jù)科學(xué)推動(dòng)高級(jí)分析和ML,數(shù)據(jù)工程跨越了獲取數(shù)據(jù)和從數(shù)據(jù)中獲取價(jià)值之間的鴻溝
- 4.4.1. 認(rèn)為數(shù)據(jù)工程與數(shù)據(jù)科學(xué)具有同等的重要性和可見(jiàn)性,數(shù)據(jù)工程師在使數(shù)據(jù)科學(xué)在生產(chǎn)中取得成功方面發(fā)揮著至關(guān)重要的作用
5. 數(shù)據(jù)工程技能和活動(dòng)
5.1. 數(shù)據(jù)工程師的技能集包含數(shù)據(jù)工程的“底層設(shè)計(jì)"
5.1.1. 安全、數(shù)據(jù)管理、DataOps、數(shù)據(jù)架構(gòu)和軟件工程
5.1.2. 該技能集需要了解如何評(píng)估數(shù)據(jù)工具以及它們?nèi)绾卧谡麄€(gè)數(shù)據(jù)工程生命周期中相互配合
5.1.3. 必須沿著成本、敏捷性、可擴(kuò)展性、簡(jiǎn)單性、復(fù)用性和互操作性等軸線不斷優(yōu)化
5.2. 數(shù)據(jù)工程師需要知道并理解如何使用少數(shù)強(qiáng)大的龐大技術(shù)(Hadoop、Spark、Teradata、Hive等)來(lái)創(chuàng)建數(shù)據(jù)解決方案
- 5.2.1. 他們的工作將致力于集群管理和維護(hù)、管理開(kāi)銷(xiāo)、寫(xiě)管道和轉(zhuǎn)換作業(yè),以及其他任務(wù)
5.3. 數(shù)據(jù)工程師現(xiàn)在專(zhuān)注于平衡能夠?yàn)槠髽I(yè)帶來(lái)價(jià)值的最簡(jiǎn)單、最具成本效益的最佳服務(wù)
5.4. 數(shù)據(jù)工程師通常不直接構(gòu)建ML模型、創(chuàng)建報(bào)告或儀表板、執(zhí)行數(shù)據(jù)分析、構(gòu)建關(guān)鍵績(jī)效指標(biāo)(KPI)或開(kāi)發(fā)軟件應(yīng)用程序
5.5. 數(shù)據(jù)工程師應(yīng)該對(duì)這些領(lǐng)域有很好的理解,以便更好地為利益相關(guān)者提供服務(wù)
6. 數(shù)據(jù)成熟度
6.1. 數(shù)據(jù)成熟度是指整個(gè)組織向著更高的數(shù)據(jù)利用率、功能和集成的方向發(fā)展,但數(shù)據(jù)成熟度不僅僅取決于公司的年齡或收入
6.2. 重要的是如何利用數(shù)據(jù)作為競(jìng)爭(zhēng)優(yōu)勢(shì)
6.3. 三個(gè)階段
-
6.3.1. 從數(shù)據(jù)開(kāi)始
6.3.1.1. 根據(jù)定義,一個(gè)開(kāi)始使用數(shù)據(jù)的公司處于其數(shù)據(jù)成熟度的早期階段
-
6.3.1.2. 數(shù)據(jù)團(tuán)隊(duì)很小,人數(shù)通常只有個(gè)位數(shù)
6.3.1.2.1. 在這個(gè)階段,數(shù)據(jù)工程師通常是多面手,通常會(huì)扮演其他幾個(gè)角色,例如數(shù)據(jù)科學(xué)家或軟件工程師
6.3.1.3. 數(shù)據(jù)工程師的目標(biāo)是快速行動(dòng)、獲得牽引力并增加價(jià)值
-
6.3.1.4. 從數(shù)據(jù)中獲取價(jià)值的實(shí)用性通常不為人所知,但這種愿望是存在的
6.3.1.4.1. 報(bào)告或分析缺乏正式的結(jié)構(gòu),大多數(shù)數(shù)據(jù)請(qǐng)求都是臨時(shí)性的
6.3.1.5. 沒(méi)有辦法以可擴(kuò)展和可重復(fù)的方式將這些模型部署到生產(chǎn)中
6.3.1.6. 主要來(lái)自在沒(méi)有足夠的數(shù)據(jù)成熟度或數(shù)據(jù)工程支持的情況下參與不成熟的數(shù)據(jù)科學(xué)項(xiàng)目的個(gè)人經(jīng)驗(yàn)
-
6.3.1.7. 數(shù)據(jù)工程師應(yīng)該關(guān)注
6.3.1.7.1. 獲得包括執(zhí)行管理層在內(nèi)的主要利益相關(guān)者的支持
6.3.1.7.1.1. 理想情況下,數(shù)據(jù)工程師應(yīng)該有一個(gè)關(guān)鍵舉措的發(fā)起人來(lái)設(shè)計(jì)和構(gòu)建數(shù)據(jù)架構(gòu)以支持公司的目標(biāo)
6.3.1.7.2. 定義正確的數(shù)據(jù)架構(gòu)(通常是單獨(dú)的,因?yàn)閿?shù)據(jù)架構(gòu)可能不可用)
6.3.1.7.3. 識(shí)別和審計(jì)將支持關(guān)鍵舉措的數(shù)據(jù),并在你設(shè)計(jì)的數(shù)據(jù)架構(gòu)內(nèi)運(yùn)行
6.3.1.7.4. 為未來(lái)的數(shù)據(jù)分析師和數(shù)據(jù)科學(xué)家構(gòu)建堅(jiān)實(shí)的數(shù)據(jù)基礎(chǔ),以生成具有競(jìng)爭(zhēng)價(jià)值的報(bào)告和模型
6.3.1.7.4.1. 你可能還必須生成這些報(bào)告和模型,直到雇用該團(tuán)隊(duì)
6.3.1.8. 如果數(shù)據(jù)沒(méi)有帶來(lái)很多可見(jiàn)的成功,組織的意志力可能會(huì)減弱
6.3.1.9. 走出去與人交談,避免孤島工作
6.3.1.10. 避免無(wú)差別的繁重工作
6.3.1.11. 僅在可以創(chuàng)造競(jìng)爭(zhēng)優(yōu)勢(shì)的地方構(gòu)建自定義解決方案和代碼
-
6.3.2. 用數(shù)據(jù)擴(kuò)展
6.3.2.1. 在這個(gè)階段,一家公司已經(jīng)擺脫了臨時(shí)數(shù)據(jù)請(qǐng)求并擁有正式的數(shù)據(jù)實(shí)踐
6.3.2.2. 現(xiàn)在的挑戰(zhàn)是創(chuàng)建可擴(kuò)展的數(shù)據(jù)架構(gòu)并為公司真正的數(shù)據(jù)驅(qū)動(dòng)的未來(lái)做規(guī)劃
6.3.2.3. 數(shù)據(jù)工程角色從通才轉(zhuǎn)變?yōu)閷?zhuān)家,人們專(zhuān)注于數(shù)據(jù)工程生命周期的特定方面
-
6.3.2.4. 數(shù)據(jù)工程師的目標(biāo)
6.3.2.4.1. 建立正式的數(shù)據(jù)實(shí)踐
6.3.2.4.2. 創(chuàng)建可擴(kuò)展且健壯的數(shù)據(jù)架構(gòu)
6.3.2.4.3. 采用DevOps和DataOps實(shí)踐
6.3.2.4.4. 建立支持ML的系統(tǒng)
6.3.2.4.5. 繼續(xù)避免無(wú)差別的繁重工作,只有在產(chǎn)生競(jìng)爭(zhēng)優(yōu)勢(shì)時(shí)才進(jìn)行自定義
-
6.3.2.5. 隨著我們對(duì)數(shù)據(jù)的處理變得越來(lái)越復(fù)雜,人們很想采用基于硅谷公司社會(huì)證明的尖端技術(shù)
6.3.2.5.1. 這很少能很好地利用你的時(shí)間和精力
6.3.2.6. 擴(kuò)展的主要瓶頸不是集群節(jié)點(diǎn)、存儲(chǔ)或技術(shù),而是數(shù)據(jù)工程團(tuán)隊(duì)
-
6.3.2.7. 你會(huì)很想把自己定位成一名技術(shù)專(zhuān)家,一個(gè)可以提供神奇產(chǎn)品的數(shù)據(jù)天才
6.3.2.7.1. 將你的注意力轉(zhuǎn)移到務(wù)實(shí)的領(lǐng)導(dǎo)力上,并開(kāi)始過(guò)渡到下一個(gè)成熟階段,與其他團(tuán)隊(duì)就數(shù)據(jù)的實(shí)用性進(jìn)行溝通
6.3.2.7.2. 教會(huì)組織如何使用和利用數(shù)據(jù)
-
6.3.3. 以數(shù)據(jù)領(lǐng)先
6.3.3.1. 在這個(gè)階段,公司是由數(shù)據(jù)驅(qū)動(dòng)的
-
6.3.3.2. 數(shù)據(jù)工程師創(chuàng)建的自動(dòng)化管道和系統(tǒng)允許公司內(nèi)部的人員進(jìn)行自助分析和ML
6.3.3.2.1. 數(shù)據(jù)工程師實(shí)施適當(dāng)?shù)目刂坪蛯?shí)踐,以確保數(shù)據(jù)始終可供人員和系統(tǒng)使用
6.3.3.2.2. 數(shù)據(jù)工程角色比第2階段更加專(zhuān)業(yè)化
6.3.3.3. 引入新的數(shù)據(jù)源是無(wú)縫的,并且產(chǎn)生了有形的價(jià)值
-
6.3.3.4. 數(shù)據(jù)工程師
6.3.3.4.1. 創(chuàng)建自動(dòng)化以無(wú)縫引入和使用新數(shù)據(jù)
6.3.3.4.2. 專(zhuān)注于構(gòu)建利用數(shù)據(jù)作為競(jìng)爭(zhēng)優(yōu)勢(shì)的自定義工具和系統(tǒng)
6.3.3.4.3. 專(zhuān)注于數(shù)據(jù)的“企業(yè)級(jí)”方面
6.3.3.4.3.1. 數(shù)據(jù)管理(包括數(shù)據(jù)治理和質(zhì)量)和DataOps
6.3.3.4.4. 在整個(gè)組織中公開(kāi)和傳播數(shù)據(jù)的部署工具,包括數(shù)據(jù)目錄、數(shù)據(jù)血緣工具和元數(shù)據(jù)管理系統(tǒng)
6.3.3.4.5. 與軟件工程師、ML工程師、分析師和其他人高效協(xié)作
6.3.3.4.6. 創(chuàng)建一個(gè)人們可以在這里協(xié)作和公開(kāi)發(fā)言的社區(qū)和環(huán)境,無(wú)論他們的角色或職位如何
-
6.3.3.5. 需要注意的問(wèn)題
6.3.3.5.1. 在這個(gè)階段,自滿是一個(gè)重大危險(xiǎn)
6.3.3.5.1.1. 一旦組織達(dá)到第3階段,他們就必須不斷專(zhuān)注于維護(hù)和改進(jìn),否則就有退回到較低階段的風(fēng)險(xiǎn)
6.3.3.5.2. 與其他階段相比,技術(shù)干擾在這里是一個(gè)更大的危險(xiǎn)
6.3.3.5.2.1. 追求昂貴的業(yè)余項(xiàng)目是一種誘惑,這些項(xiàng)目不會(huì)為企業(yè)帶來(lái)價(jià)值
6.3.3.5.2.2. 應(yīng)該只在可提供競(jìng)爭(zhēng)優(yōu)勢(shì)的情況下使用自定義技術(shù)