大数据平台/大数据技术与原理-实验报告--部署全分布模式HBase集群和实战HBase

news2024/12/23 6:59:12

实验名称

部署全分布模式HBase集群和实战HBase

实验性质

(必修、选修)

必修

实验类型(验证、设计、创新、综合)

综合

实验课时

2

实验日期

2023.11.07-2023.11.10

实验仪器设备以及实验软硬件要求

专业实验室(配有centos7.5系统的linux虚拟机三台

实验目的

1. 理解HBase数据模型。

2. 理解HBase体系架构。

3. 熟练掌握HBase集群的部署。

4. 了解HBase Web UI的使用。

5. 熟练掌握HBase Shell常用命令的使用。

6. 了解HBase Java API,能编写简单的HBase程序。

实验内容(实验原理、运用的理论知识、算法、程序、步骤和方法)

1.HBase集群的部署原理:

Hadoop生态环境: HBase通常部署在Hadoop生态环境上,依赖HDFS(Hadoop Distributed File System)存储数据。

ZooKeeper: HBase集群通常依赖ZooKeeper进行协调和管理,确保集群中的各个节点之间的一致性和可用性。

Master-RegionServer架构: HBase集群包含一个或多个Master节点和多个RegionServer节点。Master负责集群管理和元数据操作,而RegionServer存储和处理实际的数据。

HBase根目录: HBase在HDFS上有一个根目录,用于存储表的元数据和实际数据。这个目录会分散在HDFS上的不同节点上,实现了数据的分布式存储。

2. HBase实战的实验原理:

创建和管理表: 使用HBase Shell或API创建表,定义列簇、列等结构,并观察表的分布情况。

数据写入和读取: 向HBase表中写入数据,并通过不同方式进行读取,观察数据的分布和读写性能。

HBase过滤器: 使用HBase过滤器来检索满足特定条件的数据,例如列值、时间戳等。

HBase Coprocessors: 实验使用HBase Coprocessors来进行数据处理,例如计数、聚合等,加强HBase的功能。

监控和性能调优: 使用HBase的监控工具(如HBase Web UI)来监测集群的状态,观察各节点的负载情况,进行性能调优。

故障模拟: 模拟节点故障,观察HBase的自动恢复机制,确保集群的可用性和容错性。

数据一致性: 观察HBase在数据写入和更新时的一致性保证,了解HBase的事务特性。

备份和恢复: 实验备份和恢复HBase表,确保在发生灾难性事件时能够迅速还原数据。

实验步骤:

1.规划全分布模式HBase集群。

采用的是HBase版本是1.4.10,3个节点的机器名分别为master、slave1、slave2,IP地址依次为192.168.18.100、192.168.18.101、192.168.18.102

2.部署全分布模式HBase集群。

1). 初始软硬件环境准备

(1)准备3台机器,安装操作系统,编者使用CentOS Linux 7.5。

(2)对集群内每一台机器,配置静态IP、修改机器名、添加集群级别域名映射、关闭防火墙。

(3)对集群内每一台机器,安装和配置Java,要求Java 1.7或更高版本,编者使用Oracle JDK 8u191。

(4)安装和配置Linux集群中主节点到从节点的SSH免密登录

2). 获取HBase

HBase官方下载地址为https://hbase.apache.org/downloads.html,建议读者下载stable目录下的当前稳定版本。编者采用的HBase稳定版本是2019年6月10日发布的HBase 1.4.10,其安装包文件hbase-1.4.10-bin.tar.gz例如存放在master机器的/home/xuluhui/Downloads中。

3). 主节点上配置HBase

HBase所有配置文件位于$HBASE_HOME/conf下,具体的配置文件如前文图5-9所示。本实验中编者仅修改hbase-env.sh、hbase-site.xml、regionservers三个配置文件。

假设当前目录为“/opt/so/hbase-1.4.10”,切换到普通用户如root下,在主节点master上配置HBase的具体过程如下所示。

(1)编辑配置文件hbase-env.sh

hbase-env.sh用于设置Linux/Unix环境下运行HBase要用的环境变量,包括Java安装路径等,使用“vim conf/hbase-env.sh”对其进行如下修改。

设置JAVA_HOME,与master上之前安装的JDK位置、版本一致,将第27行的注释去掉,并修改为以下内容,修改后的效果如图所示。

export JAVA_HOME=/usr/java/jdk1.8.0_191/

编辑配置文件hbase-env.sh中JAVA_HOME

将第46、47行的PermSize作为注释,因为JDK8中无需配置,修改后的效果如图所示。

 编辑配置文件hbase-env.sh中PermSize

JDK8下若PermSize配置不作为注释或删掉,则启动HBase集群时会出现以下“warning”警告信息

设置HBASE_PID_DIR,修改进程号文件的保存位置,该参数默认为“/tmp”,将第120行修改为以下内容,如图所示。其中pids目录由HBase集群启动后自动创建。

 编辑配置文件hbase-env.sh中HBASE_PID_DIR

设置HBASE_MANAGES_ZK,将其值设置为false,即关闭HBase本身的ZooKeeper集群,将第128行修改为以下内容,如图所示。

编辑配置文件hbase-env.sh中HBASE_MANAGES_ZK

(2)编辑配置文件hbase-site.xml

hbase-site.xml是HBase核心配置文件,包括HBase数据存放位置、ZooKeeper集群地址等配置项。在master机器上修改配置文件hbase-site.xml,具体内容如下所示。

(3)编辑配置文件regionservers

Regionservers用于设置运行HRegionServer从进程的机器列表,每行1个主机名。在master机器上修改配置文件regionservers,该文件原来内容为“localhost”,修改为以下内容。

slave1

slave2

3.启动全分布模式HBase集群。

(1. 启动HDFS集群

在主节点上使用命令“start-dfs.sh”启动HDFS集群,使用的命令及运行效果如图5-23所示,从图5-23中可以看出,HDFS主进程NameNode成功启动,slave1和slave2上的从进程DataNode此处未展示,读者应保证HDFS所有主从进程都启动成功。

(2. 启动ZooKeeper集群

由于本实验中HBase并未自动管理ZooKeeper,所以用户需要手工启动ZooKeeper集群。在ZooKeeper集群的所有节点上使用命令“zkServer.sh start”启动ZooKeeper集群,编者为了方便,在节点master上使用ssh远程连接slave1、slave2,完成了各个节点ZooKeeper的启动工作

(3. 启动HBase集群

在主节点上启动HBase集群

而在从节点上:

4.验证全分布模式HBase集群。

主节点上的webUI的界面是:

从节点的webUI的界面:

5.使用HBase Web UI。

(1)使用hbase shell

(2)打开HBase主节点的Web UI,可以看到已建立的student表,如图所示。

从HBase集群主节点的Web UI界面上查看student表

(3)使用命令“zkCli.sh -server master:2181,slave1:2181,slave2:2181”连接ZooKeeper客户端,从ZooKeeper的存储树中也可以查看到建立的student表,如图所示。

从ZooKeeper存储树中可查看到student表

(4)由于HBase底层存储采用HDFS,所以打开HDFS Web UI,也可以查看到建立的student表,如图所示。

6. 关闭全分布模式HBase集群。

使用命令“stop-hbase.sh”

关闭HBase集群照本实验设置,关闭HBase集群后HBase主节点master上的主进程HMaster、HBase从节点slave1、slave2上的从进程HRegionServer消失,同时HBase主从节点上所有与HBase相关的ZooKeeper节点文件*.znode和进程号文件*.pid也依次消失。

实验结果与分析

1.集群启动: 通过Web UI、HBase Shell以及其他工具,确认HBase集群启动正常。

2.表的创建和管理: 通过HBase Shell和Web UI,查看已建立的表(例如,student表)。

3.数据写入和读取: 使用HBase Shell或API向表中写入数据,并通过不同方式进行读取,观察性能。

4.过滤器和Coprocessors: 使用过滤器检索数据,尝试使用Coprocessors进行数据处理,验证功能。

5.监控和性能调优: 使用HBase Web UI监测集群状态,观察各节点负载情况,进行性能调优。

6.故障模拟: 模拟节点故障,验证HBase的自动恢复机制,确保集群容错性。数据一致性: 观察数据写入和更新时的一致性,了解HBase的事务特性。

7.备份和恢复: 实验备份和恢复HBase表,确认在灾难性事件时能够迅速还原数据。

 

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

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

相关文章

【Apifox】测试工具自动编写接口文档

在开发过程中,我们总是避免不了进行接口的测试, 而相比手动敲测试代码,使用测试工具进行测试更为便捷,高效 今天发现了一个非常好用的接口测试工具Apifox 相比于Postman,他还拥有一个非常nb的功能, 在接…

交流负载测试使用场景

交流负载测试是一种在特定环境下,对电力设备、汽车电子部件,工业自动化设备、网络设备、家电产品,航空航天设备以及医疗器械等产品进行测试的方法,该测试的目的是评估这些设备在实际运行条件下的性能和可靠性。 1电力设备测试 交…

没有预装Edge浏览器的Windows系统安装Edge正式版的方法,离线安装和在线安装

一、在线安装 没有预装Edge浏览器的Windows系统安装Edge正式版的方法 二、离线安装 进入到下面这个目录 C:\Program Files (x86)

vivado产生报告阅读分析27

1、设计 QoR 汇总 命令行选项 -qor_summary 可用于为流程中每个步骤生成 QoR 汇总信息。该选项只能从 Tcl 控制台使用。该选项可按两种格式生成: 基于文本的报告或 JSON 格式。 要生成基于文本的格式 , 请运行以下命令 : report_des…

Jquery动画特效

1&#xff0c;Jquery提供的特效方法 2&#xff0c;实例代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

冒泡排序以及改进方案

冒泡排序以及改进方案 介绍&#xff1a; 冒泡排序属于一种典型的交换排序&#xff08;两两比较&#xff09;。冒泡排序就像是把一杯子里的气泡一个个往上冒一样。它不断比较相邻的元素&#xff0c;如果顺序不对就像水泡一样交换它们的位置&#xff0c;直到整个序列像水泡一样…

矩阵连乘问题

1、求解矩阵连乘问题。 要求: 分别用自底向上的动态规划方法和自顶向下的备忘录方法计算最优值并构造最优解&#xff0c;通过实例比较两种方法的结果和效率。 思路 1)寻找最优子结构&#xff1a; 此问题最难就在于此&#xff0c;对于乘积的任意位置加括号都会将序列在某个…

C#简化工作之实现网页爬虫获取数据

1、需求 想要获取网站上所有的气象信息&#xff0c;网站如下所示&#xff1a; 目前总共有67页&#xff0c;随便点开一个如下所示&#xff1a; 需要获取所有天气数据&#xff0c;如果靠一个个点开再一个个复制粘贴那么也不知道什么时候才能完成&#xff0c;这个时候就可以使用C#…

unity3d NPC寻路时相互挤压、导致离目标越来越远

更改寻路代理 约束的大小&#xff0c;人物周围绿色圆柱范围线&#xff0c;尽量调小

23种设计模式之C++实践

23种设计模式之C++实践 1. 简介2. 基础知识3. 设计模式(一)创建型模式1. 单例模式1.2 饿汉式单例模式1.3 懒汉式单例模式比较IoDH单例模式总结2. 简单工厂模式简单工厂模式总结3. 工厂方法模式工厂方法模式总结4. 抽象工厂模式抽象工厂模式总结5. 原型模式原型模式总结6. 建造…

MySQL索引优化实战一

#插入一些示例数据drop procedure if exists insert_emp;delimiter ;;create procedure insert_emp()begindeclare i int;set i1;while(i<100000)doinsert into employees(name,age,position) values(CONCAT(tqq,i),i,dev);set ii1;end while;end;;delimiter ;call insert_e…

linaro交叉编译工具链下载与使用笔记

笔记 文章目录 笔记确定目标 &#xff08;aarch64&#xff09;选择版本&#xff08;7.5&#xff09;选择目标&#xff08;aarch64-linux-gnu&#xff09;下载地址工具链&#xff08;gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz&#xff09;编译测试 &#xff08…

WIFI模块(esp-01s)实现天气预报代码实现

目录 前言 实现图片 一、串口编程的实现 二、发送AT指令 esp01s.c esp01s.h 三、数据处理 1、初始化 2、cjson处理函数 3、核心控制代码 四、修改堆栈大小 前言 实现图片 前面讲解了使用AT指令获取天气与cjson的解析数据&#xff0c;本章综合将时间显示到屏幕 一、…

Python超级详细的变量命名规则

Python 需要使用标识符给变量命名&#xff0c;其实标识符就是用于给程序中变量、类、方法命名的符号&#xff08;简单来说&#xff0c;标识符就是合法的名字&#xff09;。 Python 语言的标识符必须以字母、下画线&#xff08;_&#xff09;开头&#xff0c;后面可以跟任意数目…

Python单元测试之道:从入门到精通的全面指南

在这篇文章中&#xff0c;我们会深入探讨Python单元测试的各个方面&#xff0c;包括它的基本概念、基础知识、实践方法、高级话题&#xff0c;如何在实际项目中进行单元测试&#xff0c;单元测试的最佳实践&#xff0c;以及一些有用的工具和资源 一、单元测试重要性 测试是软…

ELk部署,保姆级教学超详细!!!

Elk&#xff08;Elasticsearch, Logstash, Kibana&#xff09;是一套日志收集、存储和展示方案&#xff0c;是由Elastic公司开发的开源软件组合。 Elasticsearch&#xff1a;是一个分布式的搜索和分析引擎。它能够处理大量的数据&#xff0c;并提供快速、准确的搜索结果&#x…

在线 SQL 模拟器SQL Fiddle使用简介

在线 SQL 模拟器SQL Fiddle使用简介 有时候&#xff0c;我们想去验证 SQL语句&#xff0c;却缺少数据库环境&#xff0c;那该怎么办呢&#xff1f; 这时候在线 SQL 模拟器就有了用武之地。SQL 模拟器免安装&#xff0c;可以在网页直接运行 SQL 。 SQL Fiddle 支持 MySQL、Orac…

Stable Diffusion绘画系列【4】:可爱盲盒风人物

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

数据结构——链式二叉树的实现(详解)

呀哈喽。我是结衣。 不知道大家的递归学到怎么样呢&#xff1f;如果大家的递归功底不是很好&#xff0c;那么我相信在学完这篇文章后大家一定会对递归有一个更深层次的了解的。 构造链式二叉树 在学习二叉树的基本操作前&#xff0c;需先要创建一棵二叉树&#xff0c;然后才能…

国标GB28181安防监控平台EasyCVR周界入侵AI算法检测方案

在城市管理和公共安全领域&#xff0c;安全视频监控的重要性日益凸显。AI视频智能分析平台基于深度学习和计算机视觉技术&#xff0c;利用AI入侵算法&#xff0c;能够实时、精准地监测周界入侵行为。 TSINGSEE青犀在视频监控及AI视频智能分析领域拥有深厚的技术积累和丰富的实…