1. 程式人生 > >java 大資料以及Hadoop相關概念介紹

java 大資料以及Hadoop相關概念介紹

一、大資料的基本概念

1.1、什麼是大資料

大資料指的就是要處理的資料是TB級別以上的資料大資料是以TB級別起步的。在計算機當中,存放到硬碟上面的檔案都會佔用一定的儲存空間,例如:

​ 檔案佔用的儲存空間代表的就是該檔案的大小,在計算機當中,檔案的大小可以採用以下單位來表示,各個單位之間的轉換關係如下:

轉換

​ 平時我們在我們自己的電腦上面常見的就是Byte、KB、MB、GB這幾種,那麼究竟什麼是大資料呢,大資料的起步是以TB級別開始的,1TB=1024GB,而我們處理的資料可能會到達PB級別,1PB=1024TB,那可想而知,資料量是多麼龐大,所以大資料指的就是要處理的資料是TB級別以上的資料。而對於這些TB級別以上的資料,一般情況下,一臺計算機的硬碟儲存空間是無法儲存那麼大的資料,我們現在的普通電腦一般都是一塊硬碟,而硬碟容量一般都是500GB左右,有的是1TB,假設現在有1PB的資料要儲存,我們給每一臺計算機配置10塊硬碟,每一塊硬碟都是1T的儲存容量,那麼也得要使用100多臺電腦才能夠儲存得下1PB的資料。所以說,當我們的資料規模達到一定的程度的時候,我們以往的一些問題的解決辦法在這種場景下已經變得不適用了。

1.2、大資料的特徵

  大資料,顧名思義,第一個特徵就是資料量大,需要非常大的儲存空間進行儲存,而如果要處理這些海量的資料,那麼計算量可想而知,所以計算量非常龐大。而這些資料的來源往往也是多樣化的,資料的格式也是多樣化的,在我們平時的應用系統開發中,我們要處理的資料來源大多數是儲存在資料庫中的資料又或者是儲存在檔案當中,而在大資料時代,我們一個系統要處理的資料來源是多種多樣的,這些資料的來源可能是來自資料庫,也可能是來自一些監控採集資料,或者是一些科研資料,而資料的格式可能有普通文字,圖片、視訊、音訊、結構化的,非結構化的等等,反正什麼樣的資料都有。在大資料時代,資料的增長速度是非常快的,例如我們每天打電話,發簡訊,我們打出去的電話和發出去的簡訊在移動和聯通公司都會有相應的記錄,而這樣的資料每天都會產生幾億條,資料量的增長速度可想而知,因此要求處理資料的應用系統的處理速度也要快,當我們想展示一些資料給使用者看時,如果應用系統的處理速度不夠快,那麼給使用者的體驗是非常差的。另外,在大資料領域,我們從海里資料中能夠提取到的相對有價值的資料也是非常有限的,我們處理幾十個T的資料,從這些資料當中能夠提取出來的有價值的資訊也是非常少的,大資料分析要想得到一些有價值的結果,那麼要求資料要比較全。比如,我們想分析一個使用者的購物習慣,她平時喜歡在京東和天貓、淘寶這些電子商務網站上面進行購物,我們分析她在京東商城上面的購物行為時,我們不光要分析她最近一次的購買行為,還要分析她很長一段時間內的歷史購買行為,以及在其他電商網站的購買行為,如果我們真的想一體地分析使用者的生活習慣,那麼不光是要分析她的購物行為,還要分析她的社交行為,比如在一些社交網站上面平時和哪些人聯絡最多,平時喜歡討論一些什麼話題,從事的職業,年齡,性別等,拿到的資料越全,我們分析的結果就會越準確,所以大資料不光是要求資料量要大,更重要要的是資料要全面,要多維度的,這樣我們提取到的資料才是比較有價值,比較準確的。大資料處理領域在價值這一塊是稀疏型的,從海量資料當中能夠提取到的有價值的資料是非常稀少的。

1.3、存在有大資料的行業

放眼觀世界,現在各行各業每天都會產生大量的資料,21世紀是一個網際網路時代,一個資訊化的時代,我們這一代人都不可避免地在一些IT系統當中留下我們的腳印,存在有大資料的典型的行業有以下幾個行業:

​ 網際網路企業是最早收集大資料的行業,最典型的代表就是Google和百度,這兩個公司是做搜尋引擎的,數量都非常龐大,每天都要去把網際網路上的各種各樣的網頁資訊抓取下來儲存到本地,然後進行分析,處理,當用戶想通過搜尋引擎搜尋一些他們關心的資訊時,Google和百度就從海量的資料當中提取出相對於對使用者而言是有用的資訊,然後將提取到的結果反饋給使用者,據說Google儲存的資料量已經到達了上百個PB,這個資料量是非常驚人的。類似於Fackbook這樣的SNS(社交網站)因為使用者量比較多,使用者每天在網站上面分享一些文章,圖片,視訊,音訊等資訊,因此每天產生的資料量也是非常龐大的。

二、大資料技術要解決的技術難題

2.1、海量資料如何儲存?

海量資料的儲存問題也不是今天才有的,很早以前就出現了,一些行業或者部門因為歷史的積累,資料量也達到了一定的級別,當一臺電腦無法儲存這麼龐大的資料時,採用的解決方案是使用NFS(網路檔案系統)將資料分開儲存,NFS系統的架構如下圖所示:

NFS這種解決方案就是同時架設多臺檔案伺服器,如下圖所示:

​ 然後在檔案伺服器上面設定共享目錄,例如圖中顯示的【D:\software、E:\aa\bb、F:\dd\cc、E:\images】

這樣我們就可以把檔案分類存放到各個檔案伺服器上面的共享目錄當中,一臺電腦的儲存空間不夠用,那麼我們就將資料分散到多臺電腦進行儲存,而這些檔案伺服器上面的共享目錄對於使用者來說是透明的,使用者會以為自己存放資料的【Software、Tools、film、music】這些目錄都是屬於【Itdc.com.local】這臺文件伺服器裡面的【public】目錄下的子目錄,在NFS系統中,【Itdc.com.local】這臺文件伺服器只是起到一箇中轉站作用,將使用者需要存放的海量資料分類存放到各個檔案系統當中,這就解決了大資料的儲存問題了。當用戶需要訪問分散在各個檔案伺服器中的檔案資源時,它只需要訪問【Itdc.com.local】這臺文件伺服器就可以了。

  NFS雖然是解決了海量資料的儲存問題,但是在大資料背景下,這種儲存方案是不適用的,大資料不光是要解決資料儲存問題,更重要的是海量資料的分析,而NFS在海量資料分析方面不能夠充分利用多臺計算機同時進行分析。

2.2、海量資料如何計算

一個實際的需求場景——日誌分析

對日誌中每一個使用者的流量進行彙總就和,如下圖所示:

對於這樣的一個日誌檔案,如果只有這麼幾行資料,我們一般會採用這樣的處理方式:
    1、讀取一行日誌
    2、抽取手機號和流量欄位
    3、累加到HashMap中
    4、遍歷輸出結果

那麼問題來了,如果資料量變得很大呢,比如一個日誌檔案裡面有幾個GB資料,

  1. 如果仍然一行一行去讀,那麼就會因為磁碟的IO瓶頸導致效率太低,速度太慢。
  2. 如果一次性載入到記憶體,那麼就會因為單臺計算機的記憶體空間有限而導致記憶體溢位。
  3. 如果將中間結果全部快取到HashMap中,那麼也會因為單臺計算機的記憶體空間有限而導致記憶體溢位。
  4. 可以選擇採用多執行緒處理,但是依然無法改變資源瓶頸的現實,因為一臺計算器的CPU資源,記憶體資源,磁碟IO瓶頸是定,建立再多的執行緒也無法改變這個現實。

  所以當一個日誌檔案裡面儲存了幾個GB資料,那麼這種情況下就不能採用這種傳統的處理方式了。可以看到,在大資料背景下,我們一個簡單的業務場景,比如這裡的統計使用者流量,在資料量變得很大的時候,原來不是問題的一些東西現在都成了問題。那麼這些問題該如何解決呢?

解決思路一

  縱向擴充套件,也就是升級硬體,提高單機效能(增加記憶體,增強CPU、用更高效能的磁碟(如固態硬碟)),比如可以購買IBM的高階伺服器。

優點:

   1、簡單易行
缺點:

   1、單臺計算機的擴充套件空間有限,CPU、記憶體、磁碟再怎麼擴充套件也是有限的,無法無限擴充套件。

   2、成本高(高階伺服器非常昂貴,幾百萬甚至上千萬一臺,一般的小公司承受不起這樣高昂的成本)

解決思路二

  橫向擴充套件,用多臺節點分散式叢集處理 (通過增加節點數量提高處理能力,這裡說的節點指的就是一臺計算機)

核心思想:任務分攤,通過協作來實現單節點無法實現的任務。

  優點:

    1、成本相對低(可採用普通機器)

    2、易於線性擴充套件

  缺點:

    系統複雜度增加,我們要將我們的web應用部署到每一個節點上面,而多個節點協同工作時就要考慮以下幾個問題
      1、如何排程資源
      2、任務如何監控
      3、中間結果如何排程
      4、系統如何容錯
      5、如何實現眾多節點間的協調

分散式計算的複雜性就體現在這樣的5個問題裡面。

三、Hadoop相關概念介紹

3.1、大資料行業的標準——Hadoop

  Hadoop是一個開源的可運行於大規模叢集上的分散式檔案系統和執行處理基礎框架
Hadoop擅長
於在廉價機器搭建的叢集上進行海量資料(結構化與非結構化)的儲存與離線處理

  Hadoop就是一門用來處理大資料的技術,就是用來解決上述提到的分散式計算裡面的5個技術難題的。

3.2、Hadoop的Logo圖片

3.3、Hadoop的由來

3.4、Hadoop的核心元件

3.4.1、海量儲存——HDFS(Hadoop分散式檔案系統,Hadoop Distributed File System)

  • 分散式易擴充套件
  • 廉價易得
  • 高吞吐量
  • 高可靠性

3.4.2、分散式平行計算——資源排程(Yarn)+程式設計模型(MapReduce)

  • 大容量高併發
  • 封裝分散式實現細節
  • 大大提高分析效率

3.5、Hadoop的學習路線

  1. Linux系統基本操作能力
  2. java開發語言
  3. Hadoop核心元件
  4. MapReduce或Spark等程式設計模型
  5. Zookeeper-Sqoop-Flume等工具元件
  6. NoSQL技術,Hbase
  7. 資料分析挖掘、機器學習、Mahout

大家可以看到,學習大資料的話,咱們先要把java的基礎給打牢,想學大資料,java是基礎!!

相關推薦

java 資料以及Hadoop相關概念介紹

一、大資料的基本概念1.1、什麼是大資料大資料指的就是要處理的資料是TB級別以上的資料。大資料是以TB級別起步的。在計算機當中,存放到硬碟上面的檔案都會佔用一定的儲存空間,例如:​ 檔案佔用的儲存空間代表的就是該檔案的大小,在計算機當中,檔案的大小可以採用以下單位來表示,各個

資料框架Hadoop主要模組介紹

本文涉及到的所有模組,都是屬於Apache組織,不包括其他第三方的模組。 核心模組: Hadoop Common: 包括Hadoop常用的工具類,由原來的Hadoop core部分更名而來。主要包括系統配置工具Configuration、遠端過程呼叫RPC、序列化機制和Hadoop抽象檔案系統F

資料框架hadoop服務角色介紹

zookeeper角色:ZooKeeper服務是指包含一個或多個節點的叢集提供服務框架用於叢集管理。對於叢集,Zookeeper服務提供的功能包括維護配置資訊、命名、提供HyperBase的分散式同步,推薦在 ZooKeeper叢集中至少有3個節點。 JDK角色:JDK是 Java 語言的軟體開發工具包,

(一) RabbitMQ實戰教程(面向Java開發人員)之RabbitMQ相關概念介紹

前言 因為專案組需要對RabbitMQ的使用進行優化,所以系統化的學習了RabbitMQ,寫下本系列部落格的目的是希望能幫助到後續使用RabbitMQ的同學少走彎路,在閱讀本部落格前我希望您已經對RabbitMQ有基本的瞭解。本篇部落格主要面向JAVA開發人員

資料入門之hadoop相關概念知識點整理

Hadoop是一個開源框架,允許使用簡單的程式設計模型在跨計算機叢集的分散式環境中儲存和處理大資料。它的設計是從單個伺服器擴充套件到數千個機器,每個都提供本地計算和儲存。今天整理了一些關於hadoop相關概念的知識點,覺得文章有用的小夥伴可以直接收藏~ 我還是要推薦下我自己建立的大資料資料分享群14

【木木與呆呆的專欄】Java程式設計師,專注Java程式設計技術,開發以後臺為主前臺為輔,目前投身Hadoop大資料以及Ranger安全開發,活躍在大資料開源社群,同時推薦多種高效便捷的開發工具,分享自己的各種經驗技巧總結。

Java程式設計師,專注Java程式設計技術,開發以後臺為主前臺為輔,目前投身Hadoop大資料以及Ranger安全開發,活躍在大資料開源社群,同時推薦多種高效便捷的開發工具,分享自己的各種經驗技巧總結。...

超越Hadoop資料分析之第一章介紹:為什麼超越Hadoop Map-Reduce

本文翻譯自《BIG DATA ANALYTICS BEYOND HADOOP》譯者:吳京潤 譯者注:本文是本書第一章的開頭,第一章其它部分由其他人翻譯。 你可能是一個視訊服務提供商,而你想基於網路環境動態的選擇合適的內容分發網路來優化終端使用者的體驗。或者你是一個政府監管機構,需要為網際網路頁

基於Hadoop資料平臺的整體架構介紹

Hadoop是開源的分散式儲存+分散式計算平臺的框架 大資料的熱度在持續的升溫,繼雲端計算之後大資料成為又一大眾所追捧的新星。我們暫不去討論大資料到底是否適用於您的組織,至少在網際網路上已經被吹噓成無所不能的超級戰艦。好像一夜之間我們就從網際網路時代跳躍進了大資料時

java資料最全課程學習筆記(1)--Hadoop簡介和安裝及偽分散式

> 目前[CSDN](https://blog.csdn.net/weixin_42208775),[部落格園](https://home.cnblogs.com/u/gitBook/),[簡書](https://www.jianshu.com/u/da41700fde04)同步發表中,更多精彩歡迎訪問

java資料最全課程學習筆記(2)--Hadoop完全分散式執行模式

> 目前[CSDN](https://blog.csdn.net/weixin_42208775),[部落格園](https://home.cnblogs.com/u/gitBook/),[簡書](https://www.jianshu.com/u/da41700fde04)同步發表中,更多精彩歡迎訪問

資料Hadoop平臺介紹

# 大資料和Hadoop平臺介紹 ## 定義 大資料是指其大小和複雜性無法通過現有常用的工具軟體,以合理的成本,在可接受的時限內對其進行捕獲、管理和處理的資料集。這些困難包括資料的收入、儲存、搜尋、共享、分析和視覺化。大資料要滿足三個基本特徵(3V),資料量(volume)、資料多樣性(variety)和

webservice學習總結(一)-- WebService相關概念介紹

IT strong 資源 fire 求和 log AC service服務 為什麽 一、WebService是什麽? 基於Web的服務:服務器端整出一些資源讓客戶端應用訪問(獲取數據) 一個跨語言、跨平臺的規範(抽象) 多個跨平臺、跨語言的應用間通信整合的方案(實際)

JAVA資料人工智慧

  什麼是大資料?大資料是通過對海量資料的篩選分析,將資料視覺化為直觀圖表,從茫茫資料中發現規律,從而對運營決策提供最有力的建議。     JAVA大資料工程師是做什麼的?★資料整理,通過資料庫資料,爬蟲等,對使用者資訊整理歸類,從茫茫資料中篩選出有效部分。★一般而言

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

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

資料Hadoop學習(環境配置)——Hadoop偽分散式叢集搭建

title: Hadoop偽分散式叢集搭建 date: 2018-11-14 15:17:20 tags: Hadoop categories: 大資料 點選檢視我的部落格: Josonlee’s Blog 文章目錄 前言準備 偽分

Java資料是做什麼的

說一下很多人的內心戲“我聽說過Java,也聽說過大資料,就是這個Java大資料倒是很少聽到,為什麼會出現這樣一個名詞呢?學完Java大資料我們是做Java工程師呢還是做大資料工程師呢?” 這個名詞的出現不得不歸功於腦洞超強的培訓機構,用模稜兩可的技術方向來迷惑學生。今天我就大膽來揭一下內幕(

資料分析師眼中的資料Hadoop

一、前言 大資料這個概念不用我提大家也聽過很多了,前幾年各種公開論壇、會議等場合言必及大資料,說出來顯得很時髦似的。有意思的是最近擁有這個待遇的名詞是“人工智慧/AI”,當然這是後話。 眾所周知,大資料的發展是來源於Google三駕馬車,分別是: Google Fil

資料Hadoop reduce階段

Mapreduce中由於sort的存在,MapTask和ReduceTask直接是工作流的架構。而不是資料流的架構。在MapTask尚未結束,其輸出結果尚未排序及合併前,ReduceTask是又有資料輸入的,因此即使ReduceTask已經建立也只能睡眠等待MapTask完成。從而可以從MapTask節點獲取

Java資料培訓學校全套教程-JavaScript基礎(20)-馬克-專題視訊課程

Java大資料培訓學校全套教程-JavaScript基礎(20)—9人已學習 課程介紹         Java大資料培訓學校全套視訊課程:"java大資料培訓學校全套教材"系列課程由750集視訊構成,

Java資料培訓學校全套教程-常用物件(21)-馬克-專題視訊課程

Java大資料培訓學校全套教程-常用物件(21)—6人已學習 課程介紹         Java大資料培訓學校視訊課程:"java大資料培訓學校全套教材"系列課程由750集視訊構成,基本就 是1)時下流