日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

早在 1980 年,未來學家阿爾文·托夫勒就在《第三次浪潮》中,將大數據比喻為“第三次浪潮的華彩樂章”。

21 世紀以來,數據量進入每兩年翻一番的增長期,越來越多人意識到了數據的價值,數據架構師閃亮登場。數據成為企業不可忽視的重要資產。而數據架構師則是企業數據資產最重要的“奠基者”。

最早,數據架構師在 IOE 上工作;

2009 年,阿里云最早提出“去 IOE”的口號,初代數據架構師革了自己的命;

2015 年,這一年產生的數據量是人類過去歷史上所產生數據量的總和,從此進入了指數級增長階段。數據架構師也演化出了 2 個大方向(平臺型數據架構師、數倉型數據架構師)。

本文以作者親歷視角,主要分享數倉型數據架構師的“修煉大法”。歡迎辯證看待、留言交流。

你想成為哪種數據架構師

目前數據架構師有兩個大的方向:一,偏平臺的架構師,對開源技術要求較高,企業一般會要求讀過開源技術源碼,或者參與過開源項目,偏平臺的構建;二,偏數倉的架構師,對 SQL 能力要求較高,企業一般會要求掌握數倉理論,有數倉項目經驗。

(1)平臺型數據架構師

這個方向也會分類:一,開源派,互聯網公司一般喜歡這個流派,二,商用軟件派,如 Oracle、IBM 等流派,通常解決傳統企業的數據問題。這個流派目前受到了來自阿里、騰訊和華為較大的沖擊。個人認為目前開源派是比較符合近年潮流趨勢的。

平臺型數據架構師,是為數倉型數據架構師服務的,直白地說,你開發能力要很牛逼,你要懂應用。

(2)數倉型數據架構師

這個方向要求精通數據倉庫原理,通過實時、離線等技術解決企業的數據問題。需要掌握 ELT 的流程,掌握各種數據源的特點,掌握大數據工具的使用。

數倉型數據架構師,剛好是平臺型數據架構師的用戶。直白地說,你寫 SQL 的能力要牛逼,你要懂業務。

數據架構師的必備知識樹

敲門磚:掌握一門開發語言

如果你是一位計算機專業的學生,我推薦使用 C 語言,強烈建議通過面向對象的編程思想去消化數據結構。數據架構中,很多邏輯和原理都來自于數據結構這門課程,如鏈表、隊列、堆棧、樹、圖等,掌握數據結構對后續進一步學習非常的重要。

如果你是想從其他崗位轉數據架構師,那么更建議學習 JAVA,Java 的入門會相對簡單。當然最好的方式是通過 Java 的編程思想領會數據結構這本書的知識點。一定要模擬 B/C 的整個過程,不要立馬就用 Java 的高級框架,而是要用 Java 原生的 servlet 模擬下前端和后端的交互,后端和數據庫的交互。

初學者看文章,常會遇到很多新概念,覺得看不懂,記不住。最好的學習方法是讓自己有興趣、有成就感。所以理論的內容我建議慢慢消化,反而實際操作很重要——實際操作能給自己帶來成就感。

比如你初學 Java,你第一個目標是要在屏幕上打出“Hello, world! ”。網上會有很多的資料,會教你安裝 JDK、IDE 工具等等,你可以先不管那么多,找個偏基礎的資料,按部就班的實現一次。在整個過程中你會遇到很多的問題,JDK 在哪里下載,版本選哪一個,環境變量如何配置等等。最好的方式是邊查邊做,通過親手實踐來驗證整個過程,再去理解。最終成功地打印出“Hello, world! ”,你會有前所未有的成就感!

數據結構這門課程確實有些難度,同樣建議采用邊學理論邊實踐的方法,甚至我們可以更“暴力”,直接在網上找幾段別人寫好的代碼,跑一遍,看看效果,讀懂代碼,再回過來理解概念。這時候你會感覺就像近視眼戴上了眼鏡,突然發現很清晰。

你還需要了解開發語言的分類:什么是低級語言,什么是高級語言?什么是面向過程的編程,什么是面向對象的編程?什么是編譯型語言,什么是解釋型語言?可以不深入,但是作為一個架構師,你要了解這些東西。最好也要了解設計模型,如單例模式、工廠模式、生產者模式等常用設計模型,對思維方式有很好的提升。

開發語言是成為一名合格數據架構師的敲門磚。你可以選一本不錯的書,結合書籍一步一步走。自學時,知識檢索能力很重要,你要慢慢學會在浩瀚的互聯網學海中查找自己想要的知識。有條件的同學也可以報個靠譜的培訓班,這是個不錯的選擇,會少走很多彎路。但是速成后很多人只能做個碼農,最終要成為架構師級別的高手,還是需要扎實的基本功是必須的。需要很長的路才能成為架構師級別的編程高手。所以如果想有更高的成就,必須對概念、原理、技術。

基本功:掌握一種數據庫

對于數據架構師,必須要掌握一種數據庫,同時要了解常見的數據庫。

建議通過 Oracle 來學習數據庫,安裝系統時選擇 linux,也可以選 centos。第一步你要模擬操作系統,也就會接觸到虛擬機的概念。簡單來說,也就是第一步模擬 Linux 系統,第二步再安裝數據庫。

為什么推薦 Oracle 數據庫?因為 Oracle 的安裝過程相對比較復雜,在過程中你會遇到各種各樣的問題,遇到的問題越多,學習的就越多。整個過程中你要學習 Linux 系統的各種命令、網絡、補丁包、防火墻等一系列問題,最后通過客戶端可以訪問數據庫了,可以查看數據了,就會很有成就感。如果領悟能力和動手能力很好,這個步驟一般需要一周左右的時間去消化。但這只是第一步,記得一定要多裝幾次來加深理解。

后面就要開始學習 SQL 語句了,建表、插入、更改、查詢,操作起來吧!理論也要跟上,“事務”的概念一定要看,數據庫、實例名、表空間、段、塊等概念要理解。

當然也要學習如何優化數據庫。數據庫底層無非是硬盤、內存、CPU 在支撐,所以這些資源怎么分配很重要,在測試時一定要留意這三個重要參數的變化。操作系統層面的優化就是為了讓操作系統和數據庫軟件更好地結合,可以去調系統的參數。這是統一的優化思想,后面的應用系統、大數據等技術也適用。

數據庫層面的優化,也是一樣的道理,留意、調整參數,原則就是“集中有限的資源做更多重要的事”。

基于數據的優化,我建議盡可能少消耗計算機的性能:硬盤的讀寫、網絡的傳輸、數據的計算。如分表分區,索引等等都是為了用盡可能少的資源,盡可能快地完成盡可能多的事:就是提高效率。當然有的時候我們會犧牲時間換空間,也會犧牲空間換時間,所以對于優化,我們要綜合考慮成本和效率的問題。

SQL 調優中,執行計劃是必須要會看的,每個數據庫或者引擎都有自己的規則,我們優化過程中要了解 SQL 的執行邏輯,這樣我們才知道如何優化。

要了解哪些數據庫呢?關系型數據庫中 Oracle、MySQL、SQLServer、DB2、PostgreSQL 是要去了解的,同時了解行存儲和列存儲的區別,當然了解越多越好。NoSQL 數據庫的話,建議了解 MongoDB、HBase、redis。

其他數據庫還很多,通過項目和 ELT 過程來熟悉更多的架構吧!

必殺技:大數據技術

大數據解決了什么問題?其實答案很簡單:分布式存儲和分布式計算。

所以,學習大數據最好的方式就是搭建一套開源的 Hadoop 集群,在上面操作 HDFS、hive、spark、HBase 等各種組件。

搭建的過程和 Oracle 安裝過程非常類似,我們首先可以通過虛擬機模擬 3-5 個節點(服務器),在服務器上進行安裝。

安裝過程不再一一贅述,給大家一個實踐場景:

1、實踐場景

需求描述:從 mysql 數據庫把兩張表導入到 hadoop,然后通過 hive 進行計算,結果數據同步回 mysql 數據庫。

可能遇到的問題:同步工具的選擇,數據加載方式,轉化方式,如何把整個流程串聯起來,怎么啟動這個流程。

(1)同步工具的選擇

待選的同步工具有 Sqoop 和 DataX,Sqoop 還是 Hadoop 開源的工具,DataX 是阿里開源的工具,各有各的優勢,建議都可以學習了解。

(2)數據加載方式

hive 的底層是 HDFS,簡單說就是個文件,hive 只是映射過去,通過類 SQL 語言實現計算。你可以直接通過 hive 接口(三種方式)建內部表。Sqoop 和 DataX 都支持直接同步到 hive 中。

(3)轉化方式

這是模擬過程,hive 不支持存儲、不支持 update,所以可以進行兩張表數據聚合(left join、group by 等)后數據插入到另一張表中,再把數據同步回 mysql。

(4)流程如何串起來

建議可以通過 Linux 的 shell 腳本進行串聯,數據同步 - 數據轉化 - 數據導出。

(5)如何啟動流程

所有任務封裝到 sh 腳本里,可以利用 Linux 的 crontab 進行定時調度。

2、劃下重點

為了更好應對大數據面試,最好能系統地學習一下 HDFS、MapReduce、Hive、Spark、HBase、Yarn、Kafka、Zookeeper 等一系列的大數據組件。

大數據面試中經常會問到的問題有哪些?

問題常常會包括 HiveSQL 技巧和調優:

Hive 技巧:內部表和外部表、分區、分桶、窗口函數、UDF(UDAF、UDTF)、行轉列、列轉行等。

優化問題:數據熱點(數據傾斜問題)、參數優化、業務分表、sql 優化。因為 Hive 底層是 MapReduce 操作 HDFS,所以要了解 Map 和 Reduce 階段在做什么?數據傾斜問題是數據分布不均導致的,和 MapReduce 原理息息相關,了解了 MapReduce,你就會優化 Hive 了。

Spark 計算引擎和 Hive 底層不一樣,Spark 學習你會遇到 DAG 圖,RDD、內存、Scala 語言等知識,一樣地學習優化思路和技巧。

HBase 是個列族數據庫,通過 Key-value 方式進行數據存儲,學習方式同上。

Yarn 是資源管理器,CPU、內存資源都是它來管理的,平臺架構師要深入學習,數倉架構師可以稍作了解。

Kafka 是消息隊列,主要用于數據通道,進行數據緩沖和技術解耦使用。

Zookeeper 是管理所有大數據組件的,因為 hadoop 生態圈組件都是動物名字命名的,所以 Zookeeper 就是動物管理員,依此進行命名的。

3、深入看看

其實大數據技術主要解決分布式計算和分布式存儲,簡單的說就是可以進行彈性擴展,存儲資源無限擴展,計算資源無限擴展。這樣就可以解決小型機和一體機無法解決的計算和存儲問題。

解決這兩個問題,我們需要一個操作系統來支持,這就是分布式操作系統。(這個核心思想最早是 google 為了解決自己的問題提出來,后續 Apache 進行開源提出了 HDFS。)

資源怎么協調引出了 Yarn,消息隊列提出 Kafka,離線計算 Hive,內存計算 Spark(不完全靠內存)、交互式查詢 impala、多維分析 kylin 等等,因篇幅有限,每個類型只列舉一個。

必殺技 2:數據倉庫

1、初步學習

初步接觸數據倉庫時,建議先看維度模型,了解什么是事實表,什么是維度表。做一張事實表,定義哪些是維度、哪些是度量,然后通過 SQL 進行查詢。

有了基本概念后,可以再學習深一些的內容,例如星型模型、雪花模型。

如何成為一個合格的數據架構師?

 

戳上圖看天啟關于數據模型的詳解

再進階,則可以學習維度建模:選擇業務過程 - 聲明粒度 - 確定維度 - 確定事實,如果能親身參與一個項目就更好了。

2、步入設計

首先要了解數據倉庫的分層、每一層做什么,為什么要分層?

然后,了解事實表的類型(事務、周期快照、累計快照)、維度表的類型(普通維度、緩慢變化維度)、總線矩陣、數據立方體(cube)等。

3、高階學習

維度建模實踐后,發現維度建模的不足,那么是時候可以開始研究其他建模了。建議通讀并理解 Inmon 大師的范式建模(數據倉庫之父 Bill Inmon, Building the Data Warehouse)和 Kimball 大師的維度建模,兩者的建模各有優劣,可以取長補短。

4、解決業務問題

數據模型最終解決的是業務問題,目前常見的建模以維度建模為主,但是維度建模不停的在變化, Bill Inmon 提出了 datavault 的建模思想,數據倉庫、數據平臺、數據中臺、數據湖等概念層出不窮。本質不變,目標還是解決實際的業務問題。

我個人建議,我們數據倉庫的規劃可以自頂向下,采用 Inmon 的思想,開發和建模規范也要考慮全局,而在實施中可以采用維度建模,自底向上,采用 Kimbal 思想,落地快,迭代快。實際解決問題時不拘泥于一個模型,什么模型合適就用什么模型。

5、阿里的創新

阿里基于維度建模提出了公共模型層概念,一定程度上能解決數據共享和重復建設的問題,OneData 的理念非常有研究價值。但在應用中我們需要注意,不要一味的用相同的場景做法去套不同行業,在實踐中需要辯證看待,按需去用。

6、模型標準

數據模型沒有好壞,只有用得對錯。判斷的標準也很簡單,有沒有解決業務問題?更高的要求是有沒有驅動業務的變革或者創新。大白話來說就是兩個問題:掙到錢了嗎?省下錢了嗎?

必殺技 3:ELT 技術

1、ELT 概念

傳統的 ETL (Extract-Transform-Load)是把 T 的部分放在中間的,在大數據環境下我們更愿意把 T 放在后面,從 ETL 向 ELT 進行演變。原因也很簡單,這樣我們可以充分利用大數據環境 T 的能力。數據開發也平臺化了,例如阿里的 DataWorks、Dataphin,將數據同步、清洗轉化、任務調度集成在一起。

2、ELT 技術注意哪些

E(Extract,抽取)和 L(Load,裝載)的優化需要懂源頭和目標數據庫(數據倉庫)的特點,需要根據情況進行優化。T(Transform,轉化)部分要理解底層技術原理,進行優化。

ELT 的注意點總結如下:

(1)時效性

必須在規定時間內跑完數據,跑出結果;

(2)準確性

數據計算結果必須準確;

(3)容錯性

ELT 可以支持重跑、補數等功能;

(4)前瞻性

及時告警和預警功能,提前處理問題。

加分項:應用系統

一個應用系統是怎么誕生的?可以通過軟件工程這門課程學習,需求分析、概要設計、詳細設計、軟件開發、軟件測試、試運行、上線、運維、下線等整個過程。

一個應用系統一般會有前端、后端和數據庫,對于我們數據架構師,我們至少要知道,怎么開發一個系統,怎么保證一個系統的穩定。特別是“穩定”,我們要對高可用、負載均衡、安全有深刻的認識,需要考慮到應用(Tomat)、數據庫(MySQL)、其他中間件(緩存服務、文件服務等)。

  • 高可用:系統一個節點發生故障后能進行無感切換,這個很重要。
  • 負載均衡:使壓力均衡進行,它決定了系統的擴展性。
  • 安全:磁盤陣列(raid0、raid1、raid5、raid10)、防火墻、授權、認證,及數據安全,防泄防篡、脫敏加密、防丟失等。

在做架構決策時,知道哪些操作可能會影響業務系統,才能設計更好的數據架構。

錦上添花:算法

DT 時代已至,未來一定是“數據 +AI”的天下。所以作為數據架構師,我們可以不會寫算法,但我們要了解且會使用算法。

這里的算法主要指機器學習算法,初學者可以理解下預測、分類(聚類)的概念(其實很多圖像和語音識別的算法也可以歸為預測和聚類算法中)。

可以用 Python 模擬最簡單的線性回歸,進階則研究邏輯回歸。

  • 監督學習算法:支持向量機 (Support Vector machine,SVM)、決策樹、樸素貝葉斯分類、K- 臨近算法(KNN);
  • 非監督學習算法:K- 均值聚類 (K-Means) 。優點是算法簡單容易實現,缺點則是可能收斂到局部最小值,在大規模數據集上收斂較慢。可在圖像處理、數據分析以及市場研究等場景應用;
  • 強化學習(深度)算法:如果不想轉職算法工程師,目前僅作了解即可。

最后分享算法開發的簡化版步驟:

  1. 數據準備(數據同步);
  2. 問題明確(明確分類還是回歸問題);
  3. 數據處理(合并、去重、異常剔除);
  4. 特征工程(訓練集,測試集、驗證集);
  5. 選擇合適的算法;
  6. 模型評估(若評估不合格,則考慮:①換算法;②調參數;③特征工程再進一步處理)。

總結:建立屬于自己的知識索引

其實,無論是什么崗位,自學能力都很重要。我們可以為自己建立一個知識目錄或知識索引,按照知識索引去查漏補缺,不斷豐富自己。

作為一名數據架構師,我們要懂點硬件、懂點網絡、懂點安全,了解應用,熟練掌握一門開發語言,深入理解一個數據庫,實操過大數據,精通數據倉庫技術(建模 +ELT),有深度,有廣度。

分享到:
標簽:數據 架構師
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定