1. 程式人生 > >大資料學習計劃(不斷改善)

大資料學習計劃(不斷改善)

我為什麼要學習大資料:因為我不喜歡現在國企的工作氛圍,不看好這個行業,另外我通過多方渠道瞭解到,其中包括李笑來、凱文凱利、和各種新聞及文章,現在我們正處於大資料時代,我是一個不安於現狀、喜歡探索順應時代發展趨勢學習新東西的人,希望通過努力來改變自己生活狀態渴望成功的人,我喜歡與朝氣蓬勃奮發向上的人一起活在未來。


前言:

  • 一、背景介紹

  • 二、大資料介紹

正文:

  • 一、大資料相關的工作介紹

  • 二、大資料工程師的技能要求

  • 三、大資料學習規劃

  • 四、持續學習資源推薦(書籍,部落格,網站)

  • 五、專案案例分析(批處理+實時處理)


前言

一、背景介紹

本人目前是一名大資料工程師,專案資料50T,日均資料增長20G左右,個人是從Java後端開發,經過3個月的業餘自學成功轉型大資料工程師。


本人對於大資料學習建立了一個小小的學習圈子,為各位提供了一個平臺,大家一起來討論學習大資料。歡迎各位到來大資料學習群:868847735 一起討論視訊分享學習。大資料是未來的發展方向,正在挑戰我們的分析能力及對世界的認知方式,因此,我們與時俱進,迎接變化,並不斷的成長,掌握大資料核心技術,才是掌握真正的價值所在。

二、大資料介紹

大資料本質也是資料,但是又有了新的特徵,包括資料來源廣資料格式多樣化(結構化資料、非結構化資料、Excel檔案、文字檔案等)、資料量大(最少也是TB級別的、甚至可能是PB級別)、資料增長速度快等。

針對以上主要的4個特徵我們需要考慮以下問題:

  1. 資料來源廣,該如何採集彙總?,對應出現了Sqoop,Cammel,Datax等工具。

  2. 資料採集之後,該如何儲存?,對應出現了GFS,HDFS,TFS等分散式檔案儲存系統。

  3. 由於資料增長速度快,資料儲存就必須可以水平擴充套件。

  4. 資料儲存之後,該如何通過運算快速轉化成一致的格式,該如何快速運算出自己想要的結果?

對應的MapReduce這樣的分散式運算框架解決了這個問題;但是寫MapReduce需要Java程式碼量很大,所以出現了Hive,Pig等將SQL轉化成MapReduce的解析引擎;

普通的MapReduce處理資料只能一批一批地處理,時間延遲太長,為了實現每輸入一條資料就能得到結果,於是出現了Storm/JStorm這樣的低時延的流式計算框架;

但是如果同時需要批處理

流處理,按照如上就得搭兩個叢集,Hadoop叢集(包括HDFS+MapReduce+Yarn)和Storm叢集,不易於管理,所以出現了Spark這樣的一站式的計算框架,既可以進行批處理,又可以進行流處理(實質上是微批處理)。

  1. 而後Lambda架構,Kappa架構的出現,又提供了一種業務處理的通用架構。

  2. 為了提高工作效率,加快運速度,出現了一些輔助工具:

  • Ozzie,azkaban:定時任務排程的工具。

  • Hue,Zepplin:圖形化任務執行管理,結果檢視工具。

  • Scala語言:編寫Spark程式的最佳語言,當然也可以選擇用Python。

  • Python語言:編寫一些指令碼時會用到。

  • Allluxio,Kylin等:通過對儲存的資料進行預處理,加快運算速度的工具。

以上大致就把整個大資料生態裡面用到的工具所解決的問題列舉了一遍,知道了他們為什麼而出現或者說出現是為了解決什麼問題,進行學習的時候就有的放矢了。

正文

一、大資料相關工作介紹

大資料方向的工作目前主要分為三個主要方向:

  1. 大資料工程師

  2. 資料分析師

  3. 大資料科學家

  4. 其他(資料探勘等)

二、大資料工程師的技能要求

附上大資料工程師技能圖:



必須掌握的技能11條

  1. Java高階(虛擬機器、併發)

  2. Linux 基本操作

  3. Hadoop(HDFS+MapReduce+Yarn )

  4. HBase(JavaAPI操作+Phoenix )

  5. Hive(Hql基本操作和原理理解)

  6. Kafka

  7. Storm/JStorm

  8. Scala

  9. Python

  10. Spark (Core+sparksql+Spark streaming )

  11. 輔助小工具(Sqoop/Flume/Oozie/Hue等)

高階技能6條

  1. 機器學習演算法以及mahout庫加MLlib

  2. R語言

  3. Lambda 架構

  4. Kappa架構

  5. Kylin

  6. Alluxio

三、學習路徑

假設每天可以抽出3個小時的有效學習時間,加上週末每天保證10個小時的有效學習時間;

3個月會有(213+4210)3=423小時的學習時間。

第一階段(基礎階段)

1)Linux學習

  1. Linux作業系統介紹與安裝。

  2. Linux常用命令。

  3. Linux常用軟體安裝。

  4. Linux網路。

  5. 防火牆。

  6. Shell程式設計等。

2)Java 高階學習(《深入理解Java虛擬機器》、《Java高併發實戰》)、

  1. 掌握多執行緒。

  2. 掌握併發包下的佇列。

  3. 瞭解JMS。

  4. 掌握JVM技術。

  5. 掌握反射和動態代理。

3)Zookeeper學習

  1. Zookeeper分散式協調服務介紹。

  2. Zookeeper叢集的安裝部署。

  3. Zookeeper資料結構、命令。

  4. Zookeeper的原理以及選舉機制。


第二階段(攻堅階段)

4)Hadoop (《Hadoop 權威指南》)、

  1. HDFS

  • HDFS的概念和特性。

  • HDFS的shell操作。

  • HDFS的工作機制。

  • HDFS的Java應用開發。

  1. MapReduce

  • 執行WordCount示例程式。

  • 瞭解MapReduce內部的執行機制。

    • MapReduce程式執行流程解析。

    • MapTask併發數的決定機制。

    • MapReduce中的combiner元件應用。

    • MapReduce中的序列化框架及應用。

    • MapReduce中的排序。

    • MapReduce中的自定義分割槽實現。

    • MapReduce的shuffle機制。

    • MapReduce利用資料壓縮進行優化。

    • MapReduce程式與YARN之間的關係。

    • MapReduce引數優化。

5)Hive(《Hive開發指南》)、

  1. Hive 基本概念

  • Hive 應用場景。

  • Hive 與hadoop的關係。

  • Hive 與傳統資料庫對比。

  • Hive 的資料儲存機制。


  1. Hive 基本操作

  • Hive 中的DDL操作。

  • 在Hive 中如何實現高效的JOIN查詢。

  • Hive 的內建函式應用。

  • Hive shell的高階使用方式。

  • Hive 常用引數配置。

  • Hive 自定義函式和Transform的使用技巧。

  • Hive UDF/UDAF開發例項。

6)HBase(《HBase權威指南》)、

  1. hbase簡介。

  2. habse安裝。

  3. hbase資料模型。

  4. hbase命令。

  5. hbase開發。

  6. hbase原理。

7)Scala(《快學Scala》)、

  1. Scala概述。

  2. Scala編譯器安裝。

  3. Scala基礎。

  4. 陣列、對映、元組、集合。

  5. 類、物件、繼承、特質。

  6. 模式匹配和樣例類。

  7. 瞭解Scala Actor併發程式設計。

  8. 理解Akka。

  9. 理解Scala高階函式。

  10. 理解Scala隱式轉換。

8)Spark (《Spark 權威指南》)---60小時



  1. Spark core

  • Spark概述。

  • Spark叢集安裝。

  • 執行第一個Spark案例程式(求PI)。


  1. RDD


  • RDD概述。

  • 建立RDD。

  • RDD程式設計API(Transformation 和 Action Operations)。

  • RDD的依賴關係

  • RDD的快取

  • DAG(有向無環圖)

  1. Spark SQL and DataFrame/DataSet


    • Spark SQL概述。

    • DataFrames。

    • DataFrame常用操作。

    • 編寫Spark SQL查詢程式。


  1. Spark Streaming



  • park Streaming概述。

  • 理解DStream。

  • DStream相關操作(Transformations 和 Output Operations)。

  1. Structured Streaming

  2. 其他(MLlib and GraphX )

這個部分一般工作中如果不是資料探勘,機器學習一般用不到,可以等到需要用到的時候再深入學習。

自己用虛擬機器搭建一個叢集,把所有工具都裝上,自己開發一個小demo ---30小時

可以自己用VMware搭建4臺虛擬機器,然後安裝以上軟體,搭建一個小叢集(本人親測,I7,64位,16G記憶體,完全可以執行起來,以下附上我學習時用虛擬機器搭建叢集的操作文件)


叢集搭建文件1.0版本


本人對於大資料學習建立了一個小小的學習圈子,為各位提供了一個平臺,大家一起來討論學習大資料。歡迎各位到來大資料學習群:868847735 一起討論視訊分享學習。大資料是未來的發展方向,正在挑戰我們的分析能力及對世界的認知方式,因此,我們與時俱進,迎接變化,並不斷的成長,掌握大資料核心技術,才是掌握真正的價值所在。

1. 叢集規劃


2. 前期準備

2.0 系統安裝

2.1 主機名配置

    2.1.0 vi /etc/sysconfig/network
        NETWORKING=yes

    2.1.1 vi /etc/sysconfig/network
        NETWORKING=yes
        HOSTNAME=ys02

    2.1.2 vi /etc/sysconfig/network
        NETWORKING=yes

    2.1.3 vi /etc/sysconfig/network
        NETWORKING=yes
        HOSTNAME=ys04

2.2 host檔案修改
    2.2.0 vi /etc/hosts
        10.1.1.149 ys01
        10.1.1.148 ys02
        10.1.1.146 ys03
        10.1.1.145 ys04
2.3 關閉防火牆(centos 7預設使用的是firewall,centos 6 預設是iptables)

    2.3.0 systemctl stop firewalld.service (停止firewall)

    2.3.1 systemctl disable firewalld.service (禁止firewall開機啟動)

    2.3.2 firewall-cmd --state (檢視預設防火牆狀態(關閉後顯示notrunning,開啟後顯示running)

2.4 免密登入(ys01 ->ys02,03,04)
    ssh-keygen -t rsa
    ssh-copy-id ys02(隨後輸入密碼)
    ssh-copy-id ys03(隨後輸入密碼)
    ssh-copy-id ys04(隨後輸入密碼)
    ssh ys02(測試是否成功)
    ssh ys03(測試是否成功)
    ssh ys04(測試是否成功)

2.5 系統時區與時間同步
    tzselect(生成日期檔案)
    cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime(將日期檔案copy到本地時間中)

3. 軟體安裝

3.0 安裝目錄規劃(軟體為所有使用者公用)

    3.0.0所有軟體的安裝放到/usr/local/ys/soft目錄下(mkdir /usr/local/ys/soft)

    3.0.1所有軟體安裝到/usr/local/ys/app目錄下(mkdir /usr/local/ys/app)

 3.1 JDK(jdk1.7)安裝

    3.1.1 alt+p 後出現sftp視窗,cd /usr/local/ys/soft,使用sftp上傳tar包到虛機ys01的/usr/local/ys/soft目錄下

    3.1.2解壓jdk
      cd /usr/local/ys/soft
        #解壓
        tar -zxvf jdk-7u80-linux-x64.tar.gz -C /usr/local/ys/app

    3.1.3將java新增到環境變數中
    vim /etc/profile
    #在檔案最後新增
    export JAVA_HOME= /usr/local/ys/app/ jdk-7u80
    export PATH=$PATH:$JAVA_HOME/bin

    3.1.4 重新整理配置
    source /etc/profile

3.2 Zookeeper安裝

    3.2.0解壓
    tar -zxvf zookeeper-3.4.5.tar.gz -C /usr/local/ys/app(解壓)

    3.2.1 重新命名
    mv zookeeper-3.4.5 zookeeper(重新命名資料夾zookeeper-3.4.5為zookeeper)

    3.2.2修改環境變數
    vi /etc/profile(修改檔案)
    新增內容:
    export ZOOKEEPER_HOME=/usr/local/ys/app/zookeeper
    export PATH=$PATH:$ZOOKEEPER_HOME/bin

    3.2.3 重新編譯檔案:
    source /etc/profile
    注意:3臺zookeeper都需要修改

    3.2.4修改配置檔案
    cd zookeeper/conf
    cp zoo_sample.cfg zoo.cfg
    vi zoo.cfg
    新增內容:
    dataDir=/usr/local/ys/app/zookeeper/data
    dataLogDir=/usr/local/ys/app/zookeeper/log
    server.1=ys01:2888:3888 (主機名, 心跳埠、資料埠)
    server.2=ys02:2888:3888
    server.3=ys04:2888:3888

    3.2.5 建立資料夾
    cd /usr/local/ys/app/zookeeper/
    mkdir -m 755 data
    mkdir -m 755 log

    3.2.6 在data資料夾下新建myid檔案,myid的檔案內容為:
    cd data
    vi myid
    新增內容:
        1
    將叢集下發到其他機器上
    scp -r /usr/local/ys/app/zookeeper ys02:/usr/local/ys/app/
    scp -r /usr/local/ys/app/zookeeper ys04:/usr/local/ys/app/

    3.2.7修改其他機器的配置檔案
    到ys02上:修改myid為:2
    到ys02上:修改myid為:3

    3.2.8啟動(每臺機器)
    zkServer.sh start
    檢視叢集狀態
    jps(檢視程序)
    zkServer.sh status(檢視叢集狀態,主從資訊)

3.3 Hadoop(HDFS+Yarn)

    3.3.0 alt+p 後出現sftp視窗,使用sftp上傳tar包到虛機ys01的/usr/local/ys/soft目錄下

    3.3.1 解壓jdk
      cd /usr/local/ys/soft
        #解壓
        tar -zxvf cenos-7-hadoop-2.6.4.tar.gz -C /usr/local/ys/app

    3.3.2 修改配置檔案

core-site.xml



hdfs-site.xml











yarn-sifite.xml



svales

ys02
ys03
ys04

3.3.3叢集啟動(嚴格按照下面的步驟)
    3.3.3.1啟動zookeeper叢集(分別在ys01、ys02、ys04上啟動zk)
        cd /usr/local/ys/app/zookeeper-3.4.5/bin/
        ./zkServer.sh start
        #檢視狀態:一個leader,兩個follower
        ./zkServer.sh status

    3.3.3.2啟動journalnode(分別在在mini5、mini6、mini7上執行)
        cd /usr/local/ys/app/hadoop-2.6.4
        sbin/hadoop-daemon.sh start journalnode
        #執行jps命令檢驗,ys02、ys03、ys04上多了JournalNode程序

    3.3.3.3格式化HDFS
        #在ys01上執行命令:
        hdfs namenode -format
        #格式化後會在根據core-site.xml中的hadoop.tmp.dir配置生成個檔案,這裡我配置的是/usr/local/ys/app/hadoop-2.6.4/tmp,然後將/usr/local/ys/app/hadoop-2.6.4/tmp拷貝到ys02的/usr/local/ys/app/hadoop-2.6.4/下。
        scp -r tmp/ ys02:/usr/local/ys /app/hadoop-2.6.4/
        ##也可以這樣,建議hdfs namenode -bootstrapStandby

    3.3.3.4格式化ZKFC(在ys01上執行一次即可)
        hdfs zkfc -formatZK

    3.3.3.5啟動HDFS(在ys01上執行)
        sbin/start-dfs.sh

    3.3.3.6啟動YARN
        sbin/start-yarn.sh

3.3MySQL-5.6安裝
    略過

3.4 Hive

    3.4.1 alt+p 後出現sftp視窗,cd /usr/local/ys/soft,使用sftp上傳tar包到虛機ys01的/usr/local/ys/soft目錄下

    3.4.2解壓
    cd /usr/local/ys/soft
tar -zxvf hive-0.9.0.tar.gz -C /usr/local/ys/app

    3.4.3 .配置hive

        3.4.3.1配置HIVE_HOME環境變數  vi conf/hive-env.sh 配置其中的$hadoop_home

        3.4.3.2配置元資料庫資訊   vi  hive-site.xml

相關推薦

資料學習計劃不斷改善

我為什麼要學習大資料:因為我不喜歡現在國企的工作氛圍,不看好這個行業,另外我通過多方渠道瞭解到,其中包括李笑來、凱文凱利、和各種新聞及文章,現在我們正處於大資料時代,我是一個不安於現狀、喜歡探索順應時代發展趨勢學習新東西的人,希望通過努力來改變自己生活狀態渴望成功的人,我喜歡與朝氣蓬勃奮發向上的人一起活在

資料學習筆記十四-- hadoop

Table of Contents HDFS 儲存模型 架構模型  副本佈置 總結 ​ Hadoop簡介  HDFS 儲存模型 解釋 : 已上傳的Block大小不可改變的原因是每個Block大小一致,改變一個其他也會跟著改變

資料學習筆記十六-Hue的安裝部署和使用

sudo yum install ant asciidoc cyrus-sasl-devel cyrus-sasl-gssapi gcc gcc-c++ krb5-devel libtidy libxml2-devel libxslt-devel mak

資料學習記錄hadoop hive flume azkaban sqoop

大資料學習記錄(hadoop hive flume azkaban sqoop) 1. hadoop對海量資料進行分散式處理 2. 核心元件:HDFS(分散式檔案系統)、YARN(運算資源排程系統)、MAPREDUCE(分散式運算程式設計框架) 3. HIVE:基於大資料技術(檔案系統+運算框架

資料學習路線圖技術+專案雙管齊下

隨著大資料技術產業的不斷髮展,越來越多的網際網路公司開始高薪聘請大資料技術人才。而大資料人才培養無論是對於企業還是對於自己來說都至關重要,千鋒教育作為國內大資料培訓的先頭兵,視人才培養為己任,始終為打造緊跟時代和企業技術需求的課程為教育目標。此次千鋒教育大資料課程的全新升級就是以此為背景展開,具體學

入門到精通:資深程式設計師規劃JAVA資料學習路線附視訊教程

人類正在從IT時代走向DT(Data Technology)的時代。以網際網路、雲端計算、大資料和人工智慧為代表的技術革命正在滲透至各行各業,改變著我們的生活。 本文主要針對從事大資料開發的程式設計師們整理了整套的大資料學習相關的路線圖和知識材料,希望能幫助到大家。 很多初學者,對大資

資料學習路線轉載

學習路線文章 哎,都是淚!!! 一、大資料技術基礎 1、linux操作基礎 linux系統簡介與安裝 linux常用命令–檔案操作 linux常用命令–使用者管理與許可權 linux常用命令–系統管理 linux常用命令–免密登陸配置與網路管理 linux上常用軟體安裝 linux本地yum源配置及yum

資料學習筆記Map Reduce在叢集上的執行架構

MR1.X執行架構 JobTracter 核心,主,單點 排程所有的作業 監控整個叢集的資源負載 TaskTracter 從,自身節點資源管理 和JobTracter心跳,彙報資源,獲取Task Client 作業為單位 最終提交作業到JobTracker

資料學習路線完整詳細版

大資料學習路線 java(Java se,javaweb) Linux(shell,高併發架構,lucene,solr) Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume) 機器

資料學習路線圖附上資料學習資料

不知道你是計算機專業應屆生還是已經從業者。總之,有java基礎的學生學習大資料會輕鬆很多,零基礎的小白都需要從java和linux學起。如果你是一個學習能力特別強,而且自律性也很強的人的話可以通過自學。 事實上,只要找對了路徑,大資料並沒有那麼難。今天,我們就把這個大資料學

史上最全的“資料學習資源

資源列表:   關係資料庫管理系統(RDBMS)   框架   分散式程式設計   分散式檔案系統   檔案資料模型   Key -Map 資料模型   鍵-值資料模型   圖形資料模型   NewSQL資料庫   列式資料庫   時間序列資料庫   類SQL處理   資料攝取   服務程式設計

2018年最新資料學習路線清華大學資料專業趙老師制定

大資料是對海量資料進行儲存、計算、統計、分析處理的一系列處理手段,處理的資料量通常是TB級,甚至是PB或EB級的資料,這是傳統資料處理手段所無法完成的,其涉及的技術有分散式計算、高併發處理、高可用處理、叢集、實時性計算等,彙集了當前IT領域熱門流行的IT技術。大資料入門,需要學習以下這些知識點:

資料學習總結 分散式Hadoop系統

Scala tips:在前面的類層次結構圖中可以看到,Null型別是所有AnyRef型別的子型別,也即它處於AnyRef類的底層,對應java中的null引用。而Nothing是scala類中所有類的子類,它處於scala類的最底層。     近期投入大資料組工作,就寫一

資料學習筆記-Spark環境配置

Spark配置: spark-env配置: export SPARK_MASTER_IP=hadoop000 slaves配置: hadoop000 調整Spark-shell的日誌輸出級別: conf/log4j.propert

十小時入門資料學習筆記

第二章 初識Hadoop2.1Hadoop概述名稱由來:專案作者的孩子對黃色大象玩具的命名開源、分散式儲存與分散式計算的平臺Hadoop能做什麼:1. 搭建大型資料倉庫,PB級資料的儲存、處理、分析、統計等業務2. 搜尋引擎、日誌分析、資料探勘、商業智慧2.2Hadoop核心

資料學習路線自己制定的,從零開始

 大資料已經火了很久了,一直想了解它學習它結果沒時間,過年後終於有時間了,瞭解了一些資料,結合我自己的情況,初步整理了一個學習路線,有問題的希望大神指點。 學習路線 Linux(shell,高併發架構,lucene,solr) Hadoop(Hadoop,HDF

資料開發----Hive入門篇

前言 本篇介紹Hive的一些常用知識。要說和網上其他manual的區別,那就是這是筆者寫的一套成體系的文件,不是隨心所欲而作。 本文所用的環境為: CentOS 6.5 64位 Hive 2.1.1 Java 1.8 Hive Arc

資料開發----Fabric入門篇

一 前言 本篇介紹Fabric的一些常用知識。要說和網上其他manual的區別,那就是這是筆者寫的一套成體系的文件,不是隨心所欲而作。 二 安裝 Fabric現在支援Python2和Python3,安裝: pip install fabric pip i

FMI-人工智慧&資料高峰論壇深圳站

科技的大潮正風生水起,人工智慧、大資料發展如火如荼,在這個洶湧的時代裡,我們不能止步於看客。 今天,FMI人工智慧與大資料高峰論壇以接續和創新的精神,旨在幫助更多的人站上市場的風口,走向成功。通過不斷結合課程教學和知識分享,努力提供理論支援;洞察企業核心需求,推動企業競爭力重塑;聚焦人才培養與轉型發

正在學習的比較詳細的機器學習教程不斷更新

使用MINIST資料集 https://blog.csdn.net/zhaohaibo_/article/d // 獲取 minist 資料集 from tensorflow.examples.tutorials.mnist import input_data mnist = input