0


大数据处理技术: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.删除表。


本文转载自: https://blog.csdn.net/cxx0316/article/details/142299262
版权归原作者 茜茜西西CeCe 所有, 如有侵权,请联系我们删除。

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

还没有评论