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

  • 实验目的
  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.rhkb.cn/news/484664.html

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

相关文章

微信小程序3-显标记信息和弹框

感谢阅读,初学小白,有错指正。 一、实现功能: 在地图上添加标记点后,标记点是可以携带以下基础信息的,如标题、id、经纬度等。但是对于开发来说,这些信息还不足够,而且还要做到点击标记点时&a…

一个有意思pytorch的简单应用小实验

通过一个简单的脚本,来学习pytorch的基本应用,比如:前向传播、反向传播、学习率以及预测、模型的基本原理和套路。 得到结果。。。保存模型。。。输入参数。。。预测。。。像不像?。。。像多少?。。。 设计目标&#x…

SpringBoot 分层解耦

从没有分层思想到传统 Web 分层,再到 Spring Boot 分层架构 1. 没有分层思想 在最初的项目开发中,很多开发者并没有明确的分层思想,所有逻辑都堆砌在一个类或一个方法中。这样的开发方式通常会导致以下问题: 代码混乱&#xff1…

2024 数学建模国一经验分享

2024 数学建模国一经验分享 背景:武汉某211,专业:计算机科学 心血来潮,就从学习和组队两个方面指点下后来者,帮新人避坑吧 2024年我在数学建模比赛中获得了国一(教练说论文的分数是湖北省B组第一&#xff0…

Linux 35.6 + JetPack v5.1.4之RTP实时视频Python框架

Linux 35.6 JetPack v5.1.4之RTP实时视频Python框架 1. 源由2. 思路3. 方法论3.1 扩展思考 - 慎谋而后定3.2 扩展思考 - 拒绝拖延或犹豫3.3 扩展思考 - 哲学思考3.4 逻辑实操 - 方法论 4 准备5. 分析5.1 gst-launch-1.05.1.1 xvimagesink5.1.2 nv3dsink5.1.3 nv3dsink sync05…

渤海证券基于互联网环境的漏洞主动防护方案探索与实践

来源:中国金融电脑 作者:渤海证券股份有限公司信息技术总部 刘洋 伴随互联网业务的蓬勃发展,证券行业成为黑客进行网络攻击的重要目标之一,网络攻击的形式也变得愈发多样且复杂。网络攻击如同悬于行业之上的达摩克利斯之剑&…

隐私安全大考,Facebook 如何应对?

随着数字时代的到来和全球互联网用户的快速增长,隐私安全问题已上升为网络世界的重要议题。社交媒体巨头Facebook因其庞大的用户群体和大量的数据处理活动,成为隐私问题的聚焦点。面对隐私安全的大考,Facebook采取了一系列策略来应对这些挑战…

04 创建一个属于爬虫的主虚拟环境

文章目录 回顾conda常用指令创建一个爬虫虚拟主环境Win R 调出终端查看当前conda的虚拟环境创建 spider_base 的虚拟环境安装完成查看环境是否存在 为 pycharm 配置创建的爬虫主虚拟环境选一个盘符来存储之后学习所写的爬虫文件用 pycharm 打开创建的文件夹pycharm 配置解释器…

旅游管理系统的设计与实现

文末获取源码和万字论文,制作不易,感谢点赞支持。 毕 业 设 计(论 文) 题目:旅游管理系统的设计与实现 摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候&#…

QT 中 sqlite 数据库使用

一、前提 --pro文件添加sql模块QT core gui sql二、使用 说明 --用于与数据库建立连接QSqlDatabase--执行各种sql语句QSqlQuery--提供数据库特定的错误信息QSqlError查看qt支持的驱动 QStringList list QSqlDatabase::drivers();qDebug()<<list;连接 sqlite3 数据库 …

HENU祖传课堂测试第三弹:Java的文件输入输出

题目&#xff1a;设定文件file1内容&#xff1a;年级,班级&#xff0c;学号&#xff0c;姓名分为四行。 读取文件file1中的内容&#xff0c;若其字符<3个将其转入file2,如若是字符&#xff1e;3个转入file3 代码如下 import java.io.*; import java.nio.file.*; import j…

React Native 速度提升 550%

React Native 爱好者们!🌟 您准备好听一些激动人心的消息了吗?React Native 刚刚发布了其最大的更新之一:一种全新的架构,彻底改变了我们构建移动应用程序的方式。如果您想知道这对您的项目和开发体验意味着什么,请继续关注!我们正在深入探讨这个改变游戏规则的事物;您…

Qt中的 tableView 设置 二进制 十六进制 序号表头

二 进制序号 因为QTableView的垂直表头并不支持使用委托来自定义。 相反&#xff0c;可以通过将自定义的QWidget作为QHeaderView的标签来实现这一目标。 代码&#xff1a; #include <QApplication> #include <QMainWindow> #include <QVBoxLayout> #include …

中国移动量子云平台:算力并网590量子比特!

在技术革新的浪潮中&#xff0c;量子计算以其独特的并行处理能力和指数级增长的计算潜力&#xff0c;有望成为未来技术范式变革和颠覆式创新应用的新源泉。中国移动作为通信行业的领军企业&#xff0c;致力于量子计算技术研究&#xff0c;推动量子计算产业的跨越式发展。 量子云…

D614 PHP+MYSQL +失物招领系统网站的设计与现 源代码 配置 文档

失物招领系统 1.摘要2. 系统开发的背景和意义3.功能结构图4.界面展示5.源码获取 1.摘要 随着互联网的迅速发展&#xff0c;人们的生产生活方式逐渐发生改变&#xff0c;传统的失物招领也可以通过网络处理。本网站是基PHP技术的一款综合性较强的西南民族大学PHP失物招领系统。 …

YOLOv8实战道路裂缝缺陷识别

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对道路裂缝数据集进行训练和优化&#xff0c;该数据集包含丰富的道路裂缝图像样本…

并发编程(15)——基于同步方式的线程安全的栈和队列

文章目录 十四、day141. 线程安全的栈1.1 存在隐患的栈容器1.2 优化后的栈容器 2. 线程安全的队列2.1 基于智能指针的线程安全的队列2.2 不同互斥量管理队首、队尾的队列 十四、day14 在并发编程&#xff08;1&#xff09;并发编程&#xff08;5&#xff09;中&#xff0c;我们…

容器第五天(day042)

1.安装 yum install -y docker-compose 2.配置 配置文件名字&#xff1a;docker-compose.yaml或docker-compose.yml 3.启动 docker-compose up -d

离散数学重点复习

第一章.集合论 概念 1.集合是不能精确定义的基本数学概念.通常是由指定范围内的满足给定条件的所有对象聚集在一起构成的 2.制定范围内的每一个对象称为这个集合的元素 3.固定符号如下: N:自然数集合 Z:整数集合 Q:有理数集合 R:实数集合 C:复数集合 4.集合中的元素是…

docker学习笔记(四)--DockerFile

文章目录 一、什么是Dockerfile二、docker build命令三、dockerfile指令3.1 FROM3.2 ENV3.3 WORKDIR3.4 RUN3.5 CMD3.6 ENTRYPOINT3.7 EXPOSE3.8 ARG3.9 ADD3.10 COPY3.11 VOLUME 四、dockerfile示例 一、什么是Dockerfile Dockerfile 是用于构建 Docker 镜像的脚本文件&#…