1. 程式人生 > >大數據與Hadoop

大數據與Hadoop

發現 dem 降低成本 處理 數據存儲 缺省 用戶編寫 eight 擴展性

大數據是做什麽的

? 大數據
– 隨著計算機技術的發展,互聯網的普及,信息的積累已經到了一個非常龐大的地步,信息的增長也在不斷
的加快,隨著互聯網、物聯網建設的加快,信息更是爆炸是增長,收集、檢索、統計這些信息越發困難,
必須使用新的技術來解決這些問題

? 大數據的定義:
1、 大數據由巨型數據集組成,這些數據集大小常超出人類在可接受時間下的收集、庋用、管理和處理能力。

2、大數據指無法在一定時間範圍內用常規軟件工具進行捕捉、管理和處理的數據集合,是需要新處理模式

能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信息資產。

3、大數據是指無法在一定時間內用常規軟件工具對其內

容進行抓取、管理和處理的數據集合。大數據技術,

是指從各種各樣類型的數據中,快速獲得有價值信息的能力。適用於大數據的技術,包括大規模並行處理

數據庫,數據挖掘電網,分布式文件系統,分布式數據庫,雲計算平臺,互聯網,和可擴展的存儲系統。


? 大數據能做什麽?
1、把數據集合並後進行分析可得出許多額外的信息和數據關系性,可用來察覺商業趨勢、判定研究質量、避
免疾病擴散、打擊犯罪戒測定即時交通路況等;這樣的用途正是大型數據集盛行的原因

2、企業組織利用相關數據和分析可以幫劣它們降低成本、提高效率、開發新產品、做出更明智的業務決策等等。


大數據的特性

技術分享圖片

大數據特性
? 大數據的 5V 特性是什麽?


– (V)olume (大體量)
即可從數百TB到數十數百PB、甚至EB的規模。
– (V)ariety(多樣性)
即大數據包括各種格式和形態的數據。
– (V)elocity(時效性)
即很多大數據需要在一定的時間限度下得到及時處理。
– (V)eracity(準確性)
即處理的結果要保證一定的準確性。
– (V)alue(大價值)
即大數據包含很多深度的價值,大數據分析挖掘和利用將帶來巨大的商業價值。

大數據與Hadoop
? Hadoop 是什麽
– Hadoop 是一種分析和處理海量數據的軟件平臺
– Hadoop 是一款開源軟件,使用 JAVA 開發
– Hadoop 可以提供一個分布式基礎架構
? Hadoop 特點


– 高可靠性、高擴展性、高效性、高容錯性、低成本

Hadoop 起源
? 2003 年開始 google 陸續發表了幾篇論文:
– GFS, MapReduce, BigTable
– GFS是一個可擴展的分布式文件系統,用於大型的、分布式的、對大量數據進行訪問的應用。它運行於廉價的普通硬件上,提供容錯功能。
– Mapreduce 是針對分布式幵行計算的一套編程模型
– Mapreduce是由Map和reduce組成,Map是影射,把指令分發到多個worker上去,reduce是規約,把Map的worker計算出來的結果合並

– GFS, MapReduce, BigTable
– BigTable 存儲結構化數據。
– BigTable 是建立在 GFS ,Scheduler ,Lock Service和 MapReduce 之上的。
– 每個 Table 都是一個多維的稀疏圖

? 這三大技術被稱為 Google 的三駕馬車。

? 雖然Google沒有公布這三個產品的源碼,但是他發布了這三個產品的詳細設計論文。
? Yahoo 資劣的 Hadoop 按照這三篇論文的開源Java實現,不過在性能上 Hadoop 比 Google 要差很多。
– GFS - - -> HDFS
– Mapreduce - - -> Mapreduce
– Bigtable - - -> Hbase

Hadoop 核心組件

技術分享圖片

? HDFS
– 分布式文件系統
? MapReduce
– 分布式計算框架
? Yarn
– 集群資源管理系統

Hadoop 生態系統

技術分享圖片

Hadoop 常用組件
? HDFS (Hadoop分布式文件系統)
? Mapreduce (分布式計算框架)
? Zookeeper (分布式協作服務)
? Hbase (分布式列存數據庫)
? Hive (基於Hadoop的數據倉庫)
? Sqoop (數據同步工具)
? Pig (基於Hadoop的數據流系統)
? Mahout (數據挖掘算法庫)
? Flume (日誌收集工具)

HDFS 結構

技術分享圖片

HDFS 角色及概念
? 是Hadoop體系中數據存儲管理的基礎。它是一個高度容錯的系統,用於在低成本的通用硬件上運行。
? 角色和概念
– Client
– Namenode
– Secondarynode
– Datanode

? NameNode
– Master節點,管理HDFS的名稱空間和數據塊映射信息,配置副本策略,處理所有客戶端請求。
? Secondary NameNode
– 定期合並 fsimage 和fsedits,推送給NameNode
– 緊急情況下,可輔劣恢復NameNode,
? 但Secondary NameNode並非NameNode的熱備。

? DataNode
– 數據存儲節點,存儲實際的數據
– 匯報存儲信息給NameNode。
? Client
– 切分文件
– 訪問HDFS
– 與NameNode交互,獲取文件位置信息
– 與DataNode交互,讀取和寫入數據。

? Block

– 每塊缺省64MB大小
– 每塊可以多個副本

MapReduce 結構

技術分享圖片

Mapreduce 角色及概念
? 源自於google的MapReduce論文,JAVA實現的分
布式計算框架
? 角色和概念
– JobTracker
– TaskTracker
– Map Task
– Reducer Task

? JobTracker
– Master節點,只有一個
– 管理所有作業
– 作業 / 任務的監控、錯誤處理等
– 將任務分解成一系列任務,並分派給TaskTracker。
? TaskTracker
– Slave節點,一般是多臺
– 運行Map Task和Reduce Task
– 並與JobTracker交互,匯報任務狀態。

? Map Task:解析每條數據記錄,傳遞給用戶編寫的map(),幵執行,將輸出結果寫入本地磁盤

(如果為map-only作業,直接寫入HDFS)。

? Reducer Task:從Map Task的執行結果中,遠程讀取輸入數據,對數據進行排序,將數據按照分組傳遞
給用戶編寫的reduce氹數執行

Yarn 結構

技術分享圖片

Yarn 角色及概念
? Yarn 是 Hadoop 的一個通用的資源管理系統
? Yarn 角色
– Resourcemanager
– Nodemanager
– ApplicationMaster
– Container
– Client

? ResourceManager
– 處理客戶端請求
– 啟動 / 監控 ApplicationMaster
– 監控 NodeManager
– 資源分配與調度
? NodeManager
– 單個節點上的資源管理
– 處理來自 ResourceManager 的命令
– 處理來自 ApplicationMaster 的命令

? Container
– 對任務運行行環境的抽象,封裝了 CPU 、內存等
– 多維資源以及環境變量、啟勱命令等仸務運行相關的信息資源分配不調度
? ApplicationMaster
– 數據切分
– 為應用程序申請資源,並分配給內部任務
– 任務監控與容錯

? Client
– 用戶與 YARN 交互的客戶端程序
– 提交應用程序、監控應用程序狀態,殺死應用程序等

? YARN 的核心思想
? 將 JobTracker 和 TaskTacker 進行分離,它由下面幾大構成組件:
– ResourceManager 一個全局的資源管理器
– NodeManager 每個節點(RM)代理
– ApplicationMaster 表示每個應用
– 每一個 ApplicationMaster 有多個 Container 在NodeManager 上運行

大數據與Hadoop