HBase入門
HBase是什么?
HBase是Apache Hadoop中的一個子項目,Hbase依托于Hadoop的HDFS作為最基本存儲基礎單元,通過使用hadoop的DFS工具就可以看到這些這些數據 存儲文件夾的結構,還可以通過Map/Reduce的框架(算法)對HBase進行操作,如右側的圖所示:
HBase在產品中還包含了Jetty,在HBase啟動時采用嵌入式的方式來啟動Jetty,因此可以通過web界面對HBase進行管理和查看當前運行的一些狀態,非常輕巧。
為什么采用HBase?
HBase 不同于一般的關系數據庫,它是一個適合于非結構化數據存儲的數據庫.所謂非結構化數據存儲就是說HBase是基于列的而不是基于行的模式,這樣方面讀寫你的大數據內容。
HBase是介于Map Entry(key & value)和DB Row之間的一種數據存儲方式。就點有點類似于現在流行的Memcache,但不僅僅是簡單的一個key對應一個 value,你很可能需要存儲多個屬性的數據結構,但沒有傳統數據庫表中那么多的關聯關系,這就是所謂的松散數據。
簡單來說,你在HBase中的表創建的可以看做是一張很大的表,而這個表的屬性可以根據需求去動態增加,在HBase中沒有表與表之間關聯查詢。你 只需要 告訴你的數據存儲到Hbase的那個column families 就可以了,不需要指定它的具體類型:char,varchar,int,tinyint,text等等。但是你需要注意HBase中不包含事務此類的功 能。
Apache HBase 和Google Bigtable 有非常相似的地方,一個數據行擁有一個可選擇的鍵和任意數量的列。表是疏松的存儲的,因此用戶可以給行定義各種不同的列,對于這樣的功能在大項目中非常實用,可以簡化設計和升級的成本。
如何運行HBase?
從 Apache的HBase的鏡像網站上下載一個穩定版本的HBase http://mirrors.devlib.org/apache/hbase/stable/hbase-0.20.6.tar.gz, 下載完成后,對其進行解壓縮。確定你的機器中已經正確的安裝了Java SDK、SSH,否則將無法正常運行。
$ cd /work/hbase
進入此目錄
$ vim conf/hbase-env.sh
export JAVA_HOME=/JDK_PATH
編輯 conf/hbase-env.sh 文件,將JAVA_HOME修改為你的JDK安裝目錄
$ vim conf/regionservers
輸入你的所有HBase服務器名,localhost,或者是ip地址
$ bin/start-hbase.sh
啟動hbase, 中間需要你輸入兩次密碼,也可以進行設置不需要輸入密碼,啟動成功,如圖所示:
$ bin/hbase rest start
啟動hbase REST服務后就可以通過對uri: http://localhost:60050/api/ 的通用REST操作(GET/POST/PUT/DELETE)實現對hbase的REST形式數據操作.
也可以輸入以下指令進入HQL指令模式
$ bin/hbase shell
$ bin/stop-hbase.sh
關閉HBase服務
啟動時存在的問題
由于linux系統的主機名配置不正確,在運行HBase服務器中可能存在的問題,如圖所示:
2010-11-05 11:10:20,189 ERROR org.apache.hadoop.hbase.master.HMaster: Can not start master
java.net.UnknownHostException: ubuntu-server216: ubuntu-server216
表示你的主機名不正確,你可以先查看一下 /etc/hosts/中名稱是什么,再用 hostname 命令進行修改, hostname you_server_name
查看運行狀態
1、如果你需要對HBase的日志進行監控你可以查看 hbase.x.x./logs/下的日志文件,可以使用tail -f 來查看。
2、通過 web方式查看運行在 HBase 下的zookeeper http://localhost:60010/zk.jsp
3、如果你需要查看當前的運行狀態可以通過web的方式對HBase服務器進行查看,如圖所示:
擴展閱讀1:
Apach 的 Hadoop的項目中包含了那些產品,如圖所示:
Pig 是在MapReduce上構建的查詢語言(SQL-like),適用于大量并行計算。
Chukwa 是基于Hadoop集群中監控系統,簡單來說就是一個“看門狗” (WatchDog)
Hive 是DataWareHouse 和 Map Reduce交集,適用于ETL方面的工作。
HBase 是一個面向列的分布式數據庫。
Map Reduce 是Google提出的一種算法,用于超大型數據集的并行運算。
HDFS 可以支持千萬級的大型分布式文件系統。
Zookeeper 提供的功能包括:配置維護、名字服務、分布式同步、組服務等,用于分布式系統的可靠協調系統。
Avro 是一個數據序列化系統,設計用于支持大批量數據交換的應用。
擴展閱讀2:
什么是列存儲?列存儲不同于傳統的關系型數據庫,其數據在表中是按行存儲的,列方式所帶來的重要好處之一就是,由于查詢中的選擇規則是通過列來定義的,因 此整個數據庫是自動索引化的。按列存儲每個字段的數據聚集存儲,在查詢只需要少數幾個字段的時候,能大大減少讀取的數據量,一個字段的數據聚集存儲,那就 更容易為這種聚集存儲設計更好的壓縮/解壓算法。這張圖講述了傳統的行存儲和列存儲的區別:
擴展閱讀3:
對系統海量的Log4J日志可以存放在一個集中式的機器上,在此機器上安裝 splunk 可以方便對所有日志查看,安裝方法可以參考:
http://www.splunk.com/base/Documentation/latest/Installation/InstallonLinux