大数据处理技术: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.rhkb.cn/news/430319.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++:类和对象全解

C&#xff1a;类和对象全解 一、类的定义和初始化&#xff08;一&#xff09;类的定义1、类的成员变量&#xff08;1&#xff09;成员变量&#xff08;2&#xff09;成员函数 2、实例化对象&#xff08;1&#xff09;采用普通构造函数&#xff08;2&#xff09;采用初始化列表 …

CAD的案例

在这个案例我会一步步教如何快速实现 比如我们要复刻这个图形 首先先画直线 输入L&#xff0c;然后空格&#xff0c;输入尺寸70&#xff0c;按ESC退出 到这一步画斜线&#xff0c;很简单就是直线旋转30的角度 直线教学&#xff1a; 先从右边拖到左边&#xff0c;选中这条直线…

【ShuQiHere】 探索数据挖掘的世界:从概念到应用

&#x1f310; 【ShuQiHere】 数据挖掘&#xff08;Data Mining, DM&#xff09; 是一种从大型数据集中提取有用信息的技术&#xff0c;无论是在商业分析、金融预测&#xff0c;还是医学研究中&#xff0c;数据挖掘都扮演着至关重要的角色。本文将带您深入了解数据挖掘的核心概…

中小企业体系技术抽象沉淀-异地灾备篇

IT团队内部使用工具 系列文章&#xff1a;https://blog.csdn.net/caicongyang/article/details/136857045 DDL DML管控 https://github.com/hhyo/Archery/ flyway 文档编写 wiki 技术对外输出文档推荐gitbook 同城双活数据同步方案 总览&#xff1a; vivo 系列文章&#x…

十三 系统架构设计(考点篇)

1 软件架构的概念 一个程序和计算系统软件体系结构是指系统的一个或者多个结构。结构中包括软件的构件&#xff0c;构件 的外部可见属性以及它们之间的相互关系。 体系结构并非可运行软件。确切地说&#xff0c;它是一种表达&#xff0c;使软件工程师能够&#xff1a; (1)分…

洪涝洪水滑坡灾害数据集 灾害 2300张 带标注 voc yolo

洪涝洪水滑坡灾害数据集 灾害 2300张 带标注 voc yolo 洪涝洪水滑坡灾害数据集 数据集描述 该数据集是一个专门用于检测和识别洪涝、洪水和滑坡等自然灾害的数据集&#xff0c;旨在帮助研究人员和开发者训练和评估基于深度学习的目标检测模型。数据集涵盖了两种常见的自然灾害…

8-----手机机型维修工具助手 功能较全 涵盖解锁 刷机 修复等选项 维修推荐

上图是一款功能较全的维修加密狗。目前可以无限制 任何人使用。看图片可以了解其中涵盖刷机 解锁 修复分区 查看短接图 安装驱动 修复基带等等选项。而且其中有针对各个机型型号的对应功能操作。以及一些rec5.0相关的操作选项。 通过此博文了解 ★★★★★此工具涵盖的一些…

【Java】JVM基本组成

一、JDK、JRE、JVM JDK&#xff1a;全称 “Java Development Kit” Java 开发工具包&#xff0c;提供 javac编译器、jheap、jconsole 等监控工具; JRE&#xff1a;全称 “Java Runtime Environment” Java 运行环境&#xff0c;提供 class Library 核心类库JVM; …

项目集成sharding-jdbc

目录 项目集成sharding-jdbc 1.业务分析 2.数据库构建 3.分库分表策略 项目配置默认数据源 一&#xff1a;导入sharding-jdbc依赖 二&#xff1a;在application文件中编写配置 三&#xff1a;注释掉主配置文件中配置的数据源 注意&#xff1a;这里添加了spring.main.allow…

C++之初识STL(概念)

STL&#xff08;标准模板库&#xff09; STL广义分类为&#xff1a;容器&#xff0c;算法&#xff0c;迭代器 * **容器**和**算法**之间通过**迭代器**进行无缝连接 意义&#xff1a;C的**面向对象**和**泛型编程**思想&#xff0c;目的就是**复用性的提升** STL六大组件 1. 容…

ubuntu中通过源码安装pointnet2_ops_lib

注&#xff1a;本帖所用环境为&#xff1a;ubuntu 24.04、 cuda 12.04 文章目录 1. 克隆 PointNet 源码库2. 安装依赖3. 编译 pointnet2_ops_lib4. 测试安装 1. 克隆 PointNet 源码库 首先&#xff0c;克隆 PointNet 的 GitHub 仓库&#xff1a; git clone https://github.co…

JavaEE: 深入探索TCP网络编程的奇妙世界(六)

文章目录 TCP核心机制TCP核心机制九: 面向字节流TCP核心机制十: 异常处理 小小的补充(URG 和 PSH)~TCP小结TCP/UDP 对比用UDP实现可靠传输(经典面试题) 结尾 TCP核心机制 上一篇文章JavaEE: 深入探索TCP网络编程的奇妙世界(五) 书接上文~ TCP核心机制九: 面向字节流 TCP是面…

Fyne ( go跨平台GUI )中文文档-容器和布局 (四)

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章&#xff1a; Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI…

基于Ambari搭建hadoop生态圈+Centos7安装教程V2.0优化版(本篇博客写的较为详细,可能比较多,请耐心看)

当我们学习搭建hadoop的时候&#xff0c;未免也会遇见很多繁琐的事情&#xff0c;比如很多错误&#xff0c;需要解决。在以后公司&#xff0c;也不可能让你一个一个搭建hadoop&#xff0c;成千上万的电脑&#xff0c;你再一个个搭建&#xff0c;一个个报错&#xff0c;而且每台…

初始main方法,标识符和关键字

1. 初识Java的main方法 1.1 main方法示例 public class HelloWorld{public static void main(String[] args){System.out.println("Hello,world");} }图解&#xff1a; 通过上述代码&#xff0c;我们可以看到一个完整的Java程序的结构&#xff0c;Java程序的结构…

springbootKPL比赛网上售票系统

基于springbootvue实现的KPL比赛网上售票系统 &#xff08;源码L文ppt&#xff09;4-068 4.2 系统结构设计 架构图是系统的体系结构&#xff0c;体系结构是体系结构体系的重要组成部分。KPL比赛网上售票系统的总体结构设计如图4-2所示。 图4-2 系统总体架构图 4.3数据…

python全栈学习记录(十七)logging、json与pickle、time与datatime、random

logging、json与pickle、time与datatime、random 文章目录 logging、json与pickle、time与datatime、random一、logging二.json与pickle三.time与datatime四.random 一、logging logging模块用来记录日志信息。 import logging # 进行基本的日志配置 logging.basicConfig( fi…

全面详尽的 PHP 环境搭建教程

目录 目录 PHP 环境搭建概述 在 Windows 上搭建 PHP 环境 使用集成环境 XAMPP 安装步骤 配置和测试 常用配置 手动安装 Apache、PHP 和 MySQL 安装 Apache 安装 PHP 安装 MySQL 配置 PHP 连接 MySQL 在 Linux 上搭建 PHP 环境 使用 LAMP 方案 安装 Apache 安装 …

zabbix入门单机部署

zabbix官网 1进入官网后选择右上角Download 选择你要的版本以及需要的组件&#xff0c;网页下方会自动生成需要操作的步骤 &#xff0c;跟着步骤一步一步安装即可&#xff1a; 这里跟着官网步骤一步步走下去就可以了 但是需要注意的是安装 yum install centos-release-scl源…

C++20 std::format

一、前言 1、传统 C 格式化的问题与挑战 可读性差&#xff1a;使用 C 中的 printf 和 scanf 家族函数进行格式化输出和输入时&#xff0c;它们的语法较为复杂&#xff0c;难以阅读。在较大的代码项目中&#xff0c;可读性差会导致维护困难。类型安全性差&#xff1a;printf 和…