手撕JAVA(二十五)簡單聊聊大數據(上)

什麼是大數據

首先大數據沒有很多人說的那麼神祕,本質上就是大量數據的意思,當然這個量不是一般的大,而是指海量。

所以其實大數據很核心的問題就是如何對這數量級大到無法想象的海量數據如何進行處理。至於什麼數據分析之類的都是基於處理後衍生出來的對數據的使用罷了。

什麼是分佈式文件系統

所謂分佈式不是單純的指硬件的堆疊。單純的硬件堆疊只是單點的擴容而已。

硬件之間需要用網絡連接起來,並且需要相應的程序來管理堆疊的硬件(該程序可以視作分佈式集羣的操作系統),從而實現將數據分佈式的放到各個節點上,

由程序來管理數據。

典型的分佈式架構是主從架構

Master(管理節點)管理slave(工作節點)

大數據需要解決的核心問題

傳統的處理數據方式是一頭牛耕一塊田,隨着田越來越大牛就越來越大。

分佈式的方式是用很多頭牛耕一塊田,隨着田越來越大牛越來越多。

因爲面對海量數據的吞吐量,不可能使用串行處理,必須使用並行處理,

即使用分佈式系統,搭建集羣,集羣內多臺服務器同時進行處理。

所以大數據面對的最大兩個問題其實就是分佈式系統面對的兩個問題:

  1. 因爲採用分佈式的架構,程序在集羣內多個服務器上跑,如何保證一致性。
  2. 大量數據在節點(服務器)之間交互,線路的帶寬扛不住。

Hadoop

hadoop就是JAVA給出的大數據解決方案,也就是以上兩個問題的解決方案。

Hadoop核心設計:

1.當數據存儲時分佈數據。

2.在數據所在的位置運行計算。

Hadoop的特性:

1.在數據加載的時候分片成塊,即數據提前分佈式存儲到多個節點上面

然後在單個節點上進行運算,這樣,節點之間可以儘可能少的通信從而解決了線路資源(IO)的侷限性。MapReduce運算引擎裏map任務就是作用於單個塊

2.主從結構,master管理多個slave Node,即管理多個節點。

3.通過高級語言來書寫應用代碼,hive中通過類sql的HQL來寫數據操作相關的應用代碼,MapReduce中通過JAVA來編寫運算相關的應用代碼。

4.Hadoop可通過擴展slave來擴展,並且容錯。節點失敗不會影響整個系統,後期將節點修復就行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章