大数据实验E5HBase:安装配置,shell 命令和Java API使用

news2024/12/26 19:00:09

  • 实验目的
  1. 熟悉HBase操作常用的shell 命令和Java API使用;
  • 实验要求
  1. 掌握HBase的基本操作命令和函数接口的使用;
  • 实验平台
  1. 操作系统:Linux(建议Ubuntu16.04或者CentOS 7 以上);
  2. Hadoop版本:3.1.3;
  3. HBase版本:2.2.2;
  4. JDK版本:1.8;
  5. Java IDE:Eclipse。
  • 实验内容、结果及分析(直接在题目后面列出实验结果以及分析,各个小题的代码以截图方式呈现并标注重点代码,包含java代码运行成功截图

(实验代码参考网址:HBase2.2.2安装和编程实践指南_厦大数据库实验室博客)

  1. 编写Java代码完成下列题目(参考课件例子)
  1. 设计Book表(表格形式),包含basicInfo和SaleInfo两个列族,每一个列族中自定义列限定符(至少3个),自定义数据信息;

BOOK表设计

列族名称

列限定符

数据类型

描述

basicInfo

title

String

书籍标题

basicInfo

author

String

作者

basicInfo

publish_date

Date

出版日期

SaleInfo

price

Double

价格

SaleInfo

quantity

Integer

库存数量

SaleInfo

sold

Integer

销售数量

  1. 然后编写Java代码创建Book表,并在HBase shell中验证创建成功;

运行结果:

在HBase shell中验证创建成功:

  1. 编写程序插入自定义的数据信息;

运行结果:

  1. 编写程序获取指定列的数据并打印输出;

运行结果:

  1. 现有以下关系型数据库中的三个表的数据,要求:

学生表(Student)

学号(S_No)

姓名(S_Name)

性别(S_Sex)

年龄(S_Age)

2015001

Zhangsan

male

23

2015002

Mary

female

22

2015003

Lisi

male

24

课程表(Course)

课程号(C_No)

课程名(C_Name)

学分(C_Credit)

123001

Math

2.0

123002

Computer Science

5.0

123003

English

3.0

选课表(SC)

学号(SC_Sno)

课程号(SC_Cno)

成绩(SC_Score)

2015001

123001

86

2015001

123003

69

2015002

123002

77

2015002

123003

99

2015003

123001

98

2015003

123002

95

  1. 将其转换为适合于HBase存储的表,利用表格的方式绘制其存储的概念视图;

HBase表设计

列族名称

列限定符

数据类型

描述

StudentInfo

S_No

String

学号

StudentInfo

S_Name

String

姓名

StudentInfo

S_Sex

String

性别

StudentInfo

S_Age

Integer

年龄

CourseInfo

C_No

String

课程号

CourseInfo

C_Name

String

课程

CourseInfo

C_Credit

Double

学分

SC

SC_Sno

String

学号

SC

SC_Cno

String

课程号

SC

SC_Score

Integer

成绩

  1. 实现createTable(String tableName, String[] cfs)函数:创建表,参数tableName为表的名称,字符串数组cfs为存储记录各个列族名称的数组。要求当HBase中已经存在名为tableName的表的时候,先删除原有的表,然后再创建新的表;

相关代码:

执行结果:

验证:

  1. 实现addRow(String tableName, String row, String[] fields, String[] values),向表tableName中的行row(可以用学生姓名S_No表示)、指定列中添加数据;fields表示插入的数据记录对应的列名集合,其中每一个元素形式为”列族名:列限定符”;

  1. 使用上面定义的两个函数实现表的创建以及数据的添加,请思考如何实现多条数据记录的快速添加?使用尽可能少量的代码实现;
  1. 在hbase shell中验证4)中数据添加的结果;
  1. 设计modifyData(String tableName, String row, String filed, String val)函数实现指定数据的修改,其中filed形式为”列族名:列限定符”;调用该函数,将2015002 同学的S_Name和Computer Science分数分别修改为你的姓名和学号的后两位;

  1. 定义scanRow(String tableName, String row, String[] fields),查看指定列中的数据内容,并将查找的结果按下下列形式打印输出“row filed1,val1 filed2,val2 …”;其中fields表示插入的数据记录对应的列名,其中每一个元素形式为”列族名:列限定符”;调用该函数验证7)中数据是否修改成功;

运行结果

  1. 定义deleteRow(String tableName, String row)函数,删除指定行键对应的数据记录,并调用该函数删除2015001相应的数据记录,并验证删除成功;

验证:

  1. 总结HBase使用过程中的优缺点

优点:

  1. 大规模数据支持:HBase设计用于处理大量的数据,非常适合需要扩展到数千台服务器的大数据应用。
  2. 高性能:HBase提供实时读写访问,因为它存储数据在内存中,所以访问速度非常快。
  3. 列族式存储:数据按照列族进行存储,便于数据的分组和权限管理。
  4. 易于横向扩展:可以通过增加更多的服务器来扩展系统,而不需要停机。
  5. 高可用性:HBase运行在Hadoop生态系统之上,可以利用Hadoop的高可用性特性。

缺点:

  1. 学习曲线陡峭:对于新手来说,HBase的概念和API可能比较复杂,需要一定的时间来学习和理解。
  2. 有限的查询能力:HBase不支持传统的SQL查询,对于复杂的查询操作不太友好。
  3. 维护成本:HBase集群可能需要专业的维护团队来管理,尤其是在大规模部署时。
  4. 数据模型限制:HBase最适合稀疏表和多维数据模型,对于需要复杂事务处理的应用可能不太适合。
  5. 生态系统集成:与其他数据系统集成可能需要额外的工作,例如与实时处理系统或OLAP引擎的集成。

  • 实验小结(问题和收获)

问题:最初接触HBase时,它的数据模型和API让我感到困惑,尤其是列族和列限定符的概念。配置HBase集群需要对Hadoop生态系统有深入的了解,配置过程中遇到了不少问题。在实验过程中,我发现自己需要学习如何优化HBase的性能,包括内存管理、预分区和压缩策略等。在进行数据操作时,我遇到了一些错误,例如尝试删除一个不存在的行,或者在错误的列族中插入数据。

收获:

通过这次实验,我获得了使用HBase进行数据存储和查询的实际经验。更好地理解了NoSQL数据库的概念,以及它们与传统关系型数据库的区别。学会了如何设计适合HBase的数据模型,以及如何有效地存储和检索数据。在解决实验中遇到的问题时,我提高了自己的问题解决能力,学会了查阅文档和社区资源。我对Hadoop生态系统有了更全面的认识,了解了HBase在大数据处理中的作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2253421.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Tomcat搭建简易文件服务器

创建服务器 1. 复制一个tomcat服务器,并命名为file-service(好区分即可) 2.在webapp里面新建一个文件夹 uploadfiles ,用于存储上传的文件 3. 修改conf/service.xml,配置文件服务器的端口与上传文件夹的访问 在Host标签之间加入一个Context标签 docBase"uploa…

【算法】位运算合集

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 零:位运算基础公式 零:五道基础题 1:位1的个数 2:比…

【NLP高频面题 - LLM架构篇】旋转位置编码RoPE相对正弦位置编码有哪些优势?

【NLP高频面题 - LLM架构篇】旋转位置编码RoPE相对正弦位置编码有哪些优势? 重要性:⭐⭐⭐ 💯 NLP Github 项目: NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练…

《Vue零基础教程》(5)计算属性和侦听器好讲解

1 计算属性 1) 什么是计算属性 计算属性就是基于现有属性计算后的属性 2) 计算属性的作用 计算属性用于对原始数据的再次加工 3) 案例 需求 实现如下效果 使用表达式实现 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF…

Narya.ai正在寻找iOS工程师!#Mixlab内推

如果你对AI技术和iOS开发充满热情&#xff0c;这里有一个绝佳的机会加入一家专注于AI应用创新的初创公司。Narya.ai正在招聘iOS工程师&#xff0c;帮助他们开发下一代效率工具&#xff0c;旨在提升用户的日常生活效率与幸福感。 关于Narya.ai&#xff1a; 专注于AI应用层创新&a…

【开源免费】基于SpringBoot+Vue.JS课程答疑系统(JAVA毕业设计)

博主说明&#xff1a;本文项目编号 T 070 &#xff0c;文末自助获取源码 \color{red}{T070&#xff0c;文末自助获取源码} T070&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

FPGA实战篇(触摸按键控制LED灯)

1.触摸按键简介 触摸按键主要可分为四大类&#xff1a;电阻式、电容式、红外感应式以及表面声波式。根据其属性的不同&#xff0c;每种触摸按键都有其合适的使用领域。 电阻式触摸按键由多块导电薄膜按照按键的位置印制而成&#xff0c;但由于耐用性较差且维护复杂&#xff0c…

VSCode如何关闭Vite项目本地自启动

某些情况下VSCode打开Vite项目不需要自动启动&#xff0c;那么如何关闭该功能 文件>首选项>设置 搜索vite 将Vite:Auto Start 勾选取消即可

重生之我在异世界学编程之C语言:深入指针篇(上)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文&#xff08;1&#xff09;内置数…

TypeScript (一)运行环境配置,数据类型,可选类型,联合类型,type与interface,交叉类型,断言as,字面量类型,类型缩小

文章目录 一、认识TS1.1 JS 存在的问题1.2 TS的出现1.3 TS运行环境运行ts的三种方式 1.4 变量声明1.5 类型推断 二、数据类型2.1 JS数据类型(1) 数组Array(2) 对象Object(3) 其他类型 2.2 TS特有数据类型(1) any类型(2) unknown类型(3) void类型(4) never (了解)(5) tuple类型 …

【Leetcode 每日一题】3274. 检查棋盘方格颜色是否相同

问题背景 给你两个字符串 c o o r d i n a t e 1 coordinate1 coordinate1 和 c o o r d i n a t e 2 coordinate2 coordinate2&#xff0c;代表 8 8 8 \times 8 88 国际象棋棋盘上的两个方格的坐标。 以下是棋盘的参考图。 如果这两个方格颜色相同&#xff0c;返回 t …

【Dubbo03】消息队列与微服务之dubbo-admin 二进制与编译安装

实战案例&#xff1a;二进制安装 dubbo-admin 新版用Golang重构&#xff0c;提供了二进制包&#xff0c;可以直接部署 #下载二进制包 [rootubuntu2204 ~]#wget https://github.com/apache/dubbo-admin/releases/download/0.5.0/apache-dubbo-admin-0.5.0-bin-release.tar.gz …

Kylin Server V10 下 Kafka 集群部署

一、ZooKeeper 集群部署 1、主机规划 主机名 IP 地址 myid 10.8.3.35 1 10.8.3.36 2 10.8.3.37 3 2、拓扑结构 3、部署 (1) 下载Zookeeper [root@localhost ~]# cd /usr/local [root@localhost local]# wget https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-…

redis的应用----缓存

redis的应用----缓存 一、缓存的概念二、使用redis作为缓存2.1使用redis作为缓存的原因2.2缓存机制的访问步骤 三、缓存的更新策略3.1定期更新3.2实时更新3.3淘汰策略 四、缓存常见的问题4.1缓存预热(Cache preheating)4.2缓存穿透(Cache penetration)4.3缓存雪崩(Cache avalan…

用于LiDAR测量的1.58um单芯片MOPA(一)

--翻译自M. Faugeron、M. Krakowski1等人2014年的文章 1.简介 如今&#xff0c;人们对高功率半导体器件的兴趣日益浓厚&#xff0c;这些器件主要用于遥测、激光雷达系统或自由空间通信等应用。与固态激光器相比&#xff0c;半导体器件更紧凑且功耗更低&#xff0c;这在低功率供…

SpringBoot两天

SpringBoot讲义 什么是SpringBoot&#xff1f; Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。通过这种方式&#xf…

vue3项目最新eslint9+prettier+husky+stylelint+vscode配置

一、eslint9和prettier通用配置 安装必装插件 ESlint9.x pnpm add eslintlatest -DESlint配置 vue 规则 , typescript解析器 pnpm add eslint-plugin-vue typescript-eslint -DESlint配置 JavaScript 规则 pnpm add eslint/js -D配置所有全局变量 globals pnpm add globa…

LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型 Matlab代码注释清晰。 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型&#xff08;Matlab&#…

【数据集】细胞数据集:肿瘤-胎儿重编程的内皮细胞驱动肝细胞癌中的免疫抑制性巨噬细胞(Sharma等人)

引用此数据集&#xff1a; Sharma, Ankur (2020), “Onco-fetal reprogramming of endothelial cells drives immunosuppressive macrophages in Hepatocellular Carcinoma (Sharma et al)”, Mendeley Data, V1, doi: 10.17632/6wmzcskt6k.1 下载地址&#xff1a;Onco-feta…

A30 PHP+MYSQL+LW+工厂库存仓储订单销售后台管理系统的设计与实现 源代码 配置 文档

工厂库存仓储订单销售管理系统 1.摘要2.开发目的和意义3.系统功能设计4.数据库设计5.系统界面截图6.源码获取 1.摘要 互联网给人们生活带来了极大的转变&#xff0c;现代化、信息化管理系统也成为企业管理的必要手段。电子信息化服务模式&#xff0c;一切以信息化手段来处理和…