0.95版本hbase 單機模式下所有的服務都運行在一個JVM上,包括HBase和zookeeper。使用的是本地文件系統
日志默認放在目錄下logs文件夾中
基本命令:create 'table','cf' //創建一個table名字的表,cloumn family為cfput 'table','row1','cf:a','value1' //插入table表中一條數據,row1為key值,a為列名,value1為值list ‘table’ //列出所有的表。table不是表名scan ‘table’ //查看表中所有數據get ‘table’,‘row1’ //取數據disable ‘table’ //?drop ‘table’;//刪除表
hbase 分默認配置文件和用戶自定義配置文件
hbase要求本地換回地址必須是127.0.0.1,不能是127.0.1.1等。Ubuntu默認是127.0.1.1
常用的linux最大文件句柄不能滿足hbase的要求,默認1024,設置到10K
sync 持久化同步
hbase的hadoop.jar必須和hadoop的hadoop.jar保持一致
hadoop hdfs有一個同時處理文件數的上限,這個上限至少要為4096,dfs.datanode.max.xcievers
hbase 分單機、偽分布式、完全分布式。和hadoop相同
hbase的數據目錄hbase.rootdir要讓它自己創建,不要自己創建
使用完全分布式模式,要把hbase.cluster.distributed 設置為true
hbase的conf/regionservers相當于hadoop的conf/slaves或者etc/slaves
一個分布式的hbase依賴一個zookeeper集群
hbase默認master端口 60000
hbase判斷宕機默認為失聯3分鐘
hbase的表是按key排序的
使用HBase的時候要讓HBase的版本和hadoop的對應才行,不然會出很多問題。方法有兩種,一種是用hadoop的jar包替換HBase里面的hadoop jar包,強迫它們對應起來;另一種就是找到原配,根據hadoop的版本去選擇HBase的版本;
我更傾向于第二種。查看方法是看HBase 的lib中hadoop相關的jar包的版本。
在穩定版本中它們大概的對應關系為:
可以看到,在一些過渡版本比如0.96.2、0.98.7有hadoop1.x和2.x的不同版本。
至于HBase與hadoop其他組件之間的關系,我讀到一個帖子,感覺非常受用(雖然它的題目是HBase簡介,但是我覺得它的題目更適合叫HBase與其他hadoop子項目之間的關系)
引用自:http://www.aboutyun.com/thread-6138-1-1.html
其中HBase位于結構化存儲層,Hadoop HDFS為HBase提供了高可靠性的底層存儲支持,Hadoop MaPReduce為HBase提供了高性能的計算能力,Zookeeper為HBase提供了穩定服務和failover機制。此外,Pig和Hive還為HBase提供了高層語言支持,使得在HBase上進行數據統計處理變的非常簡單。 Sqoop則為HBase提供了方便的RDBMS數據導入功能,使得傳統數據庫數據向HBase中遷移變的非常方便。
(才知道RDBMS是這么個東西)
HBase通過row和column確定一份數據,這份數據的值可能有多個版本,為什么會存在多個版本?查詢的時候會顯示那個版本?保證數據不被修改,查詢時總是顯示最新版本
存儲類型
TableName 是字符串RowKey 和 ColumnName 是二進制值(java 類型 byte[])Timestamp 是一個 64 位整數(Java 類型 long)value 是一個字節數組(Java類型 byte[])。
可以簡單的將HTable的存儲結構理解為
Hbase的優點 1 列的可以動態增加,并且列為空就不存儲數據,節省存儲空間.2 Hbase自動切分數據,使得數據存儲自動具有水平scalability.3 Hbase可以提供高并發讀寫操作的支持Hbase的缺點:1 不能支持條件查詢,只支持按照Row key來查詢.2 暫時不能支持Master server的故障切換,當Master宕機后,整個存儲系統就會掛掉.
HBase和傳統型數據庫的區別(http://www.aboutyun.com/thread-7804-1-1.html)
新聞熱點
疑難解答