实验八 Hbase 入门

本文是关于HBase的入门实验,旨在理解HBase在Hadoop架构中的作用,熟悉HBase Shell操作。实验包括:安装HBase,配置环境变量,设置HBase数据存储位置,启动Hadoop和HBase,以及使用HBase Shell创建和操作表格。通过实例展示了如何将结构化数据导入HBase,并对比了HBase与关系型数据库的区别。

实验八 Hbase 入门

  • 实验目的
  1. 理解HBase在Hadoop体系结构中的角色。
  2. 熟练使用HBase操作常用的Shell命令。
  • 实验环境

与实验五一致https://mp.csdn.net/editor/html/116616391,其他命令可参考实验六:https://mp.csdn.net/editor/html/116618050实验七https://mp.csdn.net/editor/html/116618050
实验十:https://mp.csdn.net/editor/html/116618915

  • 试验内容

按要求完成问题:

  1. 假定MySQL里有member表,要求使用Hbase的Shell接口,在Hbase中新建并存储此表。

    身份ID

    姓名

    性别

    年龄

    班级

    C++成绩

    操作系统成绩

    201401

    王辉

    21

    计算机14-2

    85

    60

    201402

    王丽

    22

    计算机15-2

    80

    80

    201403

    郭涛

    23

    计算机16-2

    75

    90

  2. 实验步骤
  3. HBase是一个分布式的、面向列的开源数据库,源于Google的一篇论文《BigTable:一个结构化数据的分布式存储系统》。HBase以表的形式存储数据,表有行和列组成,列划分为若干个列族/列簇(column family)。欲了解HBase的官方资讯,请访问HBase官方网站。

    HBase的运行有三种模式:单机模式、伪分布式模式、分布式模式。

    单机模式:在一台计算机上安装和使用HBase,不涉及数据的分布式存储;伪分布式模式:在一台计算机上模拟一个小的集群;分布式模式:使用多台计算机实现物理意义上的分布式存储。这里出于学习目的,我们只重点讨论单机模式。

     

  4. HBase安装
  5. 1)下载Hbase

    http://archive.apache.org/dist/hbase/1.2.6/ base-1.2.6-bin.tar.gz

    下载对应hadoop

    https://archive.apache.org/dist/hadoop/common/

    Hadoop与Hbase对应版本关系:(此实验环境选择hadoop 2.7.1 ,Hbase 2.0.0)

     

  6. 解压安装包hbase-2.0.0-bin.tar.gz至路径 /usr/local。
  7. sudo tar -zxvf  hbase-2.0.0-bin.tar.gz -C /usr/local
    解压缩完毕:

     

  8. 将解压的文件名hbase-2.0.0改为hbase,以方便使用,命令如下
  9. sudo mv /usr/local/hbase-2.0.0 /usr/local/hbase

  10. 配置环境变量
  11. 将hbase下的bin目录添加到path中,这样,启动hbase就无需到/usr/local/hbase目录下,大大的方便了hbase的使用。编辑~/.bashrc文件,命令是:

    vi ~/.bashrc

    如果没有引入过PATH请在~/.bashrc文件尾行添加如下内容:

    export PATH=$PATH:/usr/local/hbase/bin

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

    source ~/.bashrc

  12. 添加HBase权限
  13. cd /usr/local

    sudo chown -R hadoop ./hbase       #将hbase下的所有文件的所有者改为hadoop,hadoop是当前用户的用户名。

  14. 查看HBase版本,确定hbase安装成功,命令如下:
  15. /usr/local/hbase/bin/hbase version
    改名:方便后续操作、配置环境变量:可以在命令行直接运行相关服务、添加hadoop权限:便于与hadoop的权限统一,且方便调用、查看版本:验证Hbase安装是否出错


     

     

  16. HBase配置
  17. 配置/usr/local/hbase/conf/hbase-env.sh 。配置JAVA环境变量,并添加配置HBASE_MANAGES_ZK为true,用vi命令打开并编辑hbase-env.sh,命令如下:
  18.  

    vi /usr/local/hbase/conf/hbase-env.sh

     

    配置JAVA环境变量,jdk的安装目录默认是 /usr/lib/jvm/java-1.7.0-openjdk, 则JAVA _HOME =/usr/lib/jvm/java-7-openjdk-amd64,其中java-1.7.0-openjdk是你的jdk版本;配置HBASE_MANAGES_ZK为true,表示由hbase自己管理zookeeper,不需要单独的zookeeper。hbase-env.sh中本来就存在这些变量的配置,大家只需要删除前面的#并修改配置内容即可(#代表注释):

    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

    export HBASE_MANAGES_ZK=true

  19. 2. 配置/usr/local/hbase/conf/hbase-site.xml ,打开并编辑hbase-site.xml,命令如下:
  20. vi /usr/local/hbase/conf/hbase-site.xml

    在启动HBase前需要设置属性hbase.rootdir,用于指定HBase数据的存储位置,因为如果不设置的话,hbase.rootdir默认为/tmp/hbase-${user.name},这意味着每次重启系统都会丢失数据。此处设置为HBase安装目录下的hbase-tmp文件夹即(/usr/local/hbase/hbase-tmp),添加配置如下:

     

    <configuration>

        <property>

            <name>hbase.rootdir</name>

            <value>file:///usr/local/hbase/hbase-tmp</value>

        </property>

    </configuration>

    修改JAVA环境和设置属性hbase.rootdir,用于指定HBase数据的存储位置

    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

    export HBASE_MANAGES_ZK=true

     

  21. 接下来测试运行。
  22. 首先启动Hadoop:进入 Hadoop 主文件夹

    cd /usr/local/hadoop/

    开启 Hadoop 相关进程

    sbin/start-dfs.sh

    sbin/start-yarn.sh

    然后切换目录至HBase安装目录/usr/local/hbase;再启动HBase。命令如下:

    cd /usr/local/hbase

    bin/start-hbase.sh

    hbase shell

    (注意:如果在操作HBase的过程中发生错误,可以通过{HBASE_HOME}目录(/usr/local/hbase)下的logs子目录中的日志文件查看错误原因。

    启动hive时报如下的错误[ERROR] Terminal initialization failed; falling back to unsupported

    解决办法:进入到hadoop安装目录下的share/hadoop/yarn/lib下删除 jline的jar文件。再启动hive即可

    使用jps命令查看进程:

    Jps

    利用Hbase提供shell接口完成实验内容要求。

    身份ID

    姓名

    性别

    年龄

    班级

    C++成绩

    操作系统成绩

    201401

    王辉

    21

    计算机14-2

    85

    60

    201402

    王丽

    22

    计算机15-2

    80

    80

    201403

    郭涛

    23

    计算机16-2

    75

    90

     

    初始化表格:

    create 'member','id','personalAttr','gradeAttr'

     

    put 'member','201401','personalAttr:name','wanghui'

    put 'member','201401','personalAttr:gender','0'

    put 'member','201401','personalAttr:age','21'

    put 'member','201401','personalAttr:class','CS 14-2'

    put 'member','201401','gradeAttr:C++_grade','85'

    put 'member','201401','gradeAttr:OS_grade','60'

     

    put 'member','201402','personalAttr:name','wangli'

    put 'member','201402','personalAttr:gender','1'

    put 'member','201402','personalAttr:age','22'

    put 'member','201402','personalAttr:class','CS 15-2'

    put 'member','201402','gradeAttr:C++_grade','80'

    put 'member','201402','gradeAttr:OS_grade','80'

     

    put 'member','201403','personalAttr:name','guotao'

    put 'member','201403','personalAttr:gender','0'

    put 'member','201403','personalAttr:age','23'

    put 'member','201403','personalAttr:class','CS 16-2'

    put 'member','201403','gradeAttr:C++_grade','75'

    put 'member','201403','gradeAttr:OS_grade','90'

     

    命令输错,无反应时可键入 > 回车后终止此命令

    进入hbase shell命令行完成表格的初始化及建立:

    最终建表如下:

     

    五、实验结果与分析

    1)请给出每一个实验步骤目的和执行结果。

    各步骤如上述文字(蓝色)描述

    2)Hbase是否适合存储问题①中的结构化数据,并简单叙述Hbase与关系型数据库的区别。

    Hbase是否适合存储问题①中的结构化数据

    显然问题1表的ID数量众多,且其结构定义完整,事实上Hbase并不适合存储这类结构化数据, Hbase设计之初是为了存储互联网上大量的半结构化数据,比如本题中用户甚至都可以put'member', 201401', 'socialAttr: country', 'china',而表中并没有定义country字段,但Hbase里可以随意插入,这是它的巨大优势,

    Hbase和关系型数据库的区别

  23. Hbase只提供字符串这一种数据类型,其他数据类型的操作只能靠用户自行处理,而关系型数据库有丰富的数据类型;
  24. Hbase数据操作只有很简单的插入、查询、删除、修改、清空等操作,不能实现表与表关联操作,而关系型数据库有大量此类SQL语句和函数; 
  25. Hbase基于列式存储,每个列族都由几个文件保存,不同列族的文件是分离的,关系型数据库基于表格设计和行模式保存; 
  26. Hbase修改和删除数据实现上是插入带有特殊标记的新记录,而关系型数据库是数据内容的替换和修改; 
  27. Hbase为分布式而设计,可通过增加机器实现性能和数据增长,而关系型数据库很难做到这一点。
  28.  

     

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值