一、实验目的二、实验内容

  1.掌握HBase操作常用Shell命令;

  2.掌握HBase数据表的创建、添加数据、查看数据、删除数据、删除表、查询历史数据等操作;

  3.掌握HBase APIs编程实践方法

  第1题 HBase 练习

  【实验内容】

  1.实现HBase的配置并完成http://dblab.xmu.edu.cn/blog/install-hbase/上的javac程序练习。

  1、切换到/usr/local/hbase目录并编辑/.bashrc文件(在/.bashrc文件中export PATH这行追加/usr/local/hbase/bin)

  hbase数据库_实验目的_hbase数据库

  2、编辑完成后,再执行source命令使上述配置在当前终端立即生效

  hbase数据库_实验目的_hbase数据库_02

  3、添加HBase权限(将hbase下的所有文件的所有者改为hadoop,hadoop是当前用户的用户名)

  hbase数据库_实验目的_hbase数据库_03

  4、 查看HBase版本,确定hbase安装成功(看到以下输出消息表示HBase已经安装成功)

  hbase数据库_实验目的_hbase数据库_04

  5、用vi命令打开并编辑hbase-env.sh

  hbase数据库_实验目的_hbase数据库_05

  配置JAVA环境变量如图,配置HBASE_MANAGES_ZK为true,表示由hbase自己管理zookeeper,不需要单独的zookeeper

  hbase数据库_实验目的_hbase数据库_06

  6、打开并编辑hbase-site.xml

  hbase数据库_实验目的_hbase数据库_07

  在启动HBase前需要设置属性hbase.rootdir,用于指定HBase数据的存储位置(以防每次重启系统都会丢失数据)

  hbase数据库_实验目的_hbase数据库_08

  7、测试运行(首先切换目录至HBase安装目录/usr/local/hbase;再启动HBase)

  hbase数据库_实验目的_hbase数据库_09

  8、打开shell命令行模式(用户可以通过输入shell命令操作HBase数据库)

  hbase数据库_实验目的_hbase数据库_10

  9、退出shell命令行模式,停止HBase运行

  hbase数据库_实验目的_hbase数据库_11

  10、配置/usr/local/hbase/conf/hbase-env.sh

  hbase数据库_实验目的_hbase数据库_12

  配置JAVA_HOME,HBASE_CLASSPATH,HBASE_MANAGES_ZK.

  HBASE_CLASSPATH设置为本机Hadoop安装目录下的conf目录(即/usr/local/hadoop/conf)

  hbase数据库_实验目的_hbase数据库_13

  11、用命令vi打开并编辑hbase-site.xml

  hbase数据库_实验目的_hbase数据库_14

  hbase.rootdir指定HBase的存储目录;hbase.cluster.distributed设置集群处于分布式模式

  hbase数据库_实验目的_hbase数据库_15

  12、登陆ssh,切换目录至/usr/local/hadoop ,启动hadoop

  hbase数据库_实验目的_hbase数据库_16

  13、命令jps(能看到NameNode,DataNode和SecondaryNameNode都已经成功启动,表示hadoop启动成功)

  hbase数据库_实验目的_hbase数据库_17

  14、切换目录至/usr/local/hbase,启动HBase(输入命令jps,看到以下界面说明hbase启动成功)

  hbase数据库_实验目的_hbase数据库_18

  15、进入shell界面

  hbase数据库_实验目的_hbase数据库_19

  16、退出shell界面,停止HBase运行

  hbase数据库_实验目的_hbase数据库_20

  编程实践

  1、HBase中用create命令创建表

  hbase数据库_实验目的_hbase数据库_21

  2、通过describe命令查看“student”表的基本信息

  hbase数据库_实验目的_hbase数据库_22

  3、添加数据( 当运行命令:put ‘student’,’95001’,’Sname’,’LiYing’时,即为student表添加了学号为95001,名字为LiYing的一行数据,其行键为95001 )

  hbase数据库_实验目的_hbase数据库_23

  4、为95001行下的course列族的math列添加了一个数据

  hbase数据库_实验目的_hbase数据库_24

  5、为95001行下的course列族的Sage列添加了一个数据

  hbase数据库_实验目的_hbase数据库_25

  6、为95001行下的course列族的Sdept列添加了一个数据

  hbase数据库_实验目的_hbase数据库_26

  7、删除数据,删除了student表中95001行下的Ssex列的所有数据

  hbase数据库_实验目的_hbase数据库_27

  8、get命令,(用于查看某一行数据,返回的是‘student’表‘95001’行的数据)

  hbase数据库_实验目的_hbase数据库_28

  9、scan命令(用于查看某个表的全部数据)

  hbase数据库_实验目的_hbase数据库_29

  10、删除student表中的95001行的全部数据

  hbase数据库_实验目的_hbase数据库_30

  11、删除表有两步,第一步先让该表不可用,第二步删除表

  hbase数据库_实验目的_hbase数据库_31

  12、在创建表的时候,指定保存的版本数(假设指定为5)

  hbase数据库_实验目的_hbase数据库_32

  13、put命令,插入数据然后更新数据,使其产生历史版本数据

  hbase数据库_实验目的_hbase数据库_33

  14、询时,指定查询的历史版本数。默认会查询出最新的数据。(有效取值为1到5)

  hbase数据库_实验目的_hbase数据库_34

  15、Eclipse编写java程序,来对HBase数据库进行增删改查等操作

  ExampleForHbase类代码如下

  编程实例代码运行结果

  hbase数据库_实验目的_hbase数据库_35

  执行完插入数据后,在shell界面中执行scan ‘Score’

  hbase数据库_实验目的_hbase数据库_36

  第2题. HBase Shell数据库表创建

  【实验内容】

  根据以下关系型数据库表,使用HBase Shell设计并创建适宜的HBase数据表。

  hbase数据库_实验目的_hbase数据库_37

  1、启动hadoop、hbase

  hbase数据库_实验目的_hbase数据库_38

  2、进入hbase的shell界面

  hbase数据库_实验目的_hbase数据库_39

  3、创建表格“Student”

  hbase数据库_实验目的_hbase数据库_40

  4、创建表格“Score”和“SC”

  hbase数据库_实验目的_hbase数据库_41

  5、查看已有的表格

  hbase数据库_实验目的_hbase数据库_42

  6、给“Student”表学号为“2020001”添加姓名、性别、年龄

  hbase数据库_实验目的_hbase数据库_43

  7、给“Student”表学号为“2020003”添加姓名、性别、年龄

  hbase数据库_实验目的_hbase数据库_44

  8、给“Student”表学号为“2020005”添加姓名、性别、年龄

  hbase数据库_实验目的_hbase数据库_45

  9、scan命令查看“Student”表格信息

  hbase数据库_实验目的_hbase数据库_46

  10、给“Course”表学号为“123001、123002、123003”分别添加对应的课程名称

  hbase数据库_实验目的_hbase数据库_47

  11、给“Course”表学号为“123001、123002、123003”添加学分

  hbase数据库_实验目的_hbase数据库_48

  12、查看“Course”表格的全部数据

  hbase数据库_实验目的_hbase数据库_49

  13、向学生表添加课程列族

  hbase数据库_实验目的_hbase数据库_50

  14、scan命令查看“Student”表格信息

  hbase数据库_实验目的_hbase数据库_51

  第3题 HBase Shell数据访问操作

  【实验内容】

  (1)使用HBase Shell命令向第1题所构建的HBase数据表中添加适宜数据;

  (2)使用HBase Shell命令从第1题所构建的HBase数据表中查询出数据;

  (3)使用HBase Shell命令从第1题所构建的HBase数据表中删除任一数据;

  (4)使用HBase Shell命令统计第1题所构建的HBase数据表的行数。

  【实验过程】(步骤、记录、数据、程序等)

  请提供相应Shell操作命令或相应Shell界面截图证明。

  1、在“Student”添加数据

  hbase数据库_实验目的_hbase数据库_52

  2、查询出数据

  hbase数据库_实验目的_hbase数据库_53

  3、删除任一数据

  hbase数据库_实验目的_hbase数据库_54

  4、统计“Student”表的行数

  hbase数据库_实验目的_hbase数据库_55

  第4题 HBase Java API编程

  【实验内容】

  根据第1,2题所建立的表,请编程完成以下指定功能:

  (1)createTable(String tableName, String[] fields)

  创建表,参数tableName为表的名称,字符串数组fields为存储记录各个域名称的数组。要求当HBase已经存在名为tableName的表的时候,先删除原有的表,然后再创建新的表。

  (2)addRecord(String tableName, String row, String[] fields, String[] values)

  向表tableName、行row(用S_Name表示)和字符串数组files指定的单元格中添加对应的数据values。其中fields中每个元素如果对应的列族下还有相应的列限定符的话,用“columnFamily:column”表示。例如,同时向“Math”、“Computer Science”、“English”三列添加成绩时,字符串数组fields为{“Score:Math”,”Score;Computer Science”,”Score:English”},数组values存储这三门课的成绩。

  (3)scanColumn(String tableName, String column)

  浏览表tableName某一列的数据,如果某一行记录中该列数据不存在,则返回null。要求当参数column为某一列族名称时,如果底下有若干个列限定符,则要列出每个列限定符代表的列的数据;当参数column为某一列具体名称(例如“Score:Math”)时,只需要列出该列的数据。

  (4)modifyData(String tableName, String row, String column)

  修改表tableName,行row(可以用学生姓名S_Name表示),列column指定的单元格的数据。

  (5)deleteRow(String tableName, String row)

  删除表tableName中row指定的行的记录。

  1、创建java工程

  hbase数据库_实验目的_hbase数据库_56

  2、菜单函数,java程序代码如下

  HBaseModifyStudent类代码如下

  hbase数据库_实验目的_hbase数据库_57

  3、连接和关闭Hbase数据库的JAVA代码

  HBaseStudentOperation类代码如下

  hbase数据库_实验目的_hbase数据库_58

  hbase数据库_实验目的_hbase数据库_59

  4、创建学生信息表

  hbase数据库_实验目的_hbase数据库_60

  hbase数据库_实验目的_hbase数据库_61

  5、添加学生选课信息

  hbase数据库_实验目的_hbase数据库_62

  6、浏览学生选课信息表

  hbase数据库_实验目的_hbase数据库_63

  7、修改学生选课信息

  hbase数据库_实验目的_hbase数据库_64

  hbase数据库_实验目的_hbase数据库_65

  8、删除学生选课信息

  hbase数据库_实验目的_hbase数据库_66

  运行结果如下

  选择1,创建学生选课表

  hbase数据库_实验目的_hbase数据库_67

  再次创建,提示该表已经存在

  hbase数据库_实验目的_hbase数据库_68

  选择2,学生Zhangsan选课信息的录入

  hbase数据库_实验目的_hbase数据库_69

  Scan命令,查看插入成功的结果

  hbase数据库_实验目的_hbase数据库_70

  选择3,进行学生Zhangsan数学课程信息的查询,结果如下

  hbase数据库_实验目的_hbase数据库_71

  选择4,进行学生Zhangsan数学成绩的修改

  hbase数据库_实验目的_hbase数据库_72

  Scan命令查询结果(之前是86分,现在89分)

  hbase数据库_实验目的_hbase数据库_73

  选择5,进行学生Zhangsan一行的信息的删除

  hbase数据库_实验目的_hbase数据库_74

  Scan命令查询结果(可见,zhangshan的信息已经被全部删除)

  hbase数据库_实验目的_hbase数据库_75

  做到这里,本次HBase分布式数据库操作与编程基本完成,过程截图不清楚或有问题的可以给我评论或私信,命令行代码希望自己敲,可以加深理解,加油!

  hbase数据库_实验目的_hbase数据库_76