HBase是一種構建在HDFS之上的分佈式、面向列的存儲系統。HBase從另外一個角度處理伸縮性問題。它經過線性方式從下到上增長節點來進行擴展。HBase不是關係型數據庫,也不支持SQL,可是它有本身的特長,這是RDBMS不能處理的,HBase巧妙地將大而稀疏的表放在商用的服務器集羣上。HBase 是Google Bigtable 的開源實現,與Google Bigtable 利用GFS做爲其文件存儲系統相似, HBase 利用Hadoop HDFS 做爲其文件存儲系統;Google 運行MapReduce 來處理Bigtable中的海量數據, HBase 一樣利用Hadoop MapReduce來處理HBase中的海量數據;Google Bigtable 利用Chubby做爲協同服務,HBase利用Zookeeper做爲對應。html
HBase以表的形式存儲數據,表有行和列組成,列劃分爲若干個列族/列簇(column family)java
表結構web
Row Key | column-family1 | column-family2 |
---|---|---|
key1 | f1:列簇1第1個字段;f2:列簇1第2個字段 | f1:列簇2第1個字段;f2:列簇2第2個字段 |
key2 | f1:列簇1第1個字段,;2:列簇1第2個字段 | f1:列簇2第1個字段;f2:列簇2第2個字段 |
HMastershell
HRegionServer數據庫
Hbase集羣依賴hadoop,zookeeper,安裝Hbase集羣前首先要準備好hadoop和zookeeper集羣apache
服務器列表bash
IP | host | 服務 |
---|---|---|
10.19.3.194 | hadoop01 | HMaster |
10.19.3.195 | hadoop02 | HRegionServer |
10.19.3.196 | hadoop03 | HRegionServer |
注意:在相應的服務器上配置好host服務器
準備工做架構
安裝步驟app
進入安裝目錄
[app@hadoop01 hbase]$ pwd
/usr/local/hbase
[app@hadoop01 hbase]$ ls
bin CHANGES.md conf hbase-webapps LEGAL lib LICENSE.txt logs NOTICE.txt README.txt RELEASENOTES.md
[app@hadoop01 hbase]$
複製代碼
編輯conf目錄下的hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://10.19.3.194:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>10.19.3.194,10.19.3.195,10.19.3.196</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
複製代碼
在conf目錄下的hbase-env.sh末尾增長配置
export JAVA_HOME=/opt/jdk1.8.0_131
export HBASE_MANAGES_ZK=false
複製代碼
編輯conf目錄下的regionservers
hadoop02
hadoop03
複製代碼
將配置好的hbase分別複製到另外兩臺服務器
scp -r hbase app@10.19.3.195:/usr/local/hbase
scp -r hbase app@10.19.3.196:/usr/local/hbase
複製代碼
啓動
./bin/start-hbase.sh
複製代碼
查看相關進程是否正常
[app@hadoop01 hbase]$ jps
24113 SecondaryNameNode
23878 NameNode
9398 Jps
28685 HMaster
24335 ResourceManager
[app@hadoop01 hbase]$
複製代碼
[app@hadoop02 hbase]$ jps
20049 Jps
16779 DataNode
9308 HRegionServer
16910 NodeManager
[app@hadoop02 hbase]$
複製代碼
[app@hadoop03 hbase]$ jps
20049 Jps
16779 DataNode
9308 HRegionServer
16910 NodeManager
[app@hadoop03 hbase]$
複製代碼
能夠經過訪問http://10.19.3.194:16010查看集羣信息
驗證集羣(java代碼)
引入pom依賴
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-common</artifactId>
<version>2.2.1</version>
</dependency>
複製代碼
代碼判斷是否存在表test_table
Configuration configuration = HBaseConfiguration.create();
configuration.set("hbase.zookeeper.quorum", "10.19.3.194,10.19.3.195,10.19.3.196");
configuration.set("hbase.zookeeper.property.clientPort", "2181");
Connection connection = ConnectionFactory.createConnection(configuration);
Admin admin = connection.getAdmin();
TableName tableName = TableName.valueOf("test_table");
System.out.println(admin.tableExists(tableName));
admin.close();
connection.close();
複製代碼
控制檯輸出
false
複製代碼