1.   Hbase安装(单机linux版数据库)
1.1环境说明
Centos Linux系统环境(文档以linux系统使用安装为主)
1.2  安装
1.2.1系统设置说明
1. 开放linux服务器端口:sudo vi /etc/sysconfig/iptables
HBASE 单机搭建
2.     添加hosts文件
> Sudo vi /etc/hosts
HBASE 单机搭建
3. 安装jdk环境(1.7及以上版本)
 
1.2.2下载安装
1、下载
HBASE 单机搭建
  1. 解压文件
>tar –zxvf hbase-0.98.23-hadoop2-bin.tar.gz #解压文件
HBASE 单机搭建
3、修改hbase配置文件
> Vi /home/hadoop/server/hbase-1.2.4/conf/hbase-site.xml
HBASE 单机搭建
4、启动hbase数据库
> /home/hadoop/server/hbase-1.2.4/bin/start-hbase.sh
验证是否启动成功: 在客户端端使用浏览器访问
HBASE 单机搭建
1.3操作数据库
1.3.1 shell操作数据库
HBASE 单机搭建
1.3.2 java api操作数据库
1. 添加maven依赖
<dependency>
  <groupId>org.apache.hbase</groupId>
  <artifactId>hbase-client</artifactId>
  <version>1.2.4</version>
</dependency>
2. 执行下列示例创建表代码
import com.alibaba.fastjson.JSON;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;

import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
/**
 * Created by songsj on 2016/11/16.
 */
public class HBase {
    public static void main(String[] args){
        HBaseDB hbase = new HBaseDB();
        /*创建表*/
        hbase.createTable("shopping");
        /*删除表*/
        hbase.dropTable("shopping");
        /*insert*/
        Map<String,String> shop = new HashMap<String,String>();
        shop.put("shopmanager.admin","leige");
        shop.put("shopmanager.manager","xiaoshaoAndGangge");
        shop.put("shopmanager.saler","SongsongAndme");
        hbase.insert("shopping","LaTiaoWo",shop);
        /*update*/
        hbase.update("shopping","LaTiaoWo");
        /*select*/
        hbase.select("shopping","LaTiaoWo","shopmanager","admin");
        /*delete*/
        hbase.delete("shopping","LaTiaoWo","shopmanager","admin");
    }
}

class HBaseDB{
    private static Logger HbaseLog = Logger.getLogger("HBaseDB.class");
    private Admin admin;
    private Connection connection;
    private Configuration configuration;

    /**
     * 初始化配置数据
     */
    HBaseDB(){
        configuration = HBaseConfiguration.create();
        configuration.set("hbase.zookeeper.property.clientPort", "2181");
        configuration.set("hbase.zookeeper.quorum", "192.168.0.241");
    }
    /**
     * create shopping
     * @param tableName
     */
    public void createTable(String tableName) {
        HbaseLog.info("************ 开始创建【 " + tableName + " 】表***********");
        try{
            /*创建数据库连接*/
            this.openConnect();
            /* 判断表是否存在 */
            if (!admin.isTableAvailable(TableName.valueOf(tableName))) {
                /*表对象*/
                HTableDescriptor hbaseTable = new HTableDescriptor(TableName.valueOf(tableName));
                /*添加列簇*/
                hbaseTable.addFamily(new HColumnDescriptor("shopmanager"));
                hbaseTable.addFamily(new HColumnDescriptor("shopdescribe"));
                hbaseTable.addFamily(new HColumnDescriptor("shopprovider"));
                admin.createTable(hbaseTable);
                HbaseLog.info("************ 表创建完成 ***********");
            }else{
                HbaseLog.info("** 表已存在!!! **");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            /*关闭数据库连接*/
            this.closeConnect();
        }
    }
    /**
     * delete shopping
     * @param tableName
     */
    public void dropTable(String tableName) {
        HbaseLog.info("************ 开始删除【 " + tableName + " 】表***********");
        try{
            this.openConnect();
            /* 判断表是否存在 */
            if (admin.isTableAvailable(TableName.valueOf(tableName))) {
                /*将表设置为不可用*/
                admin.disableTable( TableName.valueOf(tableName) );
                /*删除表*/
                admin.deleteTable(TableName.valueOf(tableName));
                HbaseLog.info("************ 表已删除 ***********");
            }else{
                HbaseLog.info("***** 表不存在!!! *****");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            this.closeConnect();
        }
    }
    /**
     * insert shopping 数据
     * @param tableName 表名
     * @param rowkey 行数据id
     * @param data 变更数据
     */
    public void insert(String tableName,String rowkey,Map<String,String> data) {
        HbaseLog.info("************ 开始insert/update " + tableName + " 】表***********");
        try {
            if(!data.isEmpty()){
                this.openConnect();
                /*获取shopping表对象*/
                Table table = connection.getTable(TableName.valueOf( tableName ));
                /*添加行id*/
                Put shop = new Put(Bytes.toBytes(rowkey));
                String[] columns = null;
                /**添加列簇,列,列对应的值
                 * columns[0]:family
                 * columns[1]:column
                 */
                for(Map.Entry<String,String> entry:data.entrySet()){
                    columns = entry.getKey().split("\\.");
                    shop.addColumn(Bytes.toBytes(columns[0]), Bytes.toBytes(columns[1]), Bytes.toBytes(entry.getValue()));
                }
                /*向表中添加值*/
                table.put(shop);
                HbaseLog.info("************ insert/update " + tableName + " 】表完成***********");
            }else{
                HbaseLog.info("************ insert/update数据为空***********");
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            this.closeConnect();
        }
    }
    /**
     * select数据
     * @param tableName 表名
     * @param rowKey id
     * @param family 列簇
     * @param coumln
     */
    public void select(String tableName,String rowKey,String family,String coumln){
        HbaseLog.info("************ 开始select " + tableName + " 】表,【 "+rowKey+" 】列***********");
        try {
            this.openConnect();
            /*获取表对象*/
            Table table = connection.getTable(TableName.valueOf( tableName ));
            /*根据rowkey获取行数据*/
            Get g = new Get(Bytes.toBytes(rowKey));
            Result shop = table.get(g);
            /*获取行数据列簇中的列值*/
            byte[] value = shop.getValue(Bytes.toBytes(family),Bytes.toBytes(coumln));
            HbaseLog.info("******** select数据 *********: " + Bytes.toString(value) +" ");
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            this.closeConnect();
        }
    }
    /**
     * update shopping表 数据
     * @param tableName
     */
    public void update(String tableName,String rowkey){
        /* 更新的数据内容 */
        Map<String,String> updateData = new HashMap<String,String>();
        updateData.put("shopmanager.admin","leige");
        updateData.put("shopmanager.manager","xiaoshaoAndGangge");
        updateData.put("shopmanager.saler","SongsongAndme");
        /* 数据更新即将原数据重新insert */
        insert(tableName,rowkey,updateData);
    }
    /**
     * delete shopping表 数据
     * @param tableName 表名
     * @param rowkey id
     * @param family 列簇
     * @param coumln
     */
    public void delete(String tableName, String rowkey,String family,String coumln)  {
        /*
         *参数例子
         * rowkey = shopmanager
         * tableName = shopping
         */
        HbaseLog.info("************ 开始delete " +tableName+ " 】表,【 "+rowkey+" 】列***********");
        try {
            this.openConnect();
            /*创建表对象*/
            Table table = connection.getTable(TableName.valueOf( tableName ));
            /*创建delete对象*/
            Delete shop = new Delete(Bytes.toBytes(rowkey));
            /*添加要操作的列*/
            shop.addColumn(Bytes.toBytes(family), Bytes.toBytes(coumln));
            /*删除数据操作*/
            table.delete(shop);
            HbaseLog.info("************ 删除【 " +tableName+ " 】表完成***********");
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            this.closeConnect();
        }
    }
    /**
     * 创建数据库连接
     */
    public void openConnect(){
        try {
            connection = ConnectionFactory.createConnection(configuration);
            admin = connection.getAdmin();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    /**
     * 关闭数据库连接
     */
    public void closeConnect(){
        try {
            if (admin != null) {
                admin.close();
            }
            if (connection != null && !connection.isClosed()) {
                connection.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
3. 执行后使用shell验证
HBASE 单机搭建

相关文章:

  • 2022-12-23
  • 2021-12-08
  • 2022-02-08
  • 2022-01-19
  • 2021-05-24
  • 2021-06-04
  • 2022-02-27
  • 2022-12-23
猜你喜欢
  • 2021-08-10
  • 2021-08-15
  • 2021-09-17
  • 2022-01-17
  • 2022-01-29
  • 2022-12-23
相关资源
相似解决方案