安裝hbase
首先下載hbase的最新穩(wěn)定版本
http://www.apache.org/dyn/closer.cgi/hbase/
安裝到本地目錄中,我安裝的是當(dāng)前用戶的hadoop/hbase中
tar -zxvf hbase-0.90.4.tar.gz
單機(jī)模式
修改配置文件
conf/hbase_env.sh
配置jdk的路徑
修改conf/hbase-site.xml
hbase.rootdir
file:///home/${user.name}/hbase-tmp
完成后啟動(dòng)
bin/start-hbase.sh
啟動(dòng)后
starting master, logging to/home/lgstar888/hadoop/hbase0.9/bin/../logs/hbase-lgstar888-master-ubuntu.out
然后執(zhí)行
bin/hbase shell
輸入status
如果輸入exit則退出
hadoop與google一樣,都是小孩命名的,是一個(gè)虛構(gòu)的名字,沒有特別的含義。從計(jì)算機(jī)專業(yè)的角度看,hadoop是一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu),由apache基金會(huì)開發(fā)。hadoop的主要目標(biāo)是對分布式環(huán)境下的“大數(shù)據(jù)”以一種可靠、高效、可伸縮的方式處理。設(shè)想一個(gè)場景,假如您需要grep一個(gè)100tb的大數(shù)據(jù)文件,按照傳統(tǒng)的方式,會(huì)花費(fèi)很長時(shí)間,而這正是hadoop所需要考慮的效率問題。
關(guān)于hadoop的結(jié)構(gòu),有各種不同的說法。我們這里簡單的理解為hadoop主要由三部分組成:hdfs(hadoopdistributed file system),mapreduce與hbase。
1.hadoop組件之一:hdfs分布式文件系統(tǒng)具有哪些優(yōu)點(diǎn)?
hdfs作為一種分布式文件系統(tǒng),它和現(xiàn)有的分布式文件系統(tǒng)有很多共同點(diǎn)。比如,hadoop文件系統(tǒng)管理的物理存儲資源不一定直接連接在本地節(jié)點(diǎn)上,而是通過計(jì)算機(jī)網(wǎng)絡(luò)與節(jié)點(diǎn)相連。對于client端而言,hdfs就像一個(gè)傳統(tǒng)的分級文件系統(tǒng),可以創(chuàng)建、刪除、移動(dòng)或重命名文件等等。與此同時(shí),hdfs與其他的分布式文件系統(tǒng)的區(qū)別也是顯而易見的。
首先,hdfs設(shè)計(jì)目標(biāo)之一是適合運(yùn)行在通用硬件(commodityhardware)上的分布式文件系統(tǒng)。hdfs假設(shè)的硬件錯(cuò)誤不是異常,而是常態(tài)。因?yàn)閔dfs面向的是成百上千的服務(wù)器集群,每臺服務(wù)器上存儲著文件系統(tǒng)的部分?jǐn)?shù)據(jù),并且這些機(jī)器的價(jià)格都很低廉。這就意味著總是有一部分硬件因各種原因而無法工作。因此,錯(cuò)誤檢測和快速、自動(dòng)的恢復(fù)是hdfs最核心的架構(gòu)目標(biāo)。從這個(gè)角度說,hdfs具有高度的容錯(cuò)性。
第二,hdfs的另一個(gè)設(shè)計(jì)目標(biāo)是支持大文件存儲。與普通的應(yīng)用不同,hdfs應(yīng)用具有很大的數(shù)據(jù)集,一個(gè)典型hdfs文件大小一般都在g字節(jié)至t字節(jié)。這就意味著hdfs應(yīng)該能提供比較高的數(shù)據(jù)傳輸帶寬與數(shù)據(jù)訪問吞吐量。相應(yīng)的,hdfs開放了一些posix的必須接口,容許流式訪問文件系統(tǒng)的數(shù)據(jù)。
第三,hdfs還要解決的一個(gè)問題是高數(shù)據(jù)吞吐量。hdfs采用的是“一次性寫,多次讀”這種簡單的數(shù)據(jù)一致性模型。換句話說,文件一旦建立后寫入,就不需要再更改了。網(wǎng)絡(luò)爬蟲程序就很適合使用這樣的模型。
第四,移動(dòng)計(jì)算環(huán)境比移動(dòng)數(shù)據(jù)劃算。hdfs提供了api,以便把計(jì)算環(huán)境移動(dòng)到數(shù)據(jù)存儲的地方,而不是把數(shù)據(jù)傳輸?shù)接?jì)算環(huán)境運(yùn)行的地方。這對于數(shù)據(jù)大文件尤其適用,可以有效減少網(wǎng)絡(luò)的擁塞、提高系統(tǒng)的吞吐量。
hdfs的體系結(jié)構(gòu)與工作流程
下面簡單看一下hdfs的結(jié)構(gòu)。圖1所示為hdfs的體系結(jié)構(gòu)圖。hdfs采用的是master/slave架構(gòu)。
namenode節(jié)點(diǎn)作為master服務(wù)器,有三部分功能。第一:處理來自客戶端的文件訪問。第二:管理文件系統(tǒng)的命名空間操作,如'打開'、'關(guān)閉'、'重命名'等。第三:負(fù)責(zé)數(shù)據(jù)塊到數(shù)據(jù)節(jié)點(diǎn)之間的映射。從這個(gè)意義上說,它扮演中心服務(wù)器的角色。
datanode節(jié)點(diǎn)作為slave服務(wù)器,同樣有三部分功能。第一:管理掛載在節(jié)點(diǎn)上的存儲設(shè)備。第二:響應(yīng)客戶端的讀寫請求。第三:從內(nèi)部看,每個(gè)文件被分成一個(gè)或多個(gè)數(shù)據(jù)塊,被存放到一組datanode,在namenode的統(tǒng)一調(diào)度下進(jìn)行數(shù)據(jù)塊的創(chuàng)建、刪除和復(fù)制。
圖1 hdfs體系結(jié)構(gòu)圖
hdfs采用java語言開發(fā),因此任何支持java的機(jī)器都可以部署namenode或datanode。相應(yīng)地,gnu/linux操作系統(tǒng)支持namenode與datanode。一個(gè)典型的部署場景是,一臺gnu/linux操作系統(tǒng)上運(yùn)行一個(gè)namenode實(shí)例,作為master中心服務(wù)器。而集群中的其它gnu/linux操作系統(tǒng)分別運(yùn)行一個(gè)datanode實(shí)例,作為slave服務(wù)器集群。
2.hadoop組件之二:什么是mapreduce編程模型,mapreduce的工作流程是什么?
mapreduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1tb)的并行運(yùn)算。mapreduce的設(shè)計(jì)目標(biāo)是方便編程人員在不熟悉分布式并行編程的情況下,將自己的程序運(yùn)行在分布式系統(tǒng)上。
mapreduce的命名規(guī)則由兩個(gè)術(shù)語組成,分別是map(映射)與reduce(化簡)。這些術(shù)語來自于列表處理語言,如:lisp,scheme,或ml。從概念上來講,mapreduce將輸入元素列表(inputlist)轉(zhuǎn)換成輸出元素列表(output list),按照map與reduce規(guī)則各一次。
從mapreduce框架的實(shí)現(xiàn)角度看,mapreduce程序有著兩個(gè)組件:一個(gè)實(shí)現(xiàn)了mapper,另一個(gè)實(shí)現(xiàn)了reducer。
第一次叫mapping,如圖2所示。mapreduce將inputlist作為mapping函數(shù)的輸入?yún)?shù),經(jīng)過處理,把結(jié)果返回給outputlist。舉例來說,有一個(gè)函數(shù)toupper(str),用來返回輸入字符串的大寫版本。那么這里的inputlist指的是轉(zhuǎn)換前的常規(guī)字符串列表,mapping function指的是toupper函數(shù),而outputlist指的是轉(zhuǎn)換后的大寫字符串列表。值得注意的是,在這里mapping并沒有改變輸入字符串列表,而是返回一個(gè)新的字符串列表。
圖2 map函數(shù)處理
第二次叫reducing,如圖3所示。mapreduce將inputlist作為reducing函數(shù)的輸入?yún)?shù),經(jīng)過迭代處理,把這些數(shù)據(jù)匯集,返回一個(gè)輸出值給outputvalue。從這個(gè)意義上來說,reducing一般用來生成”總結(jié)“數(shù)據(jù),把大規(guī)模的數(shù)據(jù)轉(zhuǎn)變成更小的總結(jié)數(shù)據(jù)。例如,"+"可以用來作一個(gè)reducing函數(shù),去返回輸入數(shù)據(jù)列表的值的總和。
圖3 reduce函數(shù)處理
從工作流程來講,mapreduce對應(yīng)的作業(yè)job首先把輸入的數(shù)據(jù)集切分為若干獨(dú)立的數(shù)據(jù)塊,并由map組件以task的方式并行處理。處理結(jié)果經(jīng)過排序后,依次輸入給reduce組件,并且以task的形式并行處理。mapreduce對應(yīng)的輸入輸出數(shù)據(jù)由hdfs的datanode存儲。mapreduce對應(yīng)的job部署在master服務(wù)器,由masterjobtracker負(fù)責(zé)task的調(diào)度,監(jiān)控,重新執(zhí)行失敗的任務(wù)等等。mapreduce對應(yīng)的job部署在若干不同的slave服務(wù)器,每個(gè)集群節(jié)點(diǎn)含一個(gè)slave tasktracker,負(fù)責(zé)執(zhí)行由master指派的任務(wù)。
hadoop框架由java實(shí)現(xiàn)的,它提供了兩種主要工具。hadoopstreaming是一種運(yùn)行作業(yè)的實(shí)用工具,它允許用戶創(chuàng)建和運(yùn)行任何可執(zhí)行程序(例如:shell工具)來做為mapper和reducer。hadoop pipes是一個(gè)與swig兼容的c++ api(沒有基于jnitm技術(shù)),它也可用于實(shí)現(xiàn)map/reduce應(yīng)用程序。這樣,開發(fā)人員就可以利用mapreduce框架,開發(fā)分布式應(yīng)用程序,運(yùn)行在由上千個(gè)商用機(jī)器組成的大型集群上,并以一種可靠容錯(cuò)的方式并行處理上t級別的數(shù)據(jù)集。
hadoop為企業(yè)來帶了什么?
如今,“大數(shù)據(jù)”這一術(shù)語在it經(jīng)理人中變得越來越流行。美國國家海洋與大氣管理局noaa利用“大數(shù)據(jù)”進(jìn)行氣象、生態(tài)系統(tǒng)、天氣和商務(wù)研究。《紐約時(shí)報(bào)》使用“大數(shù)據(jù)”工具進(jìn)行文本分析和web信息挖掘。迪斯尼則利用它們關(guān)聯(lián)和了解跨不同商店、主題公園和web資產(chǎn)的客戶行為。
“大數(shù)據(jù)”不僅適用于大型企業(yè),而是適用于各種不同規(guī)模的企業(yè)。例如,通過評估某位客戶在網(wǎng)站上的行為,來更好地了解他們需要什么支持或?qū)ふ沂裁串a(chǎn)品,或者弄清當(dāng)前天氣和其他條件對于送貨路線和時(shí)間安排的影響。
面對“大數(shù)據(jù)”,hadoop為揭示深?yuàn)W的企業(yè)與外部數(shù)據(jù)的關(guān)鍵內(nèi)幕提供了基礎(chǔ)。從技術(shù)上看,hadoop分布式文件系統(tǒng)(hdfs)保證了大數(shù)據(jù)的可靠存儲,而另一hadoop核心組件mapreduce則提供高性能并行數(shù)據(jù)處理服務(wù)。這兩項(xiàng)服務(wù)提供了一個(gè)使對結(jié)構(gòu)化和復(fù)雜“大數(shù)據(jù)”的快速、可靠分析變?yōu)楝F(xiàn)實(shí)的基礎(chǔ)。
hadoop已經(jīng)迅速成長為首選的、適用于非結(jié)構(gòu)化數(shù)據(jù)的大數(shù)據(jù)分析解決方案。基于hadoop、利用商品化硬件對海量的結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行批處理,給數(shù)據(jù)分析領(lǐng)域帶來了深刻的變化。通過挖掘機(jī)器產(chǎn)生的非結(jié)構(gòu)化數(shù)據(jù)中蘊(yùn)藏的知識,企業(yè)可以做出更好的決策,促進(jìn)收入增長,改善服務(wù),降低成本。
google與hadoop有著千絲萬縷的聯(lián)系。如前所述,hadoop主要是由hdfs、mapreduce和hbase組成。而hdfs是google file system(gfs)的開源實(shí)現(xiàn),mapreduce是googlemapreduce的開源實(shí)現(xiàn),hbase是googlebigtable的開源實(shí)現(xiàn)。hadoop分布式框架很有創(chuàng)造性,而且有極大的擴(kuò)展性,使得google在系統(tǒng)吞吐量上有很大的競爭力。因此apache基金會(huì)用java實(shí)現(xiàn)了一個(gè)開源版本,支持fedora、ubuntu等linux平臺。
考慮到hadoop在應(yīng)對大規(guī)模非結(jié)構(gòu)型數(shù)據(jù)中所起到的重要作用,微軟也不得不放下架子,近日宣布開發(fā)一個(gè)兼容windowsserver與windows azure平臺的hadoop開源版本。
ibm宣布在hadoop上建立新的存儲架構(gòu),作為群集運(yùn)行db2或oracle數(shù)據(jù)庫,目的是讓應(yīng)用程序,支持高性能分析,數(shù)據(jù)倉庫應(yīng)用程序和云計(jì)算的目的。
emc也推出了世界上第一個(gè)定制的、高性能的hadoop專用數(shù)據(jù)協(xié)同處理設(shè)備——greenplumhd數(shù)據(jù)計(jì)算設(shè)備,為客戶提供了最強(qiáng)大、最高效率的方法,充分挖掘大數(shù)據(jù)的價(jià)值。
互聯(lián)網(wǎng)搜索巨頭百度也在考慮使用hadoop。不過,出于性能與安全的考慮,百度在采用hadoop架構(gòu)的時(shí)候,將hadoop計(jì)算層進(jìn)行了重新編寫。
總結(jié):
hadoop作為一種分布式基礎(chǔ)架構(gòu),可以使用戶在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。
關(guān)于hadoop的價(jià)值,思科的jamesurquhart指出:“hadoop可以說是不涉及任何現(xiàn)有專利的開源項(xiàng)目在企業(yè)軟件方面所取得的首個(gè)里程碑式成功。”在業(yè)界,hadoop也贏得“龐大數(shù)據(jù)問題的通用解決方案”的頭銜。我們不得不說,hadoop前途不可估量。
原文鏈接:http://blog.sina.com.cn/s/blog_9c6852670102wwyp.html