天天看點

hadoop使用(三)

安裝hbase

首先下載下傳hbase的最新穩定版本

http://www.apache.org/dyn/closer.cgi/hbase/

安裝到本地目錄中,我安裝的是目前使用者的hadoop/hbase中

tar -zxvf hbase-0.90.4.tar.gz

單機模式

修改配置檔案

conf/hbase_env.sh

配置JDK的路徑

修改conf/hbase-site.xml

完成後啟動

bin/start-hbase.sh

啟動後

starting master, logging to /home/lgstar888/hadoop/hbase0.9/bin/../logs/hbase-lgstar888-master-ubuntu.out

然後執行

bin/hbase shell

輸入status

hadoop使用(三)

如果輸入exit則退出

引用一篇文章,寫的很清晰:

http://www.linuxidc.com/Linux/2011-10/45706.htm

Hadoop與Google一樣,都是小孩命名的,是一個虛構的名字,沒有特别的含義。從計算機專業的角度看,Hadoop是一個分布式系統基礎架構,由 Apache基金會開發。Hadoop的主要目标是對分布式環境下的“大資料”以一種可靠、高效、可伸縮的方式處理。設想一個場景,假如您需要grep一 個100TB的大資料檔案,按照傳統的方式,會花費很長時間,而這正是Hadoop所需要考慮的效率問題。   關于Hadoop的結構,有各種不同的說法。我們這裡簡單的了解為Hadoop主要由三部分組成:HDFS(Hadoop Distributed File System),MapReduce與Hbase。

1.Hadoop元件之一:HDFS分布式檔案系統具有哪些優點?

  HDFS作為一種分布式檔案系統,它和現有的分布式檔案系統有很多共同點。比如,Hadoop檔案系統管理的實體存儲資源不一定直接連接配接在本地 節點上,而是通過計算機網絡與節點相連。對于Client端而言,HDFS就像一個傳統的分級檔案系統,可以建立、删除、移動或重命名檔案等等。與此同 時,HDFS與其他的分布式檔案系統的差別也是顯而易見的。

  首先,HDFS設計目标之一是适合運作在通用硬體(commodity hardware)上的分布式檔案系統。HDFS假設的硬體錯誤不是異常,而是常态。因為HDFS面向的是成百上千的伺服器叢集,每台伺服器上存儲着檔案 系統的部分資料,并且這些機器的價格都很低廉。這就意味着總是有一部分硬體因各種原因而無法工作。是以,錯誤檢測和快速、自動的恢複是HDFS最核心的架 構目标。從這個角度說,HDFS具有高度的容錯性。

  第二,HDFS的另一個設計目标是支援大檔案存儲。與普通的應用不同,HDFS應用具有很大的資料集,一個典型HDFS檔案大小一般都在G位元組 至T位元組。這就意味着HDFS應該能提供比較高的資料傳輸帶寬與資料通路吞吐量。相應的,HDFS開放了一些POSIX的必須接口,容許流式通路檔案系統 的資料。

  第三,HDFS還要解決的一個問題是高資料吞吐量。HDFS采用的是“一次性寫,多次讀”這種簡單的資料一緻性模型。換句話說,檔案一旦建立後寫入,就不需要再更改了。網絡爬蟲程式就很适合使用這樣的模型。

  第四,移動計算環境比移動資料劃算。HDFS提供了API,以便把計算環境移動到資料存儲的地方,而不是把資料傳輸到計算環境運作的地方。這對于資料大檔案尤其适用,可以有效減少網絡的擁塞、提高系統的吞吐量。

  HDFS的體系結構與工作流程

  下面簡單看一下HDFS的結構。圖1所示為HDFS的體系結構圖。HDFS采用的是Master/Slave架構。

  NameNode節點作為Master伺服器,有三部分功能。第一:處理來自用戶端的檔案通路。第二:管理檔案系統的命名空間操作,如'打開'、'關閉'、'重命名'等。第三:負責資料塊到資料節點之間的映射。從這個意義上說,它扮演中心伺服器的角色。

  DataNode節點作為Slave伺服器,同樣有三部分功能。第一:管理挂載在節點上的儲存設備。第二:響應用戶端的讀寫請求。第三:從内部 看,每個檔案被分成一個或多個資料塊,被存放到一組DataNode,在Namenode的統一排程下進行資料塊的建立、删除和複制。

hadoop使用(三)

  圖1 HDFS體系結構圖

  HDFS采用Java語言開發,是以任何支援Java的機器都可以部署Namenode或Datanode。相應地,GNU/Linux操作系 統支援Namenode與Datanode。一個典型的部署場景是,一台GNU/Linux作業系統上運作一個Namenode執行個體,作為Master中 心伺服器。而叢集中的其它GNU/Linux作業系統分别運作一個Datanode執行個體,作為Slave伺服器叢集。

2.Hadoop元件之二:什麼是MapReduce程式設計模型, MapReduce的工作流程是什麼?

  MapReduce是一種程式設計模型,用于大規模資料集(大于1TB)的并行運算。MapReduce的設計目标是友善程式設計人員在不熟悉分布式并行程式設計的情況下,将自己的程式運作在分布式系統上。

  MapReduce的命名規則由兩個術語組成,分别是Map(映射)與Reduce(化簡)。這些術語來自于清單處理語言, 如:LISP,Scheme,或ML。從概念上來講,MapReduce将輸入元素清單(Input List)轉換成輸出元素清單(Output List),按照Map與Reduce規則各一次。

  從MapReduce架構的實作角度看,MapReduce程式有着兩個元件:一個實作了 Mapper,另一個實作了Reducer。

  第一次叫Mapping,如圖2所示。MapReduce将Input List作為Mapping函數的輸入參數,經過處理,把結果傳回給Output List。舉例來說,有一個函數toUpper(str),用來傳回輸入字元串的大寫版本。那麼這裡的Input List指的是轉換前的正常字元串清單,Mapping Function指的是toUpper函數,而Output List指的是轉換後的大寫字元串清單。值得注意的是,在這裡Mapping并沒有改變輸入字元串清單,而是傳回一個新的字元串清單。

hadoop使用(三)

  圖2 Map函數處理

  第二次叫Reducing,如圖3所示。MapReduce将Input List作為Reducing函數的輸入參數,經過疊代處理,把這些資料彙集,傳回一個輸出值給Output Value。從這個意義上來說,Reducing一般用來生成”總結“資料,把大規模的資料轉變成更小的總結資料。例如,"+"可以用來作一個 reducing函數,去傳回輸入資料清單的值的總和。

hadoop使用(三)

  圖3 Reduce函數處理

  從工作流程來講,MapReduce對應的作業Job首先把輸入的資料集切分為若幹獨立的資料塊,并由Map元件以Task的方式并行處理。處 理結果經過排序後,依次輸入給Reduce元件,并且以Task的形式并行處理。MapReduce對應的輸入輸出資料由HDFS的DataNode存 儲。MapReduce對應的Job部署在Master伺服器,由Master JobTracker負責Task的排程,監控,重新執行失敗的任務等等。MapReduce對應的Job部署在若幹不同的Slave伺服器,每個叢集節 點含一個slave TaskTracker,負責執行由master指派的任務。

  Hadoop架構由Java實作的,它提供了兩種主要工具。Hadoop Streaming是一種運作作業的實用工具,它允許使用者建立和運作任何可執行程式(例如:Shell工具)來做為mapper和reducer。 Hadoop Pipes是一個與SWIG相容的C++ API (沒有基于JNITM技術),它也可用于實作Map/Reduce應用程式。這樣,開發人員就可以利用MapReduce架構,開發分布式應用程式,運作 在由上千個商用機器組成的大型叢集上,并以一種可靠容錯的方式并行處理上T級别的資料集。

3.Hadoop元件之三:什麼是面向列開源分布式資料庫Hbase?

  HBase是一個分布式的、面向列的開源資料庫,由Apache基金會開發。HBase不同于一般的關系資料庫,它是一個适合于非結構化資料存 儲的資料庫。它基于列的而不是基于行的模式。使用者存儲資料行在一個表裡。一個資料行擁有一個可選擇的鍵和任意數量的列。使用者可根據鍵通路行,以及對于一系 列的行進行掃描和過濾。HBase一個可以橫向擴張的表存儲系統,能夠為大規模資料提供速度極快的低等級更新。主要用于需要随機通路,實時讀寫大資料 (Big Data)。這正是資訊系統所需要的功能。

  下面的例子示範的是将原來存放在MySQL中Blog中的資料遷移到HBase中的過程:

  圖4為MySQL中現有的表結構:表Blogtable表示部落格本身,包括5個字段,BlogId為每位使用者對應的部落格ID号,類型為Int, 作為主鍵字段;Author為該使用者的部落格名稱,類型為Varchar;Title為該使用者的部落格簽名,類型為Varchar;URL為部落格網址連結,類 型為Varchar;Text為部落格的内容,類型為Varchar。Comment表示部落格評論,包括5個字段。ID為發表評論的使用者ID,類型為 Int,作為主鍵字段;BlogId為部落格的原文ID,類型為Varchar。其中,BlogId作為Comment表的外鍵,指向表Blogtable 的主鍵。Title為評論标題,類型為Varchar;Author為發表該評論的使用者名稱,類型為Varchar;Text字段為評論内容,類型為 Varchar。

hadoop使用(三)

  圖4 MySQL表結構

  圖5 為遷移HBase中的表結構:HBase以表的形式存儲資料。表有行和列組成。列劃分為若幹個列族(row family)。表Blogtable表示部落格本身。ID為Row Key,即Table的主鍵,用來檢索記錄。Table在水準方向有一個或者多個Column Family組成。表BlogTable包含5個Column Family, Info的資料結構分為Info:Author,Info:Title,Info:URL。如果想添加其它屬性X,則對應的結構為Info:X。需要說明 的是,Column Family支援動态擴充,無需預先定義Column的數量以及類型,但是,所有Column均以二進制格式存儲,使用者需要自行進行類型轉換。

hadoop使用(三)

  圖5 HBase表結構

  總之,Hbase目标主要依靠橫向擴充,通過不斷增加廉價的商用伺服器,來增加計算和存儲能力。簡單的了解,Hbase介于nosql和 RDBMS之間。Hbase僅能通過主鍵(row key)和主鍵的range來檢索資料,不支援條件查詢以及排序等,僅支援單行事務。Habase主要用來存儲非結構化和半結構化的松散資料。針對 Hbase的不足,Hadoop的一個資料倉庫工具Hive對此做出了彌補。Hive可以将結構化的資料檔案映射為一張資料庫表,并提供完整的SQL查詢 功能,并将SQL語句轉換為MapReduce任務運作。針對Hbase單行事務的限制,Hive也提供了擴充。據說,Facebook之是以選擇了 Hbase,是因為他們HBase适用于處理以下兩種類型的資料模式:1.一小組經常變化的臨時資料;2.一組不斷增加但很少通路的資料。

Hadoop為企業來帶了什麼?

  如今,“大資料”這一術語在IT經理人中變得越來越流行。美國國家海洋與大氣管理局NOAA利用“大資料”進行氣象、生态系統、天氣和商務研 究。《紐約時報》使用“大資料”工具進行文本分析和Web資訊挖掘。迪斯尼則利用它們關聯和了解跨不同商店、主題公園和Web資産的客戶行為。

  “大資料”不僅适用于大型企業,而是适用于各種不同規模的企業。例如,通過評估某位客戶在網站上的行為,來更好地了解他們需要什麼支援或尋找什麼産品,或者弄清目前天氣和其他條件對于送貨路線和時間安排的影響。

  面對“大資料”,Hadoop為揭示深奧的企業與外部資料的關鍵内幕提供了基礎。從技術上看,Hadoop分布式檔案系統(HDFS)保證了大 資料的可靠存儲,而另一Hadoop核心元件MapReduce則提供高性能并行資料處理服務。這兩項服務提供了一個使對結構化和複雜“大資料”的快速、 可靠分析變為現實的基礎。

  Hadoop已經迅速成長為首選的、适用于非結構化資料的大資料分析解決方案。基于Hadoop、利用商品化硬體對海量的結構化和非結構化資料 進行批處理,給資料分析領域帶來了深刻的變化。通過挖掘機器産生的非結構化資料中蘊藏的知識,企業可以做出更好的決策,促進收入增長,改善服務,降低成 本。

  考慮到Hadoop在應對大規模非結構型資料中所起到的重要作用,微軟也不得不放下架子,近日宣布開發一個相容Windows Server與Windows Azure平台的Hadoop開源版本。

  IBM宣布在Hadoop上建立新的存儲架構,作為群集運作DB2或Oracle資料庫,目的是讓應用程式,支援高性能分析,資料倉庫應用程式和雲計算的目的。

  EMC也推出了世界上第一個定制的、高性能的Hadoop專用資料協同處理裝置——Greenplum HD資料計算裝置,為客戶提供了最強大、最高效率的方法,充分挖掘大資料的價值。

  網際網路搜尋巨頭百度也在考慮使用Hadoop。不過,出于性能與安全的考慮,百度在采用Hadoop架構的時候,将Hadoop計算層進行了重新編寫。

  總結:

  Hadoop作為一種分布式基礎架構,可以使使用者在不了解分布式底層細節的情況下,開發分布式程式。

  關于Hadoop的價值,思科的James Urquhart指出:“Hadoop可以說是不涉及任何現有專利的開源項目在企業軟體方面所取得的首個裡程碑式成功。”在業界,Hadoop也赢得“龐 大資料問題的通用解決方案”的頭銜。我們不得不說,Hadoop前途不可估量。

hadoop使用:

<a href="http://www.cnblogs.com/skyme/archive/2011/10/26/2223984.html">hadoop使用(一)</a>

<a href="http://www.cnblogs.com/skyme/archive/2011/10/27/2225202.html">hadoop使用(二)</a>

<a href="http://www.cnblogs.com/skyme/archive/2011/10/28/2226850.html">hadoop使用(三)</a>

<a href="http://www.cnblogs.com/skyme/archive/2012/07/29/2227507.html">hadoop使用(四)</a>

<a href="http://www.cnblogs.com/skyme/archive/2012/06/01/2529855.html">hadoop使用(五)</a>

<a href="http://www.cnblogs.com/skyme/archive/2012/06/04/2534876.html">hadoop使用(六)</a>

hbase實戰:

<a href="http://www.cnblogs.com/skyme/archive/2012/07/25/2608310.html">hbase實戰——(1.1  nosql介紹)</a>