栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

hbase

hbase

环境安装
  1. java坏境
    centos安装java
  2. hadoop环境
    hadoop安装
  3. hbase配置
    vi /etc/profile.d/hadoop-eco.sh
    写入:
    Hbase_HOME=/opt/hbase
    PATH=$Hbase_HOME/bin:$PATH
    生效:
    source /etc/profile.d/hadoop-eco.sh
Hbase安装
  1. 下载hbase到linux
  2. hbase模式
    1. 单机模式
      创建data目录,这里放在/opt/hbase/data
      mkdir data
      进入hbase配置目录
      cd hbase/conf
      修改两个配置文件hbase-env.sh和hbase-site.xml
      hbase-env.sh
      export JAVA_HOME=/opt/jdk
      export Hbase_MANAGES_ZK=true
      
      hbase-site.xml
      
      
      
      	
      		hbase.rootdir
      		file://opt/hbase/data
      	
      	
      	
      		hbase.cluster.distributed
      		false
      	
      
      
    2. 分布式模式
      • 进入conf目录
        cd /opt/hbase/conf
      • 编辑regionservers
        vi regionservers
      • 添加从机的ip slaver1 slaver2
      • 更改hbase-site.xml文件,把hbase.cluster.distributed设置为true
      • 把hbase文件克隆到从机
      • 把/etc/profile.d/hadoop-eco.sh克隆到从机,并执行
        source /etc/profile.d/hadoop-eco.sh
运行
开启服务
start-hbase.sh
查看版本:
hbase version
jps:
能看到HMaster
web端访问:16010
Hbase shell

对hbase的表的理解,在mysql的基础上,在列的基础上多了列簇,列簇是列的集合;存储数据的数据结构是map,key是时间戳,val才是真正的值

命名空间:命名空间相当于myslq的库
  1. 创建自定义命名空间
    create_namespace 'my_ns'
  2. 显示所有命名空间
    list_namespace
  3. 更改命名空间属性
    alter_namespace 'my_ns',{METHOD=>'set','PROPERTY_NAME'=>'PROPERTY_VALUE'}
  4. 查看命名空间属性
    describe_namespace 'my_ns'
  5. 删除命名空间
    drop_namespace 'my_ns'
表操作
  1. 创建表
    create '表名称', '列簇1', '列簇2', ….'列簇n'
  2. 指定命名空间
    create 'my_ns:my_table', 'my_col1'
  3. 查看表属性
    describe 'my_ns:my_table'
  4. 启用/禁用表
    enable/disable 'my_ns:my_table'
  5. 检查表是否启用
    is_enabled 'my_ns:my_table'
  6. 改变表属性,改变my_table表列簇my_col1的版本号
    alter 'my_ns:my_table', {NAME=>'my_col1', VERSION=>5}
  7. 添加列簇,该列簇维护3个版本
    alter 'my_ns:my_table', {NAME=>'my_col3', VERSIONS=>3
  8. 删除列簇
    alter 'my_ns:my_table', {NAME=>'my_col3', METHOD=>'delete'}
  9. 删除表数据,删除前先禁用表
    truncate 'my_ns:my_table'
  10. 删除表,删除前先禁用表
    drop 'my_ns:my_table'
  11. 查看指定命名空间下的表
    list_namespace_tables 'default'
数据操作
  1. 写数据
    put '库名:表名称', 'rowkey值', '列簇:列名','值'
  2. 读数据
    get '库名:表名称', 'rowkey值'
  3. 删除整行
    deleteall '表名称', 'rowkey值'
  4. 删除指定行的指定列簇的值
    delete '表名称', 'rowkey值', '列簇'
  5. 查看所有记录
    scan '表名称'
  6. 查看某列簇所有记录
    scan '表名称', '列簇'
  7. 统计记录数
    count '表名称'
  8. 制作快照,先停用表
    snapshot 'my_ns:my_table', 'myTableSnapShot'
  9. 从快照克隆数据
    clone_snapshot 'myTableSnapShot', 'my_ns:my_new_table'
  10. 删除快照
    delete_snapshot 'myTableSnapShot'
java操作hbase
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HbaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import java.io.IOException;
public class HbaseConn {
    public static void main(String[] args) throws IOException {
        // 创建配置文件
        Configuration conf = HbaseConfiguration.create();
        // 从zookeeper的管理中调用hbase
        conf.set("hbase.zookeeper.quorum", "192.168.137.122");
        // 创建连接
        Connection conn = ConnectionFactory.createConnection(conf);
        // 获取Admin对象:可以对表进行操作
        Admin admin = conn.getAdmin();
        // 判断表是否存在,如果不存在则会创建,如果存在则删除
        // 表名: my_ns:my_054yxd
        TableName tableName = TableName.valueOf("my_ns:stu");

        if (admin.tableExists(tableName)){
            System.out.println("存在表");
            // 1.判断表是否启用
            boolean state = admin.isTableEnabled(tableName);
            System.out.println(tableName + (state?"启用":"禁用"));
            // 2.如果启用就禁用
            if (state){
                admin.disableTable(tableName);
            }
            // 3.禁用之后删除
            admin.deleteTable(tableName);
            System.out.println("删除成功");
        }else {
            System.out.println("不存在");
            // todo 不存在则创建表

            // 创建表
            TableDescriptorBuilder builder =
                    TableDescriptorBuilder.newBuilder(tableName);
            // 创建列簇
            ColumnFamilyDescriptor cfd =
                    ColumnFamilyDescriptorBuilder
                            .newBuilder("info".getBytes()).build();
            // 设置列簇
            builder.setColumnFamily(cfd);
            // 构建表结构
            TableDescriptor table = builder.build();
            // 创建
            admin.createTable(table);
            // 4.判断是否创建成功
            System.out.println(
                    admin.tableExists(tableName) ? "创建成功" : "创建失败");
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/653786.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号