hadoop的介紹
阿新 • • 發佈:2019-01-06
1HADOOP簡介
什麼是HADOOP
- HADOOP可以對海量資料進行分散式處理
- HADOOP的核心元件有
- HDFS(分散式檔案系統)
- YARN(運算資源排程系統)
- MAPREDUCE(分散式運算程式設計框架)
- 廣義上來說,HADOOP通常是指一個更廣泛的概念——HADOOP生態圈
HADOOP在大資料、雲端計算中的位置和關係
- 雲端計算是分散式計算、平行計算、網格計算、多核計算、網路儲存、虛擬化、負載均衡等傳統計算機技術和網際網路技術融合發展的產物。藉助IaaS(基礎設施即服務)、PaaS(平臺即服務)、SaaS(軟體即服務)等業務模式,把強大的計算能力提供給終端使用者。
- 現階段,雲端計算的兩大底層支撐技術為“虛擬化”和“大資料技術”
- 而HADOOP則是雲端計算的PaaS層的解決方案之一,並不等同於PaaS,更不等同於雲端計算本身。
HADOOP生態圈以及各組成部分的簡介
HDFS:分散式檔案系統
MAPREDUCE:分散式運算程式開發框架
HIVE:基於大資料技術(檔案系統+運算框架)的SQL資料倉庫工具
HBASE:基於HADOOP的分散式海量資料庫
ZOOKEEPER:分散式協調服務基礎元件
Mahout:基於mapreduce/spark/flink等分散式運算框架的機器學習演算法庫
Oozie:工作流排程框架
Sqoop:資料匯入匯出工具
Flume:日誌資料採集框架
2 分散式系統概述
注:由於大資料技術領域的各類技術框架基本上都是分散式系統,因此,理解hadoop、storm、spark等技術框架,都需要具備基本的分散式系統概念
2.1 分散式軟體系統(Distributed Software Systems)
- 該軟體系統會劃分成多個子系統或模組,各自執行在不同的機器上,子系統或模組之間通過網路通訊進行協作,實現最終的整體功能
- 比如分散式作業系統、分散式程式設計語言及其編譯(解釋)系統、分散式檔案系統和分散式資料庫系統等。
2.2 分散式軟體系統舉例:solrcloud
- 一個solrcloud叢集通常有多臺solr伺服器
- 每一個solr伺服器節點負責儲存整個索引庫的若干個shard(資料分片)
- 每一個shard又有多臺伺服器存放若干個副本互為主備用
- 索引的建立和查詢會在整個叢集的各個節點上併發執行
- solrcloud叢集作為整體對外服務,而其內部細節可對客戶端透明
總結:利用多個節點共同協作完成一項或多項具體業務功能的系統就是分散式系統。
2.3 分散式應用系統模擬開發(一個任務劃分為多個任務區域給多節點同時處理)
需求:可以實現由主節點將運算任務發往從節點,並將各從節點上的任務啟動;
程式清單:
AppMaster
AppSlave/APPSlaveThread
Task
程式執行邏輯流程:
3. 離線資料分析流程介紹
京東推薦功能專案技術架構圖
3.1 一般流程圖
本案例的前提是處理海量資料
- 資料採集:定製開發採集程式,或使用開源框架FLUME
- 資料預處理:定製開發mapreduce程式運行於hadoop叢集
- 資料倉庫技術:基於hadoop之上的Hive
- 資料匯出:基於hadoop的sqoop資料匯入匯出工具
- 資料視覺化:定製開發web程式或使用kettle等產品
- 整個過程的流程排程:hadoop生態圈中的oozie工具或其他類似開源產品