当前位置: 首页 > article >正文

大数据处理技术:HBase的安装与基本操作

目录

1 实验名称

2 实验目的

3 实验内容

4 实验原理

5 实验过程或源代码

5.1 Hbase数据库的安装

5.2 创建表

5.3 添加数据、删除数据、删除表

5.4 使用Java操作HBase

6 实验结果

6.1 Hbase数据库的安装

6.2 创建表

6.3 添加数据、删除数据、删除表

6.4 使用Java操作Hbase


1 实验名称

       HBase的安装与基本操作

2 实验目的

       1. 了解HBase 的概述及历史,理解HBase 的数据模型,理解HBase 的系统架构,学会HBase 的环境部署

       2、了解HBase 的数据模型和基本操作。

3 实验内容

       (1)Hbase数据库的安装

       (2)创建表

       (3)添加数据、删除数据、删除表

       (4)使用Java操作HBase

4 实验原理

       Hbase是一个高可靠、高性能、面向列、可伸缩的分布式存储系统,利用Hbase技术可在廉价的PC Server上搭建大规模结构化存储集群。HBase以表的形式存储数据,数据模型如下图HBase数据模型所示。表中的数据划分为多个Region,并由Master分配给对应的RegionServer进行管理。

       Hbase是一个分布式的、面向列的开源数据库,它不同于一般的关系数据库,是一个适合于非结构化数据存储的数据库。另一个不同的是Hbase基于列的而不是基于行的模式。Hbase使用和 BigTable非常相同的数据模型。用户存储数据行在一个表里。一个数据行拥有一个可选择的键和任意数量的列,一个或多个列组成一个ColumnFamily,一个Fmaily下的列位于一个HFile中,易于缓存数据。表是疏松的存储的,因此用户可以给行定义各种不同的列。在Hbase中数据按主键排序,同时表按主键划分为多个Region。每个Region包含了表中一段RowKey区间范围内的数据,HBase的一张数据表开始只包含一个Region,随着表中数据的增多,当一个Region的大小达到容量上限后会分裂成两个Region。您可以在创建表时定义Region的RowKey区间,或者在配置文件中定义Region的大小。

5 实验过程或源代码

5.1 Hbase数据库的安装

       1.将HBase解压到/app目录下:

mkdir /app
cd /opt
tar -zxvf hbase-2.1.1-bin.tar.gz -C /app

       2.配置JDK的路径,将JDK的路径配置到conf/下的hbase-env.sh中。输入echo $JAVA_HOME来复制JAVA_HOME的路径,编辑HBaseconf目录下的hbase-env.sh文件,将其中的JAVA_HOME指向到Java的安装目录,最后保存设置。

       3. 编辑hbase-site.xml文件,在<configuration>标签中添加如下内容:

 <configuration>
  <property>
       <name>hbase.rootdir</name>
       <value>file:///root/data/hbase/data</value>
  </property>
  <property>
       <name>hbase.zookeeper.property.dataDir</name>
       <value>/root/data/hbase/zookeeper</value>
  </property>
  <property>     
  <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
  </property>
</configuration>

       4.将Hbase的bin目录配置到/etc/profile中:vim /etc/profile,在etc/profile的文件末尾添加如下内容:

# SET HBASE_enviroment 
HBASE_HOME=/app/hbase-2.1.1
export PATH=$PATH:$HBASE_HOME/bin

       5.使刚刚的配置生效:source /etc/profile,输入命令start-dfs.sh来启动Hadoop,输入jps查看是否启动成功,接着我们输入start-hbase.sh来启动HBase,同样输入jps查看是否启动成功。

5.2 创建表

       1.启动HBase,输入hbase shell进入到Hbase shell命令行窗口;新建一个名为test的表:create 'test','data',继续在HBase中创建两张表,表名分别为:dept,emp,列都为:data,命令行:create 'dept','data'  create 'emp','data'。

       2.创建完毕,保存评测。

5.3 添加数据、删除数据、删除表

       1.启动HBase,输入hbase shell进入到Hbase shell命令行窗口。

       2.在HBase中创建表mytable,列为data,并在列族data中添加三行数据:

行号分别为:row1,row2,row3;

列名分别为:data:1,data:2,data:3;

值分别为:zhangsan,zhangsanfeng,zhangwuji。

5.4 使用Java操作HBase

       1.使用Java代码在HBase中创建表。命令行start-dfs.sh   start-hbase.sh。代码实现如下:

Configuration config = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象
Connection connection = ConnectionFactory.createConnection(config); //config为前文的配置对象
Admin admin = connection.getAdmin(); //使用连接对象获取Admin对象
TableName tableName = TableName.valueOf("dept");//定义表名
//TableDescriptor对象通过TableDescriptorBuilder构建;
TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);
ColumnFamilyDescriptor family = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes ("data")).build();//构建列族对象
tableDescriptor.setColumnFamily(family);//设置列族
admin.createTable(tableDescriptor.build());//创建表
tableName = TableName.valueOf("emp");//定义表名
//TableDescriptor对象通过TableDescriptorBuilder构建;
tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);
family = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data")).build();//构建列族对象
tableDescriptor.setColumnFamily(family);//设置列族
admin.createTable(tableDescriptor.build());//创建表

       2.使用Java代码向HBase集群中创建表并添加数据。代码实现如下:

Configuration config = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象
        Connection connection = ConnectionFactory.createConnection(config); //config为前文的配置对象
		Admin admin = connection.getAdmin(); //使用连接对象获取Admin对象
        TableName tableName = TableName.valueOf("tb_step2");//定义表名
//TableDescriptor对象通过TableDescriptorBuilder构建;
        TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);
        ColumnFamilyDescriptor family = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data")).build();//构建列族对象
        tableDescriptor.setColumnFamily(family);//设置列族
        admin.createTable(tableDescriptor.build());//创建表
        Table table = connection.getTable(tableName);//获取Table对象
        try {
            byte[] row = Bytes.toBytes("row1");    //定义行
            Put put = new Put(row);                //创建Put对象
            byte[] columnFamily = Bytes.toBytes("data");    //列簇
            byte[] qualifier = Bytes.toBytes(String.valueOf(1)); //列
            byte[] value = Bytes.toBytes("张三丰");    //值
            put.addColumn(columnFamily, qualifier, value);
            table.put(put);        //向表中添加数据
            row = Bytes.toBytes("row2");    //定义行
            put = new Put(row);                //创建Put对象
            columnFamily = Bytes.toBytes("data");    //列簇
            qualifier = Bytes.toBytes(String.valueOf(2)); //列
            value = Bytes.toBytes("张无忌");    //值
            put.addColumn(columnFamily, qualifier, value);
            table.put(put);        //向表中添加数据
        } finally {
            //使用完了要释放资源
            table.close();
        }

       3.获取HBase中已存在表的数据并输出。代码实现如下:

Configuration config = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象
        Connection connection = ConnectionFactory.createConnection(config); //config为前文的配置对象
		Admin admin = connection.getAdmin(); //使用连接对象获取Admin对象
        TableName tableName = TableName.valueOf("t_step3");//定义表名
        Table table = connection.getTable(tableName);//获取Table对象
        //获取数据
        Get get = new Get(Bytes.toBytes("row1"));    //定义get对象
        Result result = table.get(get);            //通过table对象获取数据
        // System.out.println("Result: " + result);
        //很多时候我们只需要获取“值” 这里表示获取 data:1 列族的值
        byte[] valueBytes = result.getValue(Bytes.toBytes("data"), Bytes.toBytes("1")); //获取到的是字节数组
        //将字节转成字符串
        String valueStr = new String(valueBytes,"utf-8");
        System.out.println("value:" + valueStr);
        tableName = TableName.valueOf("table_step3");//定义表名
        table = connection.getTable(tableName);//获取Table对象
        Scan scan = new Scan();
        ResultScanner scanner = table.getScanner(scan);
        try {
            for (Result scannerResult: scanner) {
                // System.out.println("Scan: " + scannerResult);
                byte[] row = scannerResult.getRow();
                System.out.println("rowName:" + new String(row,"utf-8"));
            }
        } finally {
            scanner.close();
        }

       4.删除表。代码实现如下:

Configuration config = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象
        Connection connection = ConnectionFactory.createConnection(config); //config为前文的配置对象
		Admin admin = connection.getAdmin(); //使用连接对象获取Admin对象     
		TableName tableName = TableName.valueOf("t_step4");
        admin.disableTable(tableName);    //禁用表
        admin.deleteTable(tableName);    //删除表

6 实验结果

6.1 Hbase数据库的安装

       1.复制JAVA_HOME的路径

       2.编辑HBaseconf目录下的hbase-env.sh文件

       3.etc/profile的文件末尾添加内容

       4.启动成功

6.2 创建表

       1.Hbase shell命令行窗口

       2.成功新建一个名为test的表

       3.余下两张表创建成功

6.3 添加数据、删除数据、删除表

       1.创建表mytable

6.4 使用Java操作Hbase

       1.使用Java代码在HBase中创建表。

       2.使用Java代码向HBase集群中创建表并添加数据。

       3.获取HBase中已存在表的数据

       4.删除表。


http://www.kler.cn/a/316393.html

相关文章:

  • 华为云前台用户可挂载数据盘和系统盘是怎么做到的?
  • 贪心算法day03(最长递增序列问题)
  • Postman上传图片如何处理
  • 利用滑动窗口解题
  • 【C++】new操作符的使用说明
  • springboot 之 整合springdoc2.6 (swagger 3)
  • python画正方形、平行四边形、六边形、五角星、风车(四个半圆)
  • ansible远程自动化运维、常用模块详解
  • SpringSecurity -- 入门使用
  • 网络安全-利用 Apache Mod CGI
  • antd table 可展开行的多种控制
  • 相亲交易系统源码详解与开发指南
  • 2024年华为杯数学建模E题-高速公路应急车道启用建模-基于YOLO8的数据处理代码参考(无偿分享)
  • 大厂面试真题:如何保证Kafka的消息不被重复消费
  • Laravel接口中实现WebSocket服务消息发送PHP中使用socket扩展搭建WebSocket服务
  • 网站自动识别使用设备
  • React 知识框架
  • SIP信令的基本流程
  • Android架构组件: MVVM模式的实战应用与数据绑定技巧
  • 低空经济刚需篇:各种道路不畅地区无人机吊装详解
  • Stable Diffusion 优秀博客转载
  • 【方案】智慧消防建设规划方案(PPT)
  • 富格林:积攒经验阻挠欺诈套路
  • 公用代码片码抽取需要不断的强化代码复用意识
  • 【高效且应用广泛的排序 —— 快速排序算法】
  • 如何让程序等待输入