一上荡、hadoop背景介紹
1.1 什么是HADOOP
HADOOP是apache旗下的一套開源軟件平臺
HADOOP提供的功能:利用服務器集群恢口,根據(jù)用戶的自定義業(yè)務邏輯屑宠,對海量數(shù)據(jù)進行分布式處理
-
HADOOP的核心組件有
A. HDFS(分布式文件系統(tǒng))hdfs
B. YARN(運算資源調(diào)度系統(tǒng))yarn
C. MAPREDUCE(分布式運算編程框架)mapreduce
廣義上來說困檩,HADOOP通常是指一個更廣泛的概念——HADOOP生態(tài)圈
1.2 HADOOP產(chǎn)生背景
- HADOOP最早起源于Nutch。Nutch的設計目標是構建一個大型的全網(wǎng)搜索引擎飒焦,包括網(wǎng)頁抓取蜈膨、索引、查詢等功能荒给,但隨著抓取網(wǎng)頁數(shù)量的增加丈挟,遇到了嚴重的可擴展性問題——如何解決數(shù)十億網(wǎng)頁的存儲和索引問題刁卜。
- 2003年志电、2004年谷歌發(fā)表的兩篇論文為該問題提供了可行的解決方案。
——分布式文件系統(tǒng)(GFS)蛔趴,可用于處理海量網(wǎng)頁的存儲
——分布式計算框架MAPREDUCE挑辆,可用于處理海量網(wǎng)頁的索引計算問題。 - Nutch的開發(fā)人員完成了相應的開源實現(xiàn)HDFS和MAPREDUCE孝情,并從Nutch中剝離成為獨立項目HADOOP鱼蝉,到2008年1月,HADOOP成為Apache頂級項目箫荡,迎來了它的快速發(fā)展期魁亦。
1.3 HADOOP在大數(shù)據(jù)、云計算中的位置和關系
云計算是分布式計算羔挡、并行計算洁奈、網(wǎng)格計算、多核計算绞灼、網(wǎng)絡存儲利术、虛擬化、負載均衡等傳統(tǒng)計算機技術和互聯(lián)網(wǎng)技術融合發(fā)展的產(chǎn)物低矮。借助IaaS(基礎設施即服務)印叁、PaaS(平臺即服務)、SaaS(軟件即服務)等業(yè)務模式,把強大的計算能力提供給終端用戶轮蜕。
現(xiàn)階段昨悼,云計算的兩大底層支撐技術為“虛擬化”和“大數(shù)據(jù)技術”
而HADOOP則是云計算的PaaS層的解決方案之一,并不等同于PaaS跃洛,更不等同于云計算本身幔戏。
1.4 國內(nèi)外HADOOP應用案例介紹
1、HADOOP應用于數(shù)據(jù)服務基礎平臺建設
2税课、HADOOP用于用戶畫像
3闲延、HADOOP用于網(wǎng)站點擊流日志數(shù)據(jù)挖掘
1.5 hadoop就業(yè)職位的要求
大數(shù)據(jù)是個復合專業(yè),包括應用開發(fā)韩玩、軟件平臺约郁、算法悼瓮、數(shù)據(jù)挖掘等,因此,大數(shù)據(jù)技術領域的就業(yè)選擇是多樣的芜辕,但就HADOOP而言,通常都需要具備以下技能或知識:
A. HADOOP分布式集群的平臺搭建
B. HADOOP分布式文件系統(tǒng)HDFS的原理理解及使用
C. HADOOP分布式運算框架MAPREDUCE的原理理解及編程
D. Hive數(shù)據(jù)倉庫工具的熟練應用
E. Flume蕊苗、sqoop栗精、oozie等輔助工具的熟練使用
F. Shell/python等腳本語言的開發(fā)能力
1.6 HADOOP生態(tài)圈以及各組成部分的簡介
1、各組件簡介:
HADOOP(hdfs彪蓬、MAPREDUCE寸莫、yarn) 元老級大數(shù)據(jù)處理技術框架,擅長離線數(shù)據(jù)分析
Zookeeper 分布式協(xié)調(diào)服務基礎組件
Hbase 分布式海量數(shù)據(jù)庫档冬,離線分析和在線業(yè)務通吃
Hive sql 數(shù)據(jù)倉庫工具膘茎,使用方便,功能豐富酷誓,基于MR延遲大
Sqoop數(shù)據(jù)導入導出工具
Flume數(shù)據(jù)采集框架
2披坏、重點組件:
HDFS:分布式文件系統(tǒng)
MAPREDUCE:分布式運算程序開發(fā)框架
HIVE:基于大數(shù)據(jù)技術(文件系統(tǒng)+運算框架)的SQL數(shù)據(jù)倉庫工具
HBASE:基于HADOOP的分布式海量數(shù)據(jù)庫
ZOOKEEPER:分布式協(xié)調(diào)服務基礎組件
Mahout:基于mapreduce/spark/flink等分布式運算框架的機器學習算法庫
Oozie:工作流調(diào)度框架
Sqoop:數(shù)據(jù)導入導出工具
Flume:日志數(shù)據(jù)采集框架
二、分布式系統(tǒng)的概述
注:由于大數(shù)據(jù)技術領域的各類技術框架基本上都是分布式系統(tǒng)盐数,因此棒拂,理解hadoop、storm玫氢、
spark等技術框架帚屉,都需要具備基本的分布式系統(tǒng)概念
2.1 分布式軟件系統(tǒng)(Distributed Software Systems)
? 該軟件系統(tǒng)會劃分成多個子系統(tǒng)或模塊,各自運行在不同的機器上琐旁,子系統(tǒng)或模塊之間通過網(wǎng)絡通信進行協(xié)作涮阔,實現(xiàn)最終的整體功能
? 比如分布式操作系統(tǒng)、分布式程序設計語言及其編譯(解釋)系統(tǒng)灰殴、分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)等敬特。
2.2 分布式軟件系統(tǒng)舉例:solrcloud
A. 一個solrcloud集群通常有多臺solr服務器
B. 每一個solr服務器節(jié)點負責存儲整個索引庫的若干個shard(數(shù)據(jù)分片)
C. 每一個shard又有多臺服務器存放若干個副本互為主備用
D. 索引的建立和查詢會在整個集群的各個節(jié)點上并發(fā)執(zhí)行
E. solrcloud集群作為整體對外服務掰邢,而其內(nèi)部細節(jié)可對客戶端透明
總結:利用多個節(jié)點共同協(xié)作完成一項或多項具體業(yè)務功能的系統(tǒng)就是分布式系統(tǒng)。
2.3 分布式應用系統(tǒng)模擬開發(fā)
需求:可以實現(xiàn)由主節(jié)點將運算任務發(fā)往從節(jié)點伟阔,并將各從節(jié)點上的任務啟動辣之;
程序清單:
AppMaster
AppSlave/APPSlaveThread
Task
程序運行邏輯流程: