內(nèi)容參考鏈接:慕課網(wǎng)--Hadoop大數(shù)據(jù)平臺架構(gòu)基礎(chǔ)篇
Google大數(shù)據(jù)技術(shù)(3大):MapReduce、BigTable、GFS
革命性的變化
- 成本降低,能用Pc 機(jī),就不用大型機(jī)和高端存儲。
- 軟件容錯(cuò)硬件故障視為常態(tài),通過軟件保證可靠性。
- 簡化并行分布式計(jì)算,無須控制節(jié)點(diǎn)同步和數(shù)據(jù)交換。
模仿Google大數(shù)據(jù)技術(shù)的開源實(shí)現(xiàn):Hadoop
Hadoop是什么:分布式存儲+分布式計(jì)算平臺
包含兩個(gè)核心組成:
(1)HDFS:分布式文件系統(tǒng),存儲海量的數(shù)據(jù)
(2)MapReduce****:并行處理框架,實(shí)現(xiàn)任務(wù)分解和調(diào)度
Hadoop可以用來做什么:搭建大型數(shù)據(jù)倉庫,PB級數(shù)據(jù)的存儲、處理、分析、統(tǒng)計(jì)等業(yè)務(wù)。
Hadoop優(yōu)勢:
- 高擴(kuò)展
- 低成本
- 成熟的生態(tài)圈
Hadoop生態(tài)系統(tǒng):
1、Hive:sql->mapreduce
2、Hbase:存儲結(jié)構(gòu)化數(shù)據(jù)的分布式數(shù)據(jù)庫
與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫不同,Hbase放棄事務(wù)特性,追求更高的擴(kuò)展;
與hdfs不同:hbase提供數(shù)據(jù)的隨機(jī)讀寫和實(shí)時(shí)訪問,實(shí)現(xiàn)對表數(shù)據(jù)的讀寫功能;
3、Zookeeper:監(jiān)控Hadoop集群中每個(gè)節(jié)點(diǎn)的狀態(tài)
Hadoop安裝:
(1) 準(zhǔn)備liunx環(huán)境
(2) 安裝JDK
(3) 配置hadoop
HDFS的體系架構(gòu):
HDFS基本概念:
-
塊
HDFS的文件被分成塊進(jìn)行存儲;塊的默認(rèn)大小為64MB;塊是文件存儲處理的邏輯單元 -
NameNode
是管理節(jié)點(diǎn),存放文件元數(shù)據(jù)
(1) 文件與數(shù)據(jù)塊的映射表
(2) 數(shù)據(jù)塊與數(shù)據(jù)節(jié)點(diǎn)的映射表 -
DataNode
是工作節(jié)點(diǎn),存放數(shù)據(jù)塊

HDFS中數(shù)據(jù)管理與容錯(cuò):
(1) 數(shù)據(jù)塊副本,每個(gè)數(shù)據(jù)塊3個(gè)副本,分布在兩個(gè)機(jī)架內(nèi)的三個(gè)節(jié)點(diǎn)

(2) 心跳檢測:DataNode定期向NameNode發(fā)送心跳信息

(3) 二級NameNode
定期同步元數(shù)據(jù)映像文件和修改日志,NameNode發(fā)生故障時(shí),備胎轉(zhuǎn)正

HDTS讀取文件的流程:

HDTS寫入文件的流程:

HDFS的特點(diǎn):
1、 數(shù)據(jù)冗余,硬件容錯(cuò)
2、 流式的數(shù)據(jù)訪問,寫一次,讀多次
3、 存儲大文件
HDFS
適合數(shù)據(jù)批量讀取吞吐量高;
不適合交互式應(yīng)用,比如數(shù)據(jù)庫,低延遲很難滿足
適合一次寫入多次讀取,順序讀寫
不支持多用戶并發(fā)寫相同文件
命令:
hadoop fs –ls /
把當(dāng)前目錄下HDFS文件夾打印出來
hadoop fs –put tt.txt input/
把本地的一個(gè)文件tt.txt放到input目錄下
hadoop fs –mkdir input
建立input目錄
hadoop fs –get input/tt.txt tt1.txt
從hdfs下載文件到本地
hadoop dfsadmin –report
查看文件系統(tǒng)內(nèi)所有信息
MapReduce原理:
分而治之,一個(gè)大任務(wù)分成多個(gè)子任務(wù)(Map),并行執(zhí)行后,合并結(jié)果(reduce)

MapReduce的運(yùn)行流程:

基本概念
- job &task
一個(gè)job會被拆分成多個(gè)task,task分為MapTask和ReduceTask - JobTracker
(1) 作業(yè)調(diào)度
(2) 分配任務(wù),監(jiān)控任務(wù)執(zhí)行進(jìn)度
(3) 監(jiān)控taskTracker的狀態(tài) - TaskTracker
(1) 執(zhí)行任務(wù)
(2) 向JobTracker匯報(bào)任務(wù)狀態(tài)
MapReduce作業(yè)執(zhí)行過程:

MapReduce的容錯(cuò)機(jī)制:
(1) 重復(fù)執(zhí)行
重復(fù)執(zhí)行4次后,若還是失敗,則放棄
(2) 推測執(zhí)行
Map端執(zhí)行完成后,reduce端才會開始,比如某個(gè)taskTracker算的特別慢,會找一個(gè)跟這個(gè)taskTracker一樣任務(wù)的去執(zhí)行,保證整個(gè)任務(wù)不會因?yàn)槟硞€(gè)tasktracker的故障而執(zhí)行效率低。
Mapreduce的應(yīng)用案例:
(1)應(yīng)用案例一:wordcount單詞計(jì)數(shù)
計(jì)算文件中出現(xiàn)每個(gè)單詞的頻數(shù)
輸入結(jié)果按照字母順序進(jìn)行排序
(2)應(yīng)用案例二:利用MR進(jìn)行排