好程序員大數據分享零基礎學習Hadoop該如何下手

  零基礎學習Hadoop該如何下手,不少同窗是經過學習hadoop來學習大數據的,學習資料多是以圖書爲主要參考方向,《hadoop權威指南》的確是一本很好的入門大數據圖書,但大數據系統自己是分佈式系統,因此我覺得分佈式系統的相關概念纔是掌握大數據各種框架、知識的基礎。git

  

  1 入門:github

  hadoop框架是集存儲(hdfs)、計算(mr計算模型)、資源管理(yarn)等於一體的綜合框架,固然它是一個歷史的階段產物,刨除此因咱們來看看你們所熟知的wordcount的具體作法(mr)是什麼場景下如何進行計算的?redis

  

  1-1 分佈式系統sql

  首先wordcount程序放到傳統單機模式下也能夠處理,這裏你們必定會想到多線程、文件切割等實現方式,簡單來講並行計算的想法由來已久,隨着硬件的不斷進步、性能不斷提高,多核計算也已發展多年了,與此同時這個世界產生的數據更是增加飛速,那麼原來單機下多任務多線程的計算方式與其後的多核並行都遇到了一個處理速度與處理數據間嚴重不匹配的問題,如何提升計算能力是發展的必然,那麼集羣方式解決了計算資源水平擴展的能力並同時具備並行性,這是目前的核心思想,咱們能夠理解目前的集羣(一個黑盒子)類比於傳統單機方式,集羣中的節點間並行計算涉及到了主從架構、集羣管理、消息通信、容錯處理等等方面,而後這些都是分佈式系統所要考慮和解決的問題,由於它自己就是分佈式系統。mongodb

  

  1-2 分佈式存儲數據庫

  剛纔簡單提到了分佈式系統,說到了計算方面,其實還有一個隱含的問題是要計算必須有數據,必然涉及到存儲,因此存儲纔是根本,那麼如何使用分佈式存儲系統(hdfs)就必須瞭解其的組成部分(如什麼是塊、文件系統、分佈式文件系統)、使用方式(讀寫HDFS),但因爲大部分同窗都是相對熟悉關係型數據庫及它的使用方式SQL,這些都是應用層面的事情具體底層的各類狀況並不瞭解,或者沒有參與數據庫軟件的開發、對於文件類的學習工做經驗相對較少,對其中提到的文件IO操做、序列化、壓縮、內置或自定義文件讀寫格式、讀寫方式有種陌生,由於hdfs本質是文件系統。json

  

  1-3 分佈式計算多線程

  mr計算模型也是以前接觸較少,沒有具體的實際經驗感覺,好比mr具體能作什麼、什麼場景下使用等等,由於以前你們接觸的是OLTP(聯機事務處理【OLTP Online Transaction Processing】架構

  

聯機事務處理,表示事務性很是高的系統,通常都是高可用的在線系統,以小的事務以及小的查詢爲主,以傳統的關係型數據庫爲主要應用,主要是基本的、平常的事務處理,主要爲業務數據,例如銀行交易)操做,而大數據起初是用來進行數據挖掘的它更多的是一個OLAP(聯機分析處理【OLAP Online Analytical Processing】:框架

聯機分析處理,有的時候也叫DSS決策支持系統,就是咱們說的數據倉庫,重點主要是面向分析,會產生大量的查詢,通常不多涉及增刪改。)操做,mr計算模型的map操做和reduce操做是咱們常常遇到的需求,map操做負責數據清洗、轉換,reduce操做負責數據聚合,同時sql裏的select子句和group by子句不也對應了這類實際需求嗎,只是方式方法不一樣而已。

2 進階

2-1 建議以分佈式系統的角度來看待大數據中的各種框架,瞭解下分佈式理論如CAP理論、主從架構方式等等

2-2 固然因爲這些框架所處理的不是同一方向的問題,因此咱們首先框架分類,參考以下

圖片描述

圖片描述

技術架構

1 數據採集:flume、logstash

2 數據存儲:hdfs、hbase、alluxio、es、neo4j、janusGraph、redis、mongodb、tidb

3 數據計算:hive、impala、spark、flink、druid

4 數據通道:kafka、pulsar

5 任務調度:azkaban、airflow

6 多維數據模型:kylin

7 數據同步:sqoop、datax、canal

8 數據格式:parquet 、orc 、csv 、json

9 協調服務:zookeeper

10 監控:zabbix、prometheus

 

3 推薦

 

3.1 大數據的各種框架 官網永遠是第一手資源,必定要看

 

3.2 大量的公衆號、stackoverflow、github等

 

3.3 google查詢資源

 


  [1]: /img/bVbxBaO
相關文章
相關標籤/搜索