hadoop是一款的分布式系統(tǒng)基礎(chǔ)架構(gòu),該應(yīng)用由Apache基金會(huì)開發(fā),相信大家都使用過apache,如果你是真正的開發(fā)者對(duì)hadoop也許并不陌生。它以一種可靠、高效、可伸縮的方式進(jìn)行數(shù)據(jù)處理,有著超強(qiáng)的兼容性和數(shù)據(jù)庫處理能力,用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序,充分利用集群的威力進(jìn)行高速運(yùn)算和存儲(chǔ)。
功能特點(diǎn):
HDFS有著高容錯(cuò)性的特點(diǎn),并且設(shè)計(jì)用來部署在低廉的(low-cost)硬件上。而且它提供高傳輸率(high throughput)來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。
HDFS放寬了(relax)POSIX的要求(requirements)這樣可以流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)。
高可靠性。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ù)重新分配。
Hadoop帶有用 Java 語言編寫的框架,因此運(yùn)行在 Linux 生產(chǎn)平臺(tái)上是非常理想的。Hadoop 上的應(yīng)用程序也可以使用其他語言編寫,比如 C++。
開源實(shí)現(xiàn):
Hadoop是項(xiàng)目的總稱。主要是由HDFS和MapReduce組成。
HDFS是Google File System(GFS)的開源實(shí)現(xiàn)。
MapReduce是Google MapReduce的開源實(shí)現(xiàn)。
這個(gè)分布式框架很有創(chuàng)造性,而且有極大的擴(kuò)展性,使得Google在系統(tǒng)吞吐量上有很大的競(jìng)爭(zhēng)力。因此Apache基金會(huì)用Java實(shí)現(xiàn)了一個(gè)開源版本, 支持Fedora、Ubuntu等Linux平臺(tái)。雅虎和硅谷風(fēng)險(xiǎn)投資公司Benchmark Capital 聯(lián)合成立一家名為Hortonworks的新公司,接管被廣泛應(yīng)用的數(shù)據(jù)分析軟件Hadoop的開發(fā)工作。
Hadoop實(shí)現(xiàn)了HDFS文件系統(tǒng)和MapRecue。用戶只要繼承MapReduceBase,提供分別實(shí)現(xiàn)Map和Reduce的兩個(gè)類,并注冊(cè)Job即可自動(dòng)分布式運(yùn)行。
至今為止是2.4.1,穩(wěn)定版本是1.2.1 和 yarn 的 2.4.0。
HDFS把節(jié)點(diǎn)分成兩類:NameNode和DataNode。NameNode是唯一的,程序與之通信,然后從DataNode上存取文件。這些操作是透明的,與普通的文件系統(tǒng)API沒有區(qū)別。
MapReduce則是JobTracker節(jié)點(diǎn)為主,分配工作以及負(fù)責(zé)和用戶程序通信。
HDFS和MapReduce實(shí)現(xiàn)是完全分離的,并不是沒有HDFS就不能MapReduce運(yùn)算。
Hadoop也跟其他云計(jì)算項(xiàng)目有共同點(diǎn)和目標(biāo):實(shí)現(xiàn)海量數(shù)據(jù)的計(jì)算。而進(jìn)行海量計(jì)算需要一個(gè)穩(wěn)定的,安全的數(shù)據(jù)容器,才有了Hadoop分布式文件系統(tǒng)(HDFS,Hadoop Distributed File System)。
HDFS通信部分使用org.apache.hadoop.ipc,可以很快使用RPC.Server.start()構(gòu)造一個(gè)節(jié)點(diǎn),具體業(yè)務(wù)功能還需自己實(shí)現(xiàn)。針對(duì)HDFS的業(yè)務(wù)則為數(shù)據(jù)流的讀寫,NameNode/DataNode的通信等。
MapReduce主要在org.apache.hadoop.mapred,實(shí)現(xiàn)提供的接口類,并完成節(jié)點(diǎn)通信(可以不是hadoop通信接口),就能進(jìn)行MapReduce運(yùn)算。
hadoop 中文件是怎么存儲(chǔ)的:
1、存儲(chǔ)文件的時(shí)候需要指定存儲(chǔ)的路徑,這個(gè)路徑是HDFS的路徑。而不是哪個(gè)節(jié)點(diǎn)的某個(gè)目錄。比如./hadoop fs -put localfile hdfspat
一般操作的當(dāng)前路徑是/user/hadoop比如執(zhí)行./hadoop fs -ls .實(shí)際上就相當(dāng)于./hadoop fs -ls /user/hadoop
2、HDFS本身就是一個(gè)文件系統(tǒng),在使用的時(shí)候其實(shí)不用關(guān)心具體的文件是存儲(chǔ)在哪個(gè)節(jié)點(diǎn)上的。如果需要查詢可以通過頁面來查看,也可以通過API來實(shí)現(xiàn)查詢。