五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

大數(shù)據(jù)處理流程是怎樣的?大數(shù)據(jù)學(xué)習(xí)路線是什么?

2020-07-18 18:39 作者:自學(xué)Python的小姐姐呀  | 我要投稿

大數(shù)據(jù)處理流程



上圖是一個(gè)簡(jiǎn)化的大數(shù)據(jù)處理流程圖,大數(shù)據(jù)處理的主要流程包括數(shù)據(jù)收集、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)處理、數(shù)據(jù)應(yīng)用等主要環(huán)節(jié)。下面我們逐一對(duì)各個(gè)環(huán)節(jié)所需要的技術(shù)棧進(jìn)行講解:

1.1 數(shù)據(jù)收集

大數(shù)據(jù)處理的第一步是數(shù)據(jù)的收集?,F(xiàn)在的中大型項(xiàng)目通常采用微服務(wù)架構(gòu)進(jìn)行分布式部署,所以數(shù)據(jù)的采集需要在多臺(tái)服務(wù)器上進(jìn)行,且采集過程不能影響正常業(yè)務(wù)的開展。基于這種需求,就衍生了多種日志收集工具,如 Flume 、Logstash、Kibana 等,它們都能通過簡(jiǎn)單的配置完成復(fù)雜的數(shù)據(jù)收集和數(shù)據(jù)聚合。

1.2 數(shù)據(jù)存儲(chǔ)

收集到數(shù)據(jù)后,下一個(gè)問題就是:數(shù)據(jù)該如何進(jìn)行存儲(chǔ)?通常大家最為熟知是 MySQL、Oracle 等傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,它們的優(yōu)點(diǎn)是能夠快速存儲(chǔ)結(jié)構(gòu)化的數(shù)據(jù),并支持隨機(jī)訪問。但大數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)通常是半結(jié)構(gòu)化(如日志數(shù)據(jù))、甚至是非結(jié)構(gòu)化的(如視頻、音頻數(shù)據(jù)),為了解決海量半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ),衍生了 Hadoop HDFS 、KFS、GFS 等分布式文件系統(tǒng),它們都能夠支持結(jié)構(gòu)化、半結(jié)構(gòu)和非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ),并可以通過增加機(jī)器進(jìn)行橫向擴(kuò)展。

分布式文件系統(tǒng)完美地解決了海量數(shù)據(jù)存儲(chǔ)的問題,但是一個(gè)優(yōu)秀的數(shù)據(jù)存儲(chǔ)系統(tǒng)需要同時(shí)考慮數(shù)據(jù)存儲(chǔ)和訪問兩方面的問題,比如你希望能夠?qū)?shù)據(jù)進(jìn)行隨機(jī)訪問,這是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫所擅長的,但卻不是分布式文件系統(tǒng)所擅長的,那么有沒有一種存儲(chǔ)方案能夠同時(shí)兼具分布式文件系統(tǒng)和關(guān)系型數(shù)據(jù)庫的優(yōu)點(diǎn),基于這種需求,就產(chǎn)生了 HBase、MongoDB。

1.3 數(shù)據(jù)分析

大數(shù)據(jù)處理最重要的環(huán)節(jié)就是數(shù)據(jù)分析,數(shù)據(jù)分析通常分為兩種:批處理和流處理。

  • 批處理:對(duì)一段時(shí)間內(nèi)海量的離線數(shù)據(jù)進(jìn)行統(tǒng)一的處理,對(duì)應(yīng)的處理框架有 Hadoop MapReduce、Spark、Flink 等;

  • 流處理:對(duì)運(yùn)動(dòng)中的數(shù)據(jù)進(jìn)行處理,即在接收數(shù)據(jù)的同時(shí)就對(duì)其進(jìn)行處理,對(duì)應(yīng)的處理框架有 Storm、Spark Streaming、Flink Streaming 等。

批處理和流處理各有其適用的場(chǎng)景,時(shí)間不敏感或者硬件資源有限,可以采用批處理;時(shí)間敏感和及時(shí)性要求高就可以采用流處理。隨著服務(wù)器硬件的價(jià)格越來越低和大家對(duì)及時(shí)性的要求越來越高,流處理越來越普遍,如股票價(jià)格預(yù)測(cè)和電商運(yùn)營數(shù)據(jù)分析等。

上面的框架都是需要通過編程來進(jìn)行數(shù)據(jù)分析,那么如果你不是一個(gè)后臺(tái)工程師,是不是就不能進(jìn)行數(shù)據(jù)的分析了?當(dāng)然不是,大數(shù)據(jù)是一個(gè)非常完善的生態(tài)圈,有需求就有解決方案。為了能夠讓熟悉 SQL 的人員也能夠進(jìn)行數(shù)據(jù)的分析,查詢分析框架應(yīng)運(yùn)而生,常用的有 Hive 、Spark SQL 、Flink SQL、 Pig、Phoenix 等。這些框架都能夠使用標(biāo)準(zhǔn)的 SQL 或者 類 SQL 語法靈活地進(jìn)行數(shù)據(jù)的查詢分析。這些 SQL 經(jīng)過解析優(yōu)化后轉(zhuǎn)換為對(duì)應(yīng)的作業(yè)程序來運(yùn)行,如 Hive 本質(zhì)上就是將 SQL 轉(zhuǎn)換為 MapReduce 作業(yè),Spark SQL 將 SQL 轉(zhuǎn)換為一系列的 RDDs 和轉(zhuǎn)換關(guān)系(transformations),Phoenix 將 SQL 查詢轉(zhuǎn)換為一個(gè)或多個(gè) HBase Scan。

1.4 數(shù)據(jù)應(yīng)用

數(shù)據(jù)分析完成后,接下來就是數(shù)據(jù)應(yīng)用的范疇,這取決于你實(shí)際的業(yè)務(wù)需求。比如你可以將數(shù)據(jù)進(jìn)行可視化展現(xiàn),或者將數(shù)據(jù)用于優(yōu)化你的推薦算法,這種運(yùn)用現(xiàn)在很普遍,比如短視頻個(gè)性化推薦、電商商品推薦、頭條新聞推薦等。當(dāng)然你也可以將數(shù)據(jù)用于訓(xùn)練你的機(jī)器學(xué)習(xí)模型,這些都屬于其他領(lǐng)域的范疇,都有著對(duì)應(yīng)的框架和技術(shù)棧進(jìn)行處理,這里就不一一贅述。

1.5 其他框架

上面是一個(gè)標(biāo)準(zhǔn)的大數(shù)據(jù)處理流程所用到的技術(shù)框架。但是實(shí)際的大數(shù)據(jù)處理流程比上面復(fù)雜很多,針對(duì)大數(shù)據(jù)處理中的各種復(fù)雜問題分別衍生了各類框架:

  • 單機(jī)的處理能力都是存在瓶頸的,所以大數(shù)據(jù)框架都是采用集群模式進(jìn)行部署,為了更方便的進(jìn)行集群的部署、監(jiān)控和管理,衍生了 Ambari、Cloudera Manager 等集群管理工具;

  • 想要保證集群高可用,需要用到 ZooKeeper ,ZooKeeper 是最常用的分布式協(xié)調(diào)服務(wù),它能夠解決大多數(shù)集群?jiǎn)栴},包括首領(lǐng)選舉、失敗恢復(fù)、元數(shù)據(jù)存儲(chǔ)及其一致性保證。同時(shí)針對(duì)集群資源管理的需求,又衍生了 Hadoop YARN ;

  • 復(fù)雜大數(shù)據(jù)處理的另外一個(gè)顯著的問題是,如何調(diào)度多個(gè)復(fù)雜的并且彼此之間存在依賴關(guān)系的作業(yè)?基于這種需求,產(chǎn)生了 Azkaban 和 Oozie 等工作流調(diào)度框架;

  • 大數(shù)據(jù)流處理中使用的比較多的另外一個(gè)框架是 Kafka,它可以用于消峰,避免在秒殺等場(chǎng)景下并發(fā)數(shù)據(jù)對(duì)流處理程序造成沖擊;

  • 另一個(gè)常用的框架是 Sqoop ,主要是解決了數(shù)據(jù)遷移的問題,它能夠通過簡(jiǎn)單的命令將關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入到 HDFS 、Hive 或 HBase 中,或者從 HDFS 、Hive 導(dǎo)出到關(guān)系型數(shù)據(jù)庫上。

學(xué)習(xí)路線

介紹完大數(shù)據(jù)框架,接著就可以介紹其對(duì)應(yīng)的學(xué)習(xí)路線了,主要分為以下幾個(gè)方面:

2.1 語言基礎(chǔ)

1. Java

大數(shù)據(jù)框架大多采用 Java 語言進(jìn)行開發(fā),并且?guī)缀跞康目蚣芏紩?huì)提供 Java API 。Java 是目前比較主流的后臺(tái)開發(fā)語言,所以網(wǎng)上免費(fèi)的學(xué)習(xí)資源也比較多。如果你習(xí)慣通過書本進(jìn)行學(xué)習(xí),這里推薦以下入門書籍:

  • 《Java 編程的邏輯》:這里一本國人編寫的系統(tǒng)入門 Java 的書籍,深入淺出,內(nèi)容全面;

  • 《Java 核心技術(shù)》:目前最新的是第 10 版,有卷一 和卷二 兩冊(cè),卷二可以選擇性閱讀,因?yàn)槠渲泻芏嗾鹿?jié)的內(nèi)容在實(shí)際開發(fā)中很少用到。

目前大多數(shù)框架要求 Java 版本至少是 1.8,這是由于 Java 1.8 提供了函數(shù)式編程,使得可以用更精簡(jiǎn)的代碼來實(shí)現(xiàn)之前同樣的功能,比如你調(diào)用 Spark API,使用 1.8 可能比 1.7 少數(shù)倍的代碼,所以這里額外推薦閱讀 《Java 8 實(shí)戰(zhàn)》 這本書籍。

2. Scala

Scala 是一門綜合了面向?qū)ο蠛秃瘮?shù)式編程概念的靜態(tài)類型的編程語言,它運(yùn)行在 Java 虛擬機(jī)上,可以與所有的 Java 類庫無縫協(xié)作,著名的 Kafka 就是采用 Scala 語言進(jìn)行開發(fā)的。

為什么需要學(xué)習(xí) Scala 語言 ?這是因?yàn)楫?dāng)前最火的計(jì)算框架 Flink 和 Spark 都提供了 Scala 語言的接口,使用它進(jìn)行開發(fā),比使用 Java 8 所需要的代碼更少,且 Spark 就是使用 Scala 語言進(jìn)行編寫的,學(xué)習(xí) Scala 可以幫助你更深入的理解 Spark。同樣的,對(duì)于習(xí)慣書本學(xué)習(xí)的小伙伴,這里推薦兩本入門書籍:

  • 《快學(xué) Scala(第 2 版)》

  • 《Scala 編程 (第 3 版)》

這里說明一下,如果你的時(shí)間有限,不一定要學(xué)完 Scala 才去學(xué)習(xí)大數(shù)據(jù)框架。Scala 確實(shí)足夠的精簡(jiǎn)和靈活,但其在語言復(fù)雜度上略大于 Java,例如隱式轉(zhuǎn)換和隱式參數(shù)等概念在初次涉及時(shí)會(huì)比較難以理解,所以你可以在了解 Spark 后再去學(xué)習(xí) Scala,因?yàn)轭愃齐[式轉(zhuǎn)換等概念在 Spark 源碼中有大量的運(yùn)用。

2.2 Linux 基礎(chǔ)

通常大數(shù)據(jù)框架都部署在 Linux 服務(wù)器上,所以需要具備一定的 Linux 知識(shí)。Linux 書籍當(dāng)中比較著名的是 《鳥哥私房菜》系列,這個(gè)系列很全面也很經(jīng)典。但如果你希望能夠快速地入門,這里推薦《Linux 就該這么學(xué)》,其網(wǎng)站上有免費(fèi)的電子書版本。

2.3 構(gòu)建工具

這里需要掌握的自動(dòng)化構(gòu)建工具主要是 Maven。Maven 在大數(shù)據(jù)場(chǎng)景中使用比較普遍,主要在以下三個(gè)方面:

  • 管理項(xiàng)目 JAR 包,幫助你快速構(gòu)建大數(shù)據(jù)應(yīng)用程序;

  • 不論你的項(xiàng)目是使用 Java 語言還是 Scala 語言進(jìn)行開發(fā),提交到集群環(huán)境運(yùn)行時(shí),都需要使用 Maven 進(jìn)行編譯打包;

  • 大部分大數(shù)據(jù)框架使用 Maven 進(jìn)行源碼管理,當(dāng)你需要從其源碼編譯出安裝包時(shí),就需要使用到 Maven。

2.4 框架學(xué)習(xí)

1. 框架分類

上面我們介紹了很多大數(shù)據(jù)框架,這里進(jìn)行一下分類總結(jié):

日志收集框架:Flume 、Logstash、Kibana

分布式文件存儲(chǔ)系統(tǒng):Hadoop HDFS

數(shù)據(jù)庫系統(tǒng):Mongodb、HBase

分布式計(jì)算框架

  • 批處理框架:Hadoop MapReduce

  • 流處理框架:Storm

  • 混合處理框架:Spark、Flink

查詢分析框架:Hive 、Spark SQL 、Flink SQL、 Pig、Phoenix

集群資源管理器:Hadoop YARN

分布式協(xié)調(diào)服務(wù):Zookeeper

數(shù)據(jù)遷移工具:Sqoop

任務(wù)調(diào)度框架:Azkaban、Oozie

集群部署和監(jiān)控:Ambari、Cloudera Manager

上面列出的都是比較主流的大數(shù)據(jù)框架,社區(qū)都很活躍,學(xué)習(xí)資源也比較豐富。建議從 Hadoop 開始入門學(xué)習(xí),因?yàn)樗钦麄€(gè)大數(shù)據(jù)生態(tài)圈的基石,其它框架都直接或者間接依賴于 Hadoop 。接著就可以學(xué)習(xí)計(jì)算框架,Spark 和 Flink 都是比較主流的混合處理框架,Spark 出現(xiàn)得較早,所以其應(yīng)用也比較廣泛。Flink 是當(dāng)下最火熱的新一代的混合處理框架,其憑借眾多優(yōu)異的特性得到了眾多公司的青睞。兩者可以按照你個(gè)人喜好或者實(shí)際工作需要進(jìn)行學(xué)習(xí)。



圖片引用自?:edureka.co/blog/hadoop-

至于其它框架,在學(xué)習(xí)上并沒有特定的先后順序,如果你的學(xué)習(xí)時(shí)間有限,建議初次學(xué)習(xí)時(shí)候,同一類型的框架掌握一種即可,比如日志收集框架就有很多種,初次學(xué)習(xí)時(shí)候只需要掌握一種,能夠完成日志收集的任務(wù)即可,之后工作上有需要可以再進(jìn)行針對(duì)性地學(xué)習(xí)。

2. 學(xué)習(xí)資料

大數(shù)據(jù)最權(quán)威和最全面的學(xué)習(xí)資料就是官方文檔。熱門的大數(shù)據(jù)框架社區(qū)都比較活躍、版本更新迭代也比較快,所以其出版物都明顯滯后于其實(shí)際版本,基于這個(gè)原因采用書本學(xué)習(xí)不是一個(gè)最好的方案。比較慶幸的是,大數(shù)據(jù)框架的官方文檔都寫的比較好,內(nèi)容完善,重點(diǎn)突出,同時(shí)都采用了大量配圖進(jìn)行輔助講解。當(dāng)然也有一些優(yōu)秀的書籍歷經(jīng)時(shí)間的檢驗(yàn),至今依然很經(jīng)典,這里列出部分個(gè)人閱讀過的經(jīng)典書籍:

  • 《hadoop 權(quán)威指南 (第四版)》 2017 年

  • 《Kafka 權(quán)威指南》 2017 年

  • 《從 Paxos 到 Zookeeper 分布式一致性原理與實(shí)踐》 2015 年

  • 《Spark 技術(shù)內(nèi)幕 深入解析 Spark 內(nèi)核架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理》 2015 年

  • 《Spark.The.Definitive.Guide》 2018 年

  • 《HBase 權(quán)威指南》 2012 年

  • 《Hive 編程指南》 2013 年

3. 視頻學(xué)習(xí)資料

上面我推薦的都是書籍學(xué)習(xí)資料,很少推薦視頻學(xué)習(xí)資料,這里說明一下原因:因?yàn)闀畾v經(jīng)時(shí)間的考驗(yàn),能夠再版的或者豆瓣等平臺(tái)評(píng)價(jià)高的證明都是被大眾所認(rèn)可的,從概率的角度上來說,其必然更加優(yōu)秀,不容易浪費(fèi)大家的學(xué)習(xí)時(shí)間和精力,所以我個(gè)人更傾向于官方文檔或者書本的學(xué)習(xí)方式,而不是視頻。因?yàn)橐曨l學(xué)習(xí)資料,缺少一個(gè)公共的評(píng)價(jià)平臺(tái)和完善的評(píng)價(jià)機(jī)制,所以其質(zhì)量良莠不齊。但是視頻任然有其不可替代的好處,學(xué)習(xí)起來更直觀、印象也更深刻,所以對(duì)于習(xí)慣視頻學(xué)習(xí)的小伙伴,這里我各推薦一個(gè)免費(fèi)的視頻學(xué)習(xí)資源,大家按需選擇:

  • 免費(fèi)學(xué)習(xí)資源:尚學(xué)堂大數(shù)據(jù)學(xué)習(xí)路線 —— 在線觀看鏈接

開發(fā)工具

這里推薦一些大數(shù)據(jù)常用的開發(fā)工具:

Java IDE:IDEA 和 Eclipse 都可以。從個(gè)人使用習(xí)慣而言,更傾向于 IDEA ;

VirtualBox:在學(xué)習(xí)過程中,你可能經(jīng)常要在虛擬機(jī)上搭建服務(wù)和集群。VirtualBox 是一款開源、免費(fèi)的虛擬機(jī)管理軟件,雖然是輕量級(jí)軟件,但功能很豐富,基本能夠滿足日常的使用需求;

MobaXterm:大數(shù)據(jù)的框架通常都部署在服務(wù)器上,這里推薦使用 MobaXterm 進(jìn)行連接。同樣是免費(fèi)開源的,支持多種連接協(xié)議,支持拖拽上傳文件,支持使用插件擴(kuò)展;

Translate Man:一款瀏覽器上免費(fèi)的翻譯插件 (谷歌和火狐均支持)。它采用谷歌的翻譯接口,準(zhǔn)確性非常高,支持劃詞翻譯,可以輔助進(jìn)行官方文檔的閱讀。

結(jié)語

以上就是個(gè)人關(guān)于大數(shù)據(jù)的學(xué)習(xí)心得和路線推薦。本片文章對(duì)大數(shù)據(jù)技術(shù)棧做了比較狹義的限定,隨著學(xué)習(xí)的深入,大家也可以把 Python 語言、推薦系統(tǒng)、機(jī)器學(xué)習(xí)等逐步加入到自己的大數(shù)據(jù)技術(shù)棧中。


大數(shù)據(jù)處理流程是怎樣的?大數(shù)據(jù)學(xué)習(xí)路線是什么?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
南京市| 简阳市| 繁昌县| 乐安县| 沈丘县| 惠东县| 宽城| 百色市| 阿巴嘎旗| 嵊泗县| 图们市| 通榆县| 丽水市| 普陀区| 蓝田县| 柳林县| 石城县| 中超| 玉屏| 正蓝旗| 佛坪县| 清镇市| 景德镇市| 宜君县| 盐亭县| 射洪县| 黄梅县| 龙里县| 遂平县| 平阳县| 寿宁县| 固阳县| 阜城县| 内乡县| 卓尼县| 巴中市| 桂林市| 深水埗区| 肇源县| 曲阳县| 靖远县|