头歌大数据作业四:HBase

课外作业四:HBase

  • 作业详情

内容

一、安装配置伪分布式HBase,前提是参考实验《搭建Hadoop环境》已经安装启动伪分布式Hadoop。关闭顺序与启动顺序相反:先关闭HBase,之后再关闭Hadoop。 • hbase官网下载地址(官网下载太慢): Index of /hbase • 国内镜像hbase-2.4.16: https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/2.4.16/hbase-2.4.16-bin.tar.gz • 下载命令: wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/2.4.16/hbase-2.4.16-bin.tar.gz • 解压缩: tar -zxvf hbase-2.4.16-bin.tar.gz -C /opt/ • 改名: mv /opt/hbase-2.4.16 /opt/hbase • 配置环境变量: echo 'export HBASE_HOME=/opt/hbase/' >> /etc/profile echo 'export PATH=$PATH:$HBASE_HOME/bin' >> /etc/profile source /etc/profile • 配置文件

  1. 配置 /opt/hbase/conf/hbase-env.sh,Linux命令行输入 echo "export JAVA_HOME=/usr/java8" >> /opt/hbase/conf/hbase-env.sh echo " HBASE_CLASSPATH=/opt/hbase/conf " >> /opt/hbase/conf/hbase-env.sh echo " HBASE_MANAGES_ZK=true " >> /opt/hbase/conf/hbase-env.sh
  2. vim /opt/hbase/conf/hbase-site.xml
    1.    <name>hbase.rootdir</name>
    1.    <value>hdfs://localhost:9000/hbase</value>
    1.    <name>hbase.cluster.distributed</name>
    1.    <value>true</value>
  3. • 启动HBase(先启动Hadoop): start-hbase.sh • jps包含(之外还有Hadoop的进程): HMaster、HRegionServer、HQuorumPeer 访问Web页面: http://EIP:16010

• 操作HBase: Linux客户端输入hbase shell,进入HBase操作数据表。 exit退出hbase shell • 停止HBase(后停止Hadoop) stop-hbase.sh 实验要求:

  1. 操作HBase常用Shell命令(参考教材4.6.1或后面的华为云实验)创建学生信息表并添加数据(列数不少于5个,数据记录不少于10条),数据表名字是自己姓名全拼接学号后四位,表数据有自己的姓名。
  2. 命令行显示表的所有数据,截图。
  3. HDFS的Web页面显示数据表,截图。 • Hadoop与HBase的兼容版本:
    二、华为云KooLabs实验
  4. 《HBase数据表基本操作》KooLabs云实验_在线实验_上云实践_云计算实验_AI实验_华为云官方实验平台-华为云
  5. 《HBase数据仓库加载》KooLabs云实验_在线实验_上云实践_云计算实验_AI实验_华为云官方实验平台-华为云 三、简要回答“课堂考核”内容
  6. 你从哪里下载的HBase? https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/2.4.16/hbase-2.4.16-bin.tar.gz
  7. HBase伪分布式配置文件hbase-site.xml,配置的是什么? HBase伪分布式配置文件hbase-site.xml配置的是HBase和zookeeper写入数据的路径
  8. 启动HBase之前要不要启动Hadoop?为什么? 启动HBase之前需要启动Hadoop,因为hbase底层是hdfs,依赖Hadoop
  9. HBase启动之后看到哪些进程节点,分别是干什么的?  HMaster进程:HMaster进程是HBase集群的管理节点,负责协调和管理RegionServer进程。它负责处理客户端请求、负载均衡、Region的分配、合并和删除等一系列管理工作  RegionServer进程:RegionServer进程是数据存储节点,负责存储和处理数据。每个Region所对应的数据都被存储在一个RegionServer上,多个Region可以共用同一个RegionServer。RegionServer还负责处理读写请求、维护WAL(Write-Ahead-Log)、切分和合并region等操作  ZooKeeper进程:ZooKeeper是HBase集群的协调服务,主要用于管理HBase集群中各种元数据信息,如正在使用的region信息、是否有新的region需要分裂等。ZooKeeper还可以帮助协调多个HMaster之间的选举过程以及监控和管理整个集群  HQuorumPeer进程:该进程是ZooKeeper服务启动时创建的内部组件,主要用于处理各种会话请求,并维护集群机器与其他机器之间的连接状态。
  10. HBase创建的表放在HDFS的哪个路径下? 每个Region都有一个单独的目录,该目录包含对应Region的数据文件和元数据文件。这些目录默认位于/hbase/data/<table-name>/<region-name>路径下,其中<table-name>为表名,<region-name>为Region名称。例如,如果创建了名为"employee"的表,则其数据目录将位于/hbase/data/employee路径下。
  11. 说说HBase是如何读数据的?如何写数据的?  读数据:客户端向HBase Master节点请求查询某张表的行键,得到这张表在HDFS上的存储路径。客户端根据行键Hash算法找到对应的RegionServer节点,向其发送读取请求。RegionServer查找客户端请求指定的行数据所在的HFile文件,并用内存中的Block Cache缓存数据(如果存在)。如果数据不在内存缓存中,则会从磁盘中读取,并将其加载到Block Cache中供下次查询使用。RegionServer将查询结果返回给客户端。  写数据:客户端向HBase Master节点请求写入某张表,得到表的合适RegionServer节点。客户端将新插入(或修改)的行键和列值信息打包成Request,发送给RegionServer。RegionServer创建一个Memstore并缓存修改前的原始数据。如果该Memstore已满,则会将其中所有数据保存为新生成的HFile文件,并清空该Memstore,然后再开始写入新数据。如果完成了所有修改操作,则客户端收到确认消息,结束本次写操作。 四、习题 • 4.8 习题
  12. 试述在Hadoop体系架构中HBase与其他组成部分的相互关系。 HBase利用Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算;利用Zookeeper作为协同服务,实现稳定服务和失败恢复;使用HDFS作为高可靠的底层存储,利用廉价集群提供海量数据存储能力; Sqoop为HBase的底层数据导入功能,Pig和Hive为HBase提供了高层语言支持,HBase是BigTable的开源实现。
  13. 请阐述 HBase和BigTable的底层技术的对应关系。 项目 BigTable HBase 文件存储系统 GFS HDFS 海量数据处理 MapReduce Hadoop MapReduce 协同服务管理 Chubby Zookeeper
  14. 请阐述HBase和传统关系数据库的区别。 区别 传统关系数据库 HBase 数据类型 关系模型 数据模型 数据操作 插入、删除、更新、查询、多表连接 插入、查询、删除、清空,无法实现表与表之间关联 存储模式 基于行模式存储,元组或行会被连续地存储在磁盘也中 基于列存储,每个列族都由几个文件保存,不同列族的文件是分离的 数据索引 针对不同列构建复杂的多个索引 只有一个行键索引 数据维护 用最新的当前值去替换记录中原来的旧值 更新操作不会删除数据旧的版本,而是生成一个新的版本 可伸缩性 很难实现横向扩展,纵向扩展的空间也比较有限 轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩
  15. HBase支持哪些类型的访问接口? HBase提供了Native Java API , HBase Shell , Thrift Gateway , REST GateWay , Pig , Hive 等访问接口
  16. 请以实例说明HBase数据模型。 Info Name Age Sex 2022611771 zhangqiuling 20 02 2022611770 zhoushuangfeng 18 02
  17. 分别解释HBase中行键、列键和时间戳的概念。  行键是唯一的,在一个表里只出现一次,否则就是在更新同一行,行键可以是任意的字节数组。  列族需要在创建表的时候就定义好,数量也不宜过多。列族名必须由可打印字符组成,创建表的时候不需要定义好列。  时间戳,默认由系统指定,用户也可以显示设置。使用不同的时间戳来区分不同的版本。
  18. 请列举实例来阐述HBase的概念视图和物理视图的区别。 HBase数据概念视图: 行键 时间戳 列族contents 列族anchor “com.cnn.www” T5 Anchor:cnnsi.com=”CNN” T3 Anchor:my.look.ca=”CNN” “com.cnn.www” T3 Content:html=”...”
    T2 Content:html=”...”
    T1 Content:html=”...”
    HBase数据物理视图: 行键 时间戳 列族anchor “com.cnn.www” T5 Anchor:cnnsi.com=”CNN” T4 Anchor:my.look.ca=”CNN” 行键 时间戳 列族contents “com.cnn.www” T3 Content:html=”...” T2 Content:html=”...” T1 Content:html=”...”
  19. 试述HBase各功能组件及其作用。  库函数:链接到每个客户端  一个Master主服务器:主服务器Master主要负责表和Region的管理工作  许多个Region服务器:Region服务器是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求
  20. 请阐述HBase的数据分区机制。 HBase采用分区存储,一个大的表会被分拆许多个Region,这些Region会被分发到不同的服务器上实现分布式存储。
  21. HBase中的分区是如何定位的? 通过构建的映射表的每个条目包含两项内容,一个是Regionde 标识符,另一个是Region服务器标识,这个条目就标识Region和Region服务器之间的对应关系,从而就可以知道某个Region被保存在哪个Region服务器中。
  22. 试述HBase的三层结构中各层次的名称和作用。 层次 名称 作用 第一层 Zookeeper文件 记录了-ROOT-表的位置信息 第二层 -ROOT-表 记录了.META.表的Region位置信息

-ROOT-表只能有一个Region。通过-ROOT-表,就可以访问.META.表中的数据 第三层 .META.表 记录了用户数据表的Region位置信息,.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息

  1. 请阐述在HBase三层结构下,客户端是如何访问到数据的。 首先访问Zookeeper,获取-ROOT表的位置信息,然后访问-Root-表,获得.MATA.表的信息,接着访问.MATA.表,找到所需的Region具体位于哪个Region服务器,最后才会到该Region服务器读取数据。
  2. 试述HBase系统基本架构及其每个组成部分的作用。  客户端:客户端包含访问HBase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据访问过程  Zookeeper服务器:Zookeeper可以帮助选举出一个Master作为集群的总管,并保证在任何时刻总有唯一一个Master在运行,这就避免了Master的“单点失效”问题  Master:主服务器Master主要负责表和Region的管理工作:管理用户对表的增加、删除、修改、查询等操作;实现不同Region服务器之间的负载均衡;在Region分裂或合并后,负责重新调整Region的分布;对发生故障失效的Region服务器上的Region进行迁移  Region服务器:Region服务器是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求
  3. 请阐述Region服务器向HDFS中读写数据的基本原理 Region服务器内部管理一系列Region对象和一个HLog文件,其中,HLog是磁盘上面的记录文件,它记录着所有的更新操作。每个Region对象又是由多个Store组成的,每个Store对象了表中的一个列族的存储。每个Store又包含了MemStore和若干个StoreFile,其中,MemStore是在内存中的缓存。
  4. 试述HStore的工作原理。 每个Store对应了表中的一个列族的存储。每个Store包括一个MenStore缓存和若干个StoreFile文件。MenStore是排序的内存缓冲区,当用户写入数据时,系统首先把数据放入MenStore缓存,当MemStore缓存满时,就会刷新到磁盘中的一个StoreFile文件中,当单个StoreFile文件大小超过一定阈值时,就会触发文件分裂操作。
  5. 试述HLog的工作原理。 HBase系统为每个Region服务器配置了一个HLog文件,它是一种预写式日志(Write Ahead Log),用户更新数据必须首先写入日志后,才能写入MemStore缓存,并且,直到MemStore缓存内容对应的日志已经写入磁盘,该缓存内容才能被刷写到磁盘。
  6. 在HBase中,每个Region服务器维护一个HLog,而不是每个Region都单独维护一个 HLog。请说明这种做法的优点和缺点。  优点: 多个Region对象的更新操作所发生的日志修改,只需要不断把日志记录追加到单个日志文件中,不需要同时打开、写入到多个日志文件中  缺点:如果一个Region服务器发生故障,为了恢复其上次的Region对象,需要将Region服务器上的对象,需要将Region服务器上的HLog按照其所属的Region对象进行拆分,然后分发到其他Region服务器上执行恢复操作。
  7. 当一台Region服务器意外终止时,Master如何发现这种意外终止情况?为了恢复这台发生意外的Region服务器上的Region,Master会做出哪些处理(包括如何使用HLog进行恢复)? Zookeeper会实时监测每个Region服务器的状态,当某个Region服务器发生故障时,Zookeeper会通知Master。Master首先会处理该故障Region服务器上面遗留的HLog文件,这个遗留的HLog文件中包含了来自多个Region对象的日志记录。系统会根据每条日志记录所属的Region对象对HLog数据进行拆分,分别放到相应Region对象的目录下,然后,再将失效的Region重新分配到可用的Region服务器中,并把与该Region对象相关的HLog日志记录也发送给相应的Region服务器。Region服务器领取到分配给自己的Region对象以及与之相关的HLog日志记录以后,会重新做一遍日志记录中的各种操作,把日志记录中的数据写入到MemStore缓存中,然后,刷新到磁盘的StoreFile文件中,完成数据恢复。
  8. 请列举几个HBase常用的命令,并说明其使用方法。  create:创建表  list:列出HBase中所有的表信息  put:向表、行、列指定的单元格添加数据  get:通过指定名、行、列、时间戳、时间范围和版本号来获得相应单元格的值  scan:浏览表的相关信息  alter:修改列族模式  count:统计表中行数  describe:显示表的相关信息  enable/disable:使表有效或无效  delete:删除指定单元格的数据  drop:删除表  exists:判断表是否存在  truncate:使表无效,删除该表,然后重新建立表  exit:退出HBase Shell  shutdown:关闭HBase集群  version:输出HBase版本信息  status:输出HBase集群状态信息

猜你喜欢

转载自blog.csdn.net/qq_50530107/article/details/131260911