1. 程式人生 > >大數據hadoop從入門到精通

大數據hadoop從入門到精通

階段 背景 介紹 pytho yar 目前 程序 指南 工程

前言:
? 一、背景介紹
? 二、大數據介紹
正文:
? 一、大數據相關的工作介紹
? 二、大數據工程師的技能要求
? 三、大數據學習規劃
? 四、持續學習資源推薦(書籍,博客,網站)
? 五、項目案例分析(批處理+實時處理)


前言
一、背景介紹
本人目前是一名大數據工程師,項目數據50T,日均數據增長20G左右,個人是從Java後端開發,經過3個月的業余自學成功轉型大數據工程師。
附上本人參考學習視頻:
參考學習視頻:https://pan.baidu.com/s/1SnaWp_ls0V3Z_CgmhGkT7Q
二、大數據介紹
大數據本質也是數據,但是又有了新的特征,包括數據來源廣、數據格式多樣化(結構化數據、非結構化數據、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這樣的一站式的計算框架,既可以進行批處理,又可以進行流處理(實質上是微批處理)。
  5. 而後Lambda架構,Kappa架構的出現,又提供了一種業務處理的通用架構。
  6. 為了提高工作效率,加快運速度,出現了一些輔助工具:
  7. Ozzie,azkaban:定時任務調度的工具。
  8. Hue,Zepplin:圖形化任務執行管理,結果查看工具。
  9. Scala語言:編寫Spark程序的最佳語言,當然也可以選擇用Python。
  10. Python語言:編寫一些腳本時會用到。
  11. Allluxio,Kylin等:通過對存儲的數據進行預處理,加快運算速度的工具。
    以上大致就把整個大數據生態裏面用到的工具所解決的問題列舉了一遍,知道了他們為什麽而出現或者說出現是為了解決什麽問題,進行學習的時候就有的放矢了。
    正文
    一、大數據相關工作介紹
    大數據方向的工作目前主要分為三個主要方向:
  12. 大數據工程師
  13. 數據分析師
  14. 大數據科學家
  15. 其他(數據挖掘等)
    二、大數據工程師的技能要求
    附上大數據工程師技能圖:

必須掌握的技能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條
  12. 機器學習算法以及mahout庫加MLlib
  13. R語言
  14. Lambda 架構
  15. Kappa架構
  16. Kylin
  17. Alluxio
    三、學習路徑
    假設每天可以抽出3個小時的有效學習時間,加上周末每天保證10個小時的有效學習時間;
    3個月會有(213+4210)3=423小時的學習時間。
    第一階段(基礎階段)
    1)Java 高級學習(《深入理解Java虛擬機》、《Java高並發實戰》)—30小時
  18. 掌握多線程。
  19. 掌握並發包下的隊列。
  20. 了解JMS。
  21. 掌握JVM技術。
  22. 掌握反射和動態代理。

2)Linux學習(跟鳥哥學就ok了)—–20小時

  1. Linux操作系統介紹與安裝。
  2. Linux常用命令。
  3. Linux常用軟件安裝。
  4. Linux網絡。
  5. 防火墻。
  6. Shell編程等。

參考學習視頻:https://pan.baidu.com/s/1SnaWp_ls0V3Z_CgmhGkT7Q

第二階段(攻堅階段)
3)Hadoop (《Hadoop 權威指南》)—80小時

  1. HDFS
  2. HDFS的概念和特性。
  3. HDFS的shell操作。
  4. HDFS的工作機制。
  5. HDFS的Java應用開發。
  6. MapReduce
  7. 運行WordCount示例程序。
  8. 了解MapReduce內部的運行機制。

  9. MapReduce程序運行流程解析。
  10. MapTask並發數的決定機制。
  11. MapReduce中的combiner組件應用。
  12. MapReduce中的序列化框架及應用。
  13. MapReduce中的排序。
  14. MapReduce中的自定義分區實現。
  15. MapReduce的shuffle機制。
  16. MapReduce利用數據壓縮進行優化。
  17. MapReduce程序與YARN之間的關系。
  18. MapReduce參數優化。
  19. MapReduce的Java應用開發
    4)Hive(《Hive開發指南》)–20小時
  20. Hive 基本概念
  21. Hive 應用場景。
  22. Hive 與hadoop的關系。
  23. Hive 與傳統數據庫對比。
  24. Hive 的數據存儲機制。
  25. Hive 基本操作
  26. Hive 中的DDL操作。
  27. 在Hive 中如何實現高效的JOIN查詢。
  28. Hive 的內置函數應用。
  29. Hive shell的高級使用方式。
  30. Hive 常用參數配置。
  31. Hive 自定義函數和Transform的使用技巧。
  32. Hive UDF/UDAF開發實例。
  33. Hive 執行過程分析及優化策略
    5)HBase(《HBase權威指南》)—20小時
  34. hbase簡介。
  35. habse安裝。
  36. hbase數據模型。
  37. hbase命令。
  38. hbase開發。
  39. hbase原理。

參考學習視頻:https://pan.baidu.com/s/1SnaWp_ls0V3Z_CgmhGkT7Q

6)Scala(《快學Scala》)–20小時

  1. Scala概述。
  2. Scala編譯器安裝。
  3. Scala基礎。
  4. 數組、映射、元組、集合。
  5. 類、對象、繼承、特質。
  6. 模式匹配和樣例類。
  7. 了解Scala Actor並發編程。
  8. 理解Akka。
  9. 理解Scala高階函數。
  10. 理解Scala隱式轉換。

參考學習視頻:https://pan.baidu.com/s/1SnaWp_ls0V3Z_CgmhGkT7Q

大數據hadoop從入門到精通