首頁>Club>
6
回覆列表
  • 1 # 加米穀大資料

    先上一張大資料技術學習的必備技能圖:

    入門學習需要掌握的基本技能:

    1、Java

    2、Linux命令

    3、HDFS

    4、MapReduce

    5、 Hadoop

    6、Hive

    7、ZooKeeper

    8、HBase

    9、Redis

    10、Flume

    11、SSM

    12、Kafka

    13、Scala

    14、Spark

    15、MongoDB

    16、Python與資料分析等等。

    第一階段:Java設計與程式設計思想

    第二階段: Web前端開發

    第三階段: JavaEE進階

    第四階段: 大資料基礎

    第五階段: HDFS分散式檔案系統

    第六階段:MapReduce分散式計算模型

    第七階段: Yarn分散式資源管理器

    第八階段: Zookeeper分散式協調服務

    第九階段: Hbase分散式資料庫

    第十階段: Hive分散式資料倉庫

    第十一階段: FlumeNG分散式資料採集系統

    第十二階段: Sqoop大資料遷移系統

    第十三階段: Scala大資料黃金語言

    第十四階段: kafka分散式匯流排系統

    第十五階段: SparkCore大資料計算基石

    第十六階段: SparkSQL資料探勘利器

    第十七階段: SparkStreaming流失計算平臺

    第十八階段: SparkMllib機器學習平臺

    第十九階段:SparkGraphx圖計算平臺

    第二十階段: 大資料專案實戰

  • 2 # 釘子訪談

    資料收集、資料處理、資料建模、資料分析、資料運算、資料應用、資料對沖、以及支援資料執行的各個硬體裝置)

    釘子云資料;

  • 3 # 千鋒頭號粉絲

    想學習大資料技術,是不是首先要知道大資料技術有哪些呢?也好知道自己未來應該往哪個方向發展,應該重點學習哪些知識?

    抽象而言,各種大資料技術無外乎分散式儲存 + 平行計算。具體體現為各種分散式檔案系統和建立在其上的並行運算框架。這些軟體程式都部署在多個相互連通、統一管理的物理或虛擬運算節點之上,形成叢集(cluster)。因此不妨說,雲計算是大資料的基礎。

    下面介紹幾種當前比較流行的大資料技術:

    1.Hadoop

    Hadoop無疑是當前很知名的大資料技術了。

    2003年到2004年間,Google釋出了關於GFS、MapReduce和BigTable三篇技術論文(這幾篇論文成為了後來雲計算、大資料領域發展的重要基石)。當時一位因公司倒閉賦閒在家的程式設計師Doug Cutting根據前兩篇論文,開發出了一個簡化的山寨版GFS – HDFS,以及基於其的MapReduce計算框架,這就是Hadoop當初的版本。後來Cutting被Yahoo僱傭,得以依賴Yahoo的資源改進Hadoop,並將其貢獻給了Apache開源社群。

    簡單描述Hadoop原理:資料分散式儲存,運算程式被髮派到各個資料節點進行分別運算(Map),再將各個節點的運算結果進行合併歸一(Reduce),生成結果。相對於動輒TB級別的資料,計算程式一般在KB – MB的量級,這種移動計算不移動資料的設計節約了大量網路頻寬和時間,並使得運算過程可以充分並行化。

    在其誕生後的近10年裡,Hadoop憑藉其簡單、易用、高效、免費、社群支援豐富等特徵成為眾多企業雲計算、大資料實施的首選。

    2.Storm

    Hadoop雖好,卻有其“死穴”.其一:它的運算模式是批處理。這對於許多有實時性要求的業務就無法做到很好的支援。因此,Twitter推出了他們自己的基於流的運算框架——Storm。不同於Hadoop一次性處理所有資料並得出統一結果的作業(job),Storm對源源匯入的資料流進行持續不斷的處理,隨時得出增量結果。

    3.Spark

    Hadoop的另一個致命弱點是:它的所有中間結果都需要進行硬碟儲存,I/O消耗巨大,這就使得它很不適合多次迭代的運算。而大多數機器學習演算法,恰恰要求大量迭代運算。

    2010年開始,UC Berkeley AMP Lab開始研發分散式運算的中間過程全部記憶體儲存的Spark框架,由此在迭代計算上大大提高了效率。也因此成為了Hadoop的強有力競爭者。

    4.NoSQL 資料庫

    NoSQL資料庫可以泛指非關係型資料庫,不過一般用來指稱那些建立在分散式檔案系統(例如HDFS)之上,基於key-value對的資料管理系統。

    相對於傳統的關係型資料庫,NoSQL資料庫中儲存的資料無需主鍵和嚴格定義的schema。於是,大量半結構化、非結構化資料可以在未經清洗的情況下直接進行儲存。這一點滿足了處理大量、高速、多樣的大資料的需求。當前比較流行的NoSQL資料庫有MongoDB,Redis,Cassandra,HBase等。

    NoSQL並不是沒有SQL,而是不僅僅有(not only)SQL的意思。為了相容之前許多執行在關係型資料庫上的業務邏輯,有很多在NoSQL資料庫上執行SQL的工具湧現出來,典型的例如Hive和Pig,它們將使用者的SQL語句轉化成MapReduce作業,在Hadoop上執行。

    大資料產業已進入發展的“快車道”,急需大量優秀的大資料人才作為後盾。能夠在大資料行業崛起的初期進入到這個行業當中來,才有機會成為時代的弄潮兒。

  • 4 # 美人師兄Fairy

    想學大資料的話就是自學或者培訓了,但是自學的話就是自己買書買資料,自己看,但是往往自己看的話容易找不到重點,沒有目標,這樣比較浪費時間

    培訓的話尤其對於小白來說效果會比較好,事半功倍,比自學更有效率,也更專業。要真正學好IT技術,應該的是找一家專業IT教育的院校,處在專業的育人環境,有專業的課程體系與老師,這才離成功最近的捷徑。建議可以跟著百戰程式設計師的線上課程學習,壓力不會很大,還可以學好技術,授課老師都是業內大牛,一個好的老師可以幫你開啟思路。百戰程式設計師是我自己在跟著學習的,很多的專案和實操也能很好的鍛鍊的自己實力可以更好的找到工作。平時的工作生活都不耽誤,利用休息時間在線上學習不也挺好的嗎。課程質量還是挺高的, 有很多的實操專案,還有技術老師答疑、批改作業,還有班主任每天監督學習,可以先去百戰程式設計師官網可以試聽課程 你可以先自己感受一下

    如果你有足夠的時間,自制力又不行的,可以考慮參加線下學習,線下學習學習氛圍也相對好一點,可以看看尚學堂官網或者校區瞭解一下相關情況,現在這網際網路時代這麼發達 ,學習也不用侷限於地域了

  • 5 # 驀然與回首

    前言

    要從事計算機行業的工作,不管是什麼工作,開發、測試、還是演算法等,都是要有一門自己比較熟練的程式語言,程式語言可以是C語言、Java、C++等,只要是和你後續工作所相關的就可以(後續用到其他語言的話,你有一門語言基礎了,學起來就快了)。一般初學者入門語言大多都會選擇Java、C語言、C++或者Python,而且現在網上有很多好的影片,可以供初學者學習使用。關於學習影片或者資料的選擇,知乎或者百度等都有很多講解了,也可以跟師兄師姐諮詢,這樣可以少走很多彎路,當然,有人說,走一些彎路總是有好處的,但是我這裡說的彎路不是說不犯錯誤,不調bug,而是指學習資料以及一些知識點的偏重點,這樣可以儘量節約一部分時間,剛開始時,總會有點迷,而且當你真正投入進去學習時,會發現時間總是不夠用。

    下面就說一下我自己從Java開發到大資料開發的曲折學習之路(狗頭保命.jpg)。因為我現在是做大資料相關的工作了,所以Java後端涉及到的一些SSM框架等知識點我就不介紹了,畢竟後續一段時間也沒有做了。自己看過的大資料學習相關的影片+資料大概是200G-300G吧,從Linux->Hadoop->。。。->Spark->專案,還有就是一些面試文件,面經等。一些影片看了兩遍或者更多,跟著學,跟著敲程式碼,做專案,準備面試。涉及到需要學習的東西包括:JavaSE,資料結構與演算法(計算機行業必備),MySQL,Redis,ES(資料庫這些可以看專案,也可以自己熟練一兩個),Linux,Shell(這個可以後期補),Hadoop,Zookeeper,Hive,Flume,Kafka,HBase,Scala(Spark是Scala寫的,會Scala做相關的專案會更容易入手),Spark,Flink(這個是找工作時有面試官問過幾次liao不liao解,所以找完工作才開始接觸學習),相關專案。

    程式語言階段學習

      如果是零基礎的話,建議還是從影片開始入門比較好,畢竟一上來就看教材,這樣有些程式碼的來龍去脈可能不是很瞭解。如果是有一些程式語言基礎的話,從影片開始也會更簡單,一些for、while迴圈你都知道了,學起來也會快很多。  JavaSE我是選擇的某馬劉意的為主,因為剛剛開始學Java看過一本從《Java從入門到精通》,沒什麼感覺,後續又在看了某課網的Java初級影片,還是沒感覺出來啥(當時就有點懷疑自己了。。。),可能有點沒進入狀態。  還好後續找了某馬劉意老師的JavaSE影片(我是看的2015年版本,那時候19版還沒出),覺得他講的真的是很好很詳細,每個知識點都會有例子,也都會帶你敲程式碼,做測試,可能前面有C語言基礎,然後也看過Java的一些語法,所以學起來還是比較順利,後面的IO流、多執行緒等知識點時,也有看書看部落格,或者看看其他老師的課程,講解的可能自己比較容易接受就可以,反正都是多嘗試(下面會給出影片連結),儘量懂一些,後續可以回頭來複習。JavaSE相關的影片,先看一遍,後續有時間建議再看一遍,而且這些經典的影片,看兩遍真的是享受。  如果有一定基礎了的,JavaSE前面七八天的影片可以加速看,但是不懂的一定要停下開仔細想想,零基礎的還是儘量不要加速吧,慢慢來穩些。後面的影片建議還是跟著影片來,儘量不要加速,程式碼儘量都敲一敲,第一遍基本上一個月到一個半月可以結束。  JavaSE可以說是很基礎也很重要的東西,主要重點包括面向物件、集合(List、Map等),IO流,String/StringBuilder/StringBuffer、反射、多執行緒,這些最好是都要熟悉一些,面試也是重點。  JavaSE之後,如果你是要走前端或後端開發路線的話,可以跟著一些網上的影片繼續學習,這裡我就不多做介紹了。

    ===========分割線,Scala可以後續Spark階段再接觸學習=============

      Scala的學習,Scala是一門多正規化 (multi-paradigm) 的程式語言,Scala支援面向物件和函數語言程式設計,最主要的是後續Spark的內容需要用到Scala,所以前面學習了JavaSE,到Spark學習之前,再把Scala學習一波,美滋滋,而且Scala可以和Java進行無縫對接,混合使用,更是爽歪歪。後續Spark學習時基本都是用的Scala,也可能是和Java結合使用,所以Spark之前建議還是先學一波Scala,而且Scala用起來真是很舒服(wordcount一行程式碼搞定),適合迭代式計算,對資料處理有很大幫助,不過Scala看程式碼很容易看懂,但是學起來還是挺難的,比如樣例類(case class)用起來真是nice,但是隱式轉換學起來就相對比較難。學習Scala的建議:1. 學習scala 特有的語法,2. 搞清楚scala和java區別,3. 瞭解如何規範的使用scala。Scala對學習Spark是很重要的(後面Flink也是要用),雖然現在很多公司還是用Java開發比較多,而且Spark是Scala寫的,如果要讀原始碼,會Scala還是很重要的(至少要看得懂程式碼)。  Scala主要重點包括:隱式轉換和隱式引數、模式匹配、函數語言程式設計。這裡我看的是某矽谷韓老師的Scala影片,韓老師講的真的很不錯,五星推薦,哈哈。  也許有人會覺得Python也是需要的,但是學習階段,可能用Java還是比較多,面試也基本都是問Java相關的內容,所以Python後續工作會用到的話,再看看Python的內容吧。

    大資料框架階段學習

      大資料這方面的知識點自己可以說真的是從零開始的,剛剛開始學那會Linux基本都沒用過,心裡那個虛啊,而且時間也緊迫,想起來都是一把辛酸淚。  剛剛開始學的時候,看了廈門大學林子雨的《 大資料技術原理與應用》課程,可能這個課程是面對上課的,所以看了一些,感覺對自己幫助不是很大(並不是說課程不好,可能不太適合自己,如果是要了解理論知識,很透徹,但是俺時間緊迫啊),所以就繼續在網上找影片,然後發現某矽谷的培訓影片很多人去參加,而且知識點也很齊全,大資料相關元件都有講課,還有一些專案比較好,所以就找了它相關的影片,當時看的是2018年的,所以影片不算舊。  來一張推薦系統架構的圖,先看看

      一般來說,Flume+Kafka對資料進行採集聚合傳輸,一方面Spark對實時資料進行處理,傳輸給相應的資料處理模組(比如實時資料處理的演算法模組,Spark也有提供常見的機器學習演算法的程式庫),另一方面採集的資料也可以放入資料庫(HBase、MongoDB等)中,後續MapReduce對離線資料進行離線處理,資料處理完畢用於後續的使用,資料採集處理的流程大概就是這樣。如果是推薦系統,實時推薦會給使用者產生實時的推薦結果,讓使用者進行查閱選擇,比如你在介面瀏覽了或者看了新的物品,然後重新整理下介面,可能給你展示的東西就有一些變成跟你剛剛瀏覽的相關了。離線推薦的話主要是對離線資料進行處理,為物品或種類做出相似的推薦,如果後續使用者搜尋相應的物品時,給使用者展示相應的產品。

      大資料學習路線:Linux -> Hadoop -> Zookeeper -> Hive -> Flume -> Kafka -> HBase -> Scala -> Spark -> 專案 - > Flink( 如果需要學習Storm,在Spark前面學習)

    一、Linux(基本操作)

      一般我們使用的都是虛擬機器來進行操作,所以要安裝VM( Virtual Machine),我使用的是CentOS,所以VM和CentOS都要跟著安裝好,跟著影片操作,一定要動手實踐,將一些Linux基本命令熟練掌握,一些VIM編輯器的命令也要會用,做相應的一些配置,使用SecureCRT來做遠端登入操作(也可以使用其他的,自己順手就行)。再強調一遍,基本操作命令儘量熟練一點,如果一下記不住,列印一些常用的,自己看看,多用多實踐,慢慢就會用了。還有一些軟體包的下載安裝解除安裝等,跟著操作一遍,熟悉下,後續都會使用,Shell程式設計可以後續補。

    二、Hadoop(重點中的重點)

      Hadoop是一個分散式系統基礎框架,用於主要解決海量資料的儲存和海量資料的分析計算問題,也可以說Hadoop是後續整個叢集環境的基礎,很多框架的使用都是會依賴於Hadoop。主要是由HDFS、MapReduce、YARN組成。這個部分安裝Hadoop,Hadoop的三個主要組成部分是重點,對他們的概念要理解出來,知道他們是做什麼的,搭建叢集環境,偽分散式模式和完全分散式模式的搭建,重要的是完全分散式的搭建,這些部分一定要自己動手實踐,自己搭建叢集,仔細仔細再仔細,Hadoop的NameNode,DataNode,YARN的啟動關閉命令一定要知道,以及他們的啟動關閉順序要記住,不要搞混。後續影片會有一些案例操作,跟著寫程式碼,做測試,把基本環境都配置好,後續這個叢集(完全分散式需要三臺虛擬機器)要一直使用。

    三、Zookeeper

      Zookeeper是一個開源的分散式的,為分散式應用提供協調服務的Apache專案。分散式安裝ZK,對ZK有一定的瞭解就可以了,瞭解它的應用場景,以及內部原理,跟著做一些操作,基本上有一些瞭解即可。

    四、Hive(重點)

      Hive是基於Hadoop的資料倉庫工具,可以將結構化的資料檔案對映為一張表,並提供類SQL查詢功能。Hive的安裝,它的資料型別,以及它的資料定義、資料操作有較好的瞭解,怎麼操作表(建立表、刪除表,建立什麼型別的表,他們有什麼不同),怎麼操作資料(載入資料,下載資料,對不同的表進行資料操作),對資料的查詢一定要進行實踐操作,以及對壓縮方式和儲存格式要有一些瞭解,用到時不懂也可以去查,最好是能理解清楚。這部分有什麼面試可能會問,所以影片後續的面試講解可以看看,理解清楚。

    五、Flume

      Flume是一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統。對於Flume,對它的組成架構,以及對Flume Agent的內部原理要理解清楚,Source、Channel、Sink一定要知道它們的各種型別以及作用,有哪些拓撲結構是常見常用的,例如一對一,單Source、多Channel、多Sink等,它們有什麼作用,要理解清楚。還有一個重點,就是對Flume的配置檔案一定要了解清楚,不懂的可以上官網檢視案例,對於不同的情況,它的配置檔案要做相應的修改,才能對資料進行採集處理,影片中的實踐案例一定要跟著做。

    六、Kafka(重點)

      Kafka是一個分散式訊息佇列,用來快取資料的。比如說實時計算中可以透過Flume+Kafka對資料進行採集處理之後,Spark Streaming再使用Kafka相應的Topic中的資料,用於後續的計算使用。對於Kafka,要理解Kafka的架構,什麼是Kafka,為什麼需要Kafka,應用場景。基本的命令列操作要掌握,比如怎麼建立刪除Topic,怎麼透過生產者生成資料,消費者怎麼消費資料等基本操作,官網也是有一些案例可以查閱的。

    七、HBase(重點)

      HBase是一個分散式的、基於列儲存的開源資料庫。HBase適合儲存PB級別的海量資料,也可以說HBase是很適合大資料的儲存的,它是基於列式儲存資料的,列族下面可以有非常多的列,列族在建立表的時候就必須指定。所以對HBase的資料結構要有一定的理解,特別是RowKey的設計部分(因為面試被問到過,咳咳,所以點一下),對於它的原理要了解,一些基本操作也要都會,比如建立表,對錶的操作,基本的API使用等。

    八、Spark(重點中的重點)

      Spark是快速、易用、通用的大資料分析引擎。一說到Spark,就有一種哪哪都是重點感覺,哈哈。  Spark的組成可以看下圖

      Spark是基於記憶體計算的,對於資料的處理速度要比MapReduce快很多很多,而且資料探勘這些都是要對資料做迭代式計算,MapReduce對資料的處理方式也不適合,而Spark是可以進行迭代式計算,很適合資料探勘等場景。Spark的Spark SQL能夠對結構化資料進行處理,Spark SQL的DataFrame或DataSet可以作為分散式SQL查詢引擎的作用,可以直接使用Hive上的表,對資料進行處理。Spark Streaming主要用於對應用場景中的實時流資料進行處理,支援多種資料來源,DStream是Spark Streaming的基礎抽象,由一系列RDD組成,每個RDD中存放著一定時間段的資料,再對資料進行處理,而且是基於記憶體計算,速度快,所以很適合實時資料的處理。Spark MLlib提供常見的機器學習(ML)功能的程式庫。包括分類、迴歸、聚類、協同過濾等,還提供了模型評估、資料 匯入等額外的支援功能。對Spark的核心元件、部署模式(主要是Standalone模式和YARN模式)、通訊架構、任務排程要有一定了解(面試問到了可以說一波),Spark Shuffle要好好理解,還有記憶體管理要知道,對Spark的核心原理一定要好好理解,不僅面試可能要用,以後工作也是有幫助的。

    九、Flink(重點中的重點)

      Flink是一個框架和分散式處理引擎,用於對無界(有開始無結束)和有界(有開始有結束)資料流進行有狀態計算。現在主要是阿里系公司使用的比較多,很多公司使用的還是Spark居多,而且Flink基本上都是和Spark很多功能大體上一樣的,但是以後Flink和Spark孰強孰弱還有待時間的考驗,不過Flink近幾年越來越火了這是事實,所以如果有時間有精力的話,可以學一學Flink相關的內容也是很不錯的。Spark和Flink主要都是在資料處理方面應用,在資料處理方面的話,離線資料處理:Flink暫時比不上Spark,Spark SQL優點在於可以和Hive進行無縫連線,Spark SQL可以直接使用Hive中的表;Flink暫時做不到這一步,因為官方不支援這一操作,Flink只能將資料讀取成自己的表,不能直接使用Hive中的表。對於實時資料的處理:Flink和Spark可以說是平分秋色吧,而且Flink是以事件為驅動對資料進行處理,而Spark是以時間為驅動對資料進行處理,在一些應用場景中,也許Flink的效果比Spark的效果還要好些,因為Flink對資料更加的敏感。比如一秒鐘如果觸發了成千上萬個事件,那麼時間驅動型就很難對資料做細緻的計算,而事件驅動型可以以事件為單位,一個個事件進行處理,相比而言延遲更低,處理效果更好。現在使用Flink的公司越來越多,有時間學習下,也算是有個準備。

    專案階段

      其實某矽谷的影片裡面有很多大資料相關的專案,而且都是文件配程式碼的,B站上也有影片,學習期間可以跟著影片做兩到三個專案,自己理清思路,把專案理解透徹,還是可以學到很多東西的。  根據自己情況,選擇兩到三個專案重點跟著做,理解透徹一點

    大資料專案實戰

      某矽谷的影片裡面有很多大資料相關的專案,而且都是文件配程式碼的,學習期間可以跟著影片做兩到三個專案,自己理清思路,把專案理解透徹,還是可以學到很多東西的。根據自己情況,選擇兩到三個專案重點跟著做,理解透徹一點。相關專案文件資料我已經放到網盤,GongZhongHao回覆相應關鍵字獲取領取方式。   相關專案、涉及技術框架及其B站連結(B站連結主要是為了有些小夥伴網盤速度限制,這樣就下載文件資料即可)

    書籍

      書籍部分直接雲盤連結儲存即可,這裡我放兩張Java開發和大資料開發我自己的書單(很多,路漫漫,吾將上下而求索~)  Java後端書架:

    大資料書架:

      大概就這些,看完就需要很久了,大部分我也是需要的時候看相應的部分,所以有時間可以好好看下,不然就需要哪一部分看哪一部分,有助於學習即可。

    最後

      大資料開發也是需要程式設計基礎的,並不是學會使用這些框架怎麼樣就可以了,所以對於程式語言,資料結構與演算法,計算機網路這些基礎也是要的,這些基礎知識也有助於自己以後的發展,如果是應屆生校招的話,面試基本上都是JavaSE和資料結構與演算法等的知識點,還有大資料元件相關的知識點,以及對專案的理解,這些都是要自己面試前準備好的,多看面經,多找面試題看,面幾次,心裡有譜了,後續面試就好了。  不管是從事什麼樣的計算機相關的崗位,程式設計都是很重要的,資料結構與演算法特別重要,還有就是leetcode等程式設計網站刷題,提升自己的程式設計思維,後續筆試面試都要要的。  要將一行行程式碼看做一疊疊rmb,但是一行行程式碼能不能轉換成一疊疊rmb,自己就一定要:堅持,多敲程式碼;多敲程式碼,堅持;堅持。 

  • 中秋節和大豐收的關聯?
  • 求中醫養生保健的順口溜?