1.Hadoop的整體印象
2.Hadoop的優(yōu)勢(shì)
3.Hadoop可以做什么
4.Hadoop結(jié)構(gòu)
4.2 Hadoop計(jì)算--MapReduce
5.Hadoop生態(tài)
二、Hadoop實(shí)際操作
本文內(nèi)容諸多借鑒,在借鑒處會(huì)表示出處,可在出處查看詳情。
一、理論知識(shí)
參考Hadoop是什么,能干什么,怎么使用
1.Hadoop的整體印象
一句話概括:Hadoop就是存儲(chǔ)海量數(shù)據(jù)和分析海量數(shù)據(jù)的工具。
Hadoop是由java語言編寫的,在分布式服務(wù)器集群上存儲(chǔ)海量數(shù)據(jù)并運(yùn)行分布式分析應(yīng)用的開源框架,其核心部件是HDFS與MapReduce。
HDFS是一個(gè)分布式文件系統(tǒng):引入存放文件元數(shù)據(jù)信息的服務(wù)器Namenode和實(shí)際存放數(shù)據(jù)的服務(wù)器Datanode,對(duì)數(shù)據(jù)進(jìn)行分布式儲(chǔ)存和讀取。
MapReduce是一個(gè)計(jì)算框架:MapReduce的核心思想是把計(jì)算任務(wù)分配給集群內(nèi)的服務(wù)器里執(zhí)行。通過對(duì)計(jì)算任務(wù)的拆分(Map計(jì)算/Reduce計(jì)算)再根據(jù)任務(wù)調(diào)度器(JobTracker)對(duì)任務(wù)進(jìn)行分布式計(jì)算。
2.Hadoop的優(yōu)勢(shì)
高可靠性 : Hadoop 按位存儲(chǔ)和處理數(shù)據(jù)的能力值得人們信賴。 高擴(kuò)展性 : Hadoop 是在可用的計(jì)算機(jī)集簇間分配數(shù)據(jù)并完成計(jì)算任務(wù)的,這些集簇可以方便地?cái)U(kuò)展到數(shù)以干計(jì)的節(jié)點(diǎn)中。 高效性 : Hadoop能夠在節(jié)點(diǎn)之間動(dòng)態(tài)地移動(dòng)數(shù)據(jù),并保證各個(gè)節(jié)點(diǎn)的動(dòng)態(tài)平衡,因此處理速度非常快。 高容錯(cuò)性 : Hadoop能夠自動(dòng)保存數(shù)據(jù)的多個(gè)副本,并且能夠自動(dòng)將失敗的任務(wù)重新分。 低成本 : 與一體機(jī)、商用數(shù)據(jù)倉庫以及 QlikView、 Yonghong Z- Suites 等數(shù)據(jù)集市相比,Hadoop 是開源的,項(xiàng)目的軟件成本因此會(huì)大大降低。Hadoop 帶有用 Java 語言編寫的框架,因此運(yùn)行在 linux 生產(chǎn)平臺(tái)上是非常理想的, Hadoop 上的應(yīng)用程序也可以使用其他語言編寫,比如 C++。
3.Hadoop可以做什么
可以大數(shù)據(jù)存儲(chǔ):分布式存儲(chǔ) 日志處理:擅長日志分析 ETL:數(shù)據(jù)抽取到oracle、mysql、DB2、mongdb及主流數(shù)據(jù)庫 機(jī)器學(xué)習(xí): 比如Apache Mahout項(xiàng)目 搜索引擎:Hadoop + lucene實(shí)現(xiàn) 數(shù)據(jù)挖掘:目前比較流行的廣告推薦,個(gè)性化廣告推薦
Hadoop是專為離線和大規(guī)模數(shù)據(jù)分析而設(shè)計(jì)的,并不適合那種對(duì)幾個(gè)記錄隨機(jī)讀寫的在線事務(wù)處理模式。
實(shí)際應(yīng)用:
Flume+Logstash+Kafka+Spark Streaming進(jìn)行實(shí)時(shí)日志處理分析
酷狗音樂的大數(shù)據(jù)平臺(tái)
4.Hadoop結(jié)構(gòu)
參考Hadoop 系列(一)基本概念
4.1 Hadoop存儲(chǔ)–HDFS
Hadoop 的存儲(chǔ)系統(tǒng)是 HDFS(Hadoop Distributed File System)分布式文件系統(tǒng),對(duì)外部客戶端而言,HDFS 就像一個(gè)傳統(tǒng)的分級(jí)文件系統(tǒng),可以進(jìn)行創(chuàng)建、刪除、移動(dòng)或重命名文件或文件夾等操作,與 Linux 文件系統(tǒng)類似。
Hadoop HDFS 的架構(gòu)是基于一組特定的節(jié)點(diǎn)構(gòu)建的(見圖s),這些節(jié)名稱節(jié)點(diǎn)(NameNode,僅一個(gè)),它在 HDFS 內(nèi)部提供元數(shù)據(jù)服務(wù);第二名稱節(jié)點(diǎn)(Secondary NameNode),名稱節(jié)點(diǎn)的幫助節(jié)點(diǎn),主要是為了整合元數(shù)據(jù)操作(注意不是名稱節(jié)點(diǎn)的備份);數(shù)據(jù)節(jié)點(diǎn)(DataNode),它為 HDFS 提供存儲(chǔ)塊。由于僅有一個(gè) NameNode,因此這是 HDFS 的一個(gè)缺點(diǎn)(單點(diǎn)失敗,在 Hadoop2.x 后有較大改善)。存儲(chǔ)在 HDFS 中的文件被分成塊,然后這些塊被復(fù)制到多個(gè)數(shù)據(jù)節(jié)點(diǎn)中(DataNode),這與傳統(tǒng)的 RAID 架構(gòu)大不相同。塊的大小(通常為 128M)和復(fù)制的塊數(shù)量在創(chuàng)建文件時(shí)由客戶機(jī)決定。名稱節(jié)點(diǎn)可以控制所有文件操作。HDFS 內(nèi)部的所有通信都基于標(biāo)準(zhǔn)的 TCP/IP 協(xié)議。
(1)名稱節(jié)點(diǎn)(NameNode)
它是一個(gè)通常在HDFS架構(gòu)中單獨(dú)機(jī)器上運(yùn)行的組件,負(fù)責(zé)管理文件系統(tǒng)名稱空間和控制外部客戶機(jī)的訪問。NameNode決定是否將文件映射到DataNode上的復(fù)制塊上。對(duì)于最常見的3個(gè)復(fù)制塊,第一個(gè)復(fù)制塊存儲(chǔ)在同一機(jī)架的不同節(jié)點(diǎn)上,最后一個(gè)復(fù)制塊存儲(chǔ)在不同機(jī)架的某個(gè)節(jié)點(diǎn)上。
(2)數(shù)據(jù)節(jié)點(diǎn)(DataNode)
數(shù)據(jù)節(jié)點(diǎn)也是一個(gè)通常在HDFS架構(gòu)中的單獨(dú)機(jī)器上運(yùn)行的組件。Hadoop集群包含一個(gè)NameNode和大量DataNode。數(shù)據(jù)節(jié)點(diǎn)通常以機(jī)架的形式組織,機(jī)架通過一個(gè)交換機(jī)將所有系統(tǒng)連接起來。