HBase安裝配置以及Java操做hbase

Apache HBase

  • Apache HBase™是Hadoop數據庫,是一個分佈式,可擴展的大數據存儲。
  • 當您須要對大數據進行隨機,實時讀/寫訪問時,請使用Apache HBase™。該項目的目標是託管很是大的表 - 數十億行X百萬列 - 在商品硬件集羣上。Apache HBase是一個開源的,分佈式的,版本化的非關係數據庫

特徵

  • 線性和模塊化可擴展性。
  • 嚴格一致的讀寫操做。
  • 表的自動和可配置分片
  • RegionServers之間的自動故障轉移支持。
  • 方便的基類,用於使用Apache HBase表支持Hadoop MapReduce做業。
  • 易於使用的Java API,用於客戶端訪問。
  • 阻止緩存和布隆過濾器以進行實時查詢。
  • 查詢謂詞經過服務器端過濾器下推
  • Thrift網關和REST-ful Web服務,支持XML,Protobuf和二進制數據編碼選項
  • 可擴展的基於jruby(JIRB)的外殼
  • 支持經過Hadoop指標子系統將指標導出到文件或Ganglia; 或經過JMX

安裝 獨立HBase

HBase要求安裝JDK。有關支持的JDK版本的信息 輸入圖片說明java

今後Apache下載鏡像列表中選擇一個下載站點。單擊建議的頂部連接。這將帶您進入HBase版本的鏡像。單擊名爲stable的文件夾,而後將以.tar.gz結尾的二進制文件下載到本地文件系統。暫時不要下載以src.tar.gz結尾的文件。git

解壓縮下載的文件,而後切換到新建立的目錄。spring

$ tar -xzvf hbase-1.2.6.1-bin.tar.gz

爲HBase設置Java目錄,並從conf文件夾打開hbase-env.sh文件。編輯JAVA_HOME環境變量,改變路徑到當前JAVA_HOME變量shell

#編輯/home/hbase-1.2.6.1/conf/hbase-env.sh
#配置hbase-env.sh文件:把29行的註釋取消,配置虛擬機上面的Java地址
export JAVA_HOME=/usr/local/java/jdk1.7.0_79

編輯conf/hbase-site.xml,這是主要的HBase配置文件數據庫

<configuration>
	<property>
	<!--  配置hbase存在位置-->
	    <name>hbase.rootdir</name>
	    <value>file:///home/pflm/HBase/HFiles</value>
	  </property>
	  <property>
	  	<!--  配置hbase文件保存路徑-->
	    <name>hbase.zookeeper.property.dataDir</name>
	    <value>/home/pflm/HBase/zookeeper</value>
	  </property>
</configuration>

到此 HBase 的安裝配置已成功完成。能夠經過使用 HBase 的 bin 文件夾中提供 start-hbase.sh 腳本啓動 HBasevim

$ ./bin/start-hbase.sh

運行HBase啓動腳本,它會提示一條消息:HBase has startedwindows

starting master, logging to /usr/local/HBase/bin/../logs/hbase-tpmaster-localhost.localdomain.out
  • 該./start-hbase.sh腳本是做爲啓動HBase的一種便捷方式。發出命令,若是一切順利,將在標準輸出中記錄一條消息,顯示HBase已成功啓動。您可使用該jps命令驗證是否有一個正在運行的進程HMaster。在獨立模式下,HBase運行此單個JVM中的全部守護程序,即HMaster,單個HRegionServer和ZooKeeper守護程序。轉到http:// localhost:16010以查看HBase Web UI。

HBase Shell

要訪問HBase shell,必須導航進入到HBase的主文件夾。緩存

#進入shell
/bin/hbase shell

#列出HBase的全部表。
hbase(main):001:0> list
TABLE

通用命令ruby

status: 提供HBase的狀態,例如,服務器的數量。
version: 提供正在使用HBase版本。
table_help: 表引用命令提供幫助
whoami: 提供有關用戶的信息。

HBase在表中操做的命令。服務器

create: 建立一個表。
list: 列出HBase的全部表。
disable: 禁用表。
is_disabled: 驗證表是否被禁用。
enable: 啓用一個表。
is_enabled: 驗證表是否已啓用。
describe: 提供了一個表的描述。
alter: 改變一個表。
exists: 驗證表是否存在。
drop: 從HBase中刪除表。
drop_all: 丟棄在命令中給出匹配「regex」的表

數據操縱語言

put: 把指定列在指定的行中單元格的值在一個特定的表。
get: 取行或單元格的內容。
delete: 刪除表中的單元格值。
deleteall: 刪除給定行的全部單元格。
scan: 掃描並返回表數據。
count: 計數並返回表中的行的數目。
truncate: 禁用,刪除和從新建立一個指定的表。

解決Java API不能遠程訪問HBase的問題

一、配置Linux的hostname

[root@CentOS124 hbase-1.2.6.1]# vie /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=CentOS124   #名字隨便

這裏配置的hostname要Linux重啓才生效,爲了避免重啓就生效,咱們能夠執行:hostname CentOS124命令,暫時設置hostname

二、配置Linux的hosts,映射ip的hostname的關係

#映射ip的hostname的關係
[root@CentOS124 hbase-1.2.6.1]# vim /etc/host

#查看hbase ip綁定是否成功
[root@CentOS124 hbase-1.2.6.1]# netstat -anp|grep 16010

輸入圖片說明

三、配置訪問windows的hosts

#hbase
192.168.10.124  CentOS124

Java 操做遠程hbase

public class HbaseTest {
	public static  Connection connection;
	public static Configuration configuration; 
    static { 
 
        configuration = HBaseConfiguration.create(); 
        // 設置鏈接參數:HBase數據庫使用的端口
        configuration.set("hbase.zookeeper.property.clientPort", "2181"); 
        // 設置鏈接參數:HBase數據庫所在的主機IP
        configuration.set("hbase.zookeeper.quorum", "192.168.10.124"); 
        // configuration.addResource("hbase-site.xml");
        try {
        	 // 取得一個數據庫鏈接對象
			connection = ConnectionFactory.createConnection(configuration);
		} catch (IOException e) {
			e.printStackTrace();
		}
        
    } 
    public static void main(String[] args) throws Exception {
    	createTable("gazw", "id","name");
//    	deleteTable("gazw");
	}
    
    public static void createTable(String tableName,String... cf1) throws IOException { 
    	Admin admin = connection.getAdmin();
        //HTD須要TableName類型的tableName,建立TableName類型的tableName
        TableName tbName = TableName.valueOf(tableName);
        //判斷表述否已存在,不存在則建立表
        if(admin.tableExists(tbName)){
            System.err.println("表" + tableName + "已存在!");
            return;
        }
        //經過HTableDescriptor建立一個HTableDescriptor將表的描述傳到createTable參數中
        HTableDescriptor HTD = new HTableDescriptor(tbName);
        //爲描述器添加表的詳細參數
        for(String cf : cf1){
            // 建立HColumnDescriptor對象添加表的詳細的描述
            HColumnDescriptor HCD =new HColumnDescriptor(cf);
            HTD.addFamily(HCD);
        }
        //調用createtable方法建立表
        admin.createTable(HTD);
        System.out.println("建立成功");
    } 
}

demo地址 https://gitee.com/qinxuewu/spring-cloud/tree/master/kafka-demo

相關文章
相關標籤/搜索