在Mac上配置HBase伪分布式娱乐环境

2024-05-14 05:38

本文主要是介绍在Mac上配置HBase伪分布式娱乐环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

HBase是运行在Hadoop分布式文件系统HDFS上进行数据存储的开源非关系型分布式数据库,2020年我尝试在Mac上配置一个伪分布式的v2.2.3 HBase环境,看看能不能进行一些基本的读写操作,以便熟悉一下分布式数据库有什么特点。

三种运行模式

单机模式

  1. Hbase不使用HDFS,仅使用本地文件系统

  2. ZooKeeper与Hbase运行在同一个JVM中

伪分布式模式

  1. 所有进程运行在同一个节点上,不同进程运行在不同的JVM当中
  2. 比较适合实验测试

完全分布式模式

  1. 进程运行在多个服务器集群中
  2. 分布式依赖于HDFS系统,因此布署Hbase之前一定要有一个正常工作的HDFS集群

那么HBase伪分布式环境部署要分几步呢?我们现在梳理一下。

  1. JDK 1.8
  2. Hadoop环境
  3. HBase环境

截止目前(2020年03月03日)我使用最新的stable HBase版本2.2.3进行配置。

JDK 1.8

HBase是使用Java开发的,因此配置需要JDK环境,目前长期稳定版LTS只支持到JDK 8(LTS JDK支持进度可到 https://hbase.apache.org/book.html#java 查看)

Screen-Shot-2020-03-03-at-5.39.03-PM

可以翻阅我之前的博客查看在Ubuntu和MacOS上安装JDK 8的过程,这里不再细述。

Hadoop

在MacOS上配置伪分布式环境的详细办法可以查看我的上一篇博文👉🏻https://fuhailin.github.io/Hadoop-on-MacOS/ 。HBase是运行在HDFS之上的分布式数据库,所以在启动HBase之前必须先启动HDFS,运行$HADOOP_HOME//sbin/start-dfs.sh启动HDFS。

HBase

Zookeeper

顾名思义 Zookeeper 就是动物园管理员,它是用来管 Hadoop(大象)、Hive(蜜蜂)、Pig(小猪)的管理员, Apache Hbase 和 Apache Solr 的分布式集群都用到了 Zookeeper;Zookeeper是一个分布式的、开源的程序协调服务,是 Hadoop 项目下的一个子项目,它提供的主要功能包括:配置维护、域名服务、分布式同步、集群管理。

注:如果为了简单的话,可以选择不安装Zookeeper集群,就跟Spark默认提供自己的Scala一样,HBase默认配置自己提供的Zookeeper支持。

HBase安装

很多资料提到可以使用Hombrew直接通过’brew install hbase’进行HBase的下载配置,但是由于之前Hadoop的安装过程中Homebrew总是下载最新的JDK依赖这让我无法掌控是否兼容,于是我就直接在官网(https://hbase.apache.org/downloads.html)下载编译好的二进制版HBase进行配置。将下载好的hbase-2.2.3-bin.tar.gz解压到程序存放目录,然后将得到的bin路径添加到环境变量里,我是这样做的,vim ~/.bash_profile,添加:

# HBASE
export HBASE_HOME=/Users/vincent/opt/hbase/hbase-2.2.3
export PATH=$PATH:$HBASE_HOME/bin

关注我的公众号"赵大寳Note"(ID:StateOfTheArt),不定期分享编程相关的有趣内容,查看往期精品搜集收藏一起学习。
关注公众号趙大寳Note,回复“激活函数”下载全部代码

伪分布式配置

  1. JAVA_HOME的路径添加到hbase-env.sh文件,修改vim $HBASE_HOME/conf/hbase-env.sh:
# The java implementation to use.  Java 1.8+ required.
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
  1. 在hbase-site.xml中添加如下内容:
<configuration><property><name>hbase.rootdir</name><value>hdfs://localhost:9000/hbase</value></property><property><name>hbase.cluster.distributed</name><value>true</value></property><property><name>hbase.unsafe.stream.capability.enforce</name><value>false</value></property>
</configuration>

hbase.rootdir:该参数制定了HReion服务器的位置,即数据存放的位置。主要端口号要和Hadoop相应配置一致。
hbase.cluster.distributed:HBase的运行模式。false是单机模式,true是分布式模式。若为false, HBase和Zookeeper会运行在同一个JVM里面,默认为false。

启动HBase

如果完成了以上步骤,通过source ~/.bash_profile操作使修改的环境变量生效并启动了Hadoop($HADOOP_HOME/bin/start-dfs.sh),就可以通过$HBASE_HOME/bin/start-hbase.sh脚本来启动HBase了,启动完成后通过jps命令检查HBase进程:

Screen-Shot-2020-03-03-at-7.32.34-PM

启动成功后可以看到几个正在运行的Java进程,包括Hadoop(DataNode、NameNode)、Zookeeper(HQuorumPeer)和HBase(HMaster、HRegionServer)。

通过hbase version命令查看HBase是否正常运行打印版本信息:

1583235497008

成功启动后,可以访问 HBase的Web 界面 http://localhost:16020 查看集群的运行状态信息。

Screen-Shot-2020-03-04-at-2.21.55-PM

进入HBase交互式界面hbase shellstatus命令查看HBase集群运行状态,list命令列出HBase库中的表:

Screen-Shot-2020-03-04-at-11.13.50-AM

【注意】:我几次在尝试hbase shell交互式编程时遇到ERROR: KeeperErrorCode = NoNode for /hbase/master的错误信息,通过查看$HBASE_HOME/logs/中日志可以查看详细异常信息,怀疑是HBase自带的Zookeeper存在管理问题,重启HBase后又没有问题,但还没有找出错误的规律,可以尝试单独下载配置Zookeeper程序,有线索的朋友欢迎留言

这里启动关闭Hadoop和HBase的顺序一定是:
启动Hadoop—>启动HBase—>关闭HBase—>关闭Hadoop

HBase Shell 编程实践

HBase建表

HBase中用create命令创建表,具体如下:

  create 'student','Sname','Ssex','Sage','Sdept','course'

Screen-Shot-2020-03-04-at-12.16.47-PM

HBase增删查改

添加数据
HBase中用put命令添加数据,注意:一次只能为一个表的一行数据的一个列,也就是一个单元格添加一个数据,所以直接用shell命令插入数据效率很低,在实际应用中,一般都是利用编程操作数据。

# 为student表添加了学号为95001,名字为LiYing的一行数据,其行键为95001
put 'student','95001','Sname','LiYing'
# 为95001行下的course列族的math列添加了一个数据
put 'student','95001','course:math','80'

删除数据
在HBase中用delete以及deleteall命令进行删除数据操作,它们的区别是:1. delete用于删除一个数据,是put的反向操作;2. deleteall操作用于删除一行数据。

# 删除一个数据,是put的反向操作
delete 'student','95001','Ssex'
# 删除student表中的95001行的全部数据
deleteall 'student','95001'

查看数据
HBase中有两个用于查看数据的命令:1. get命令,用于查看表的某一行数据;2. scan命令用于查看某个表的全部数据

# 查看‘student’表‘95001’行的数据
get 'student','95001'
# 查看‘student’表的全部数据
scan 'student'

Screen-Shot-2020-03-04-at-7.59.26-PM

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

#先禁用表
disable 'student'
#删除表
drop 'student'

至此我们已经完成了HBase的伪分布式配置与基本的增删查改操作,那它能替换我们的MySQL和Oracle吗?

HBase与传统关系数据库对比分析:

HBase与传统的关系数据库的区别主要体现在以下几个方面:

  1. 数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串。
  2. 数据操作:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂的表和表之间的关系。
  3. 存储模式:关系数据库是基于行模式存储的。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的。
  4. 数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引——行键,通过巧妙的设计,HBase中的所有访问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来。
  5. 数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留。
  6. 可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩

HBase的适用业务场景

  1. 写密集型应用:每天写入量巨大,而相对读数量较小的应用,比如IM的历史消息、游戏的日志等等
  2. 不需要复杂查询条件来查询数据的应用:HBase只支持基于rowkey的查询,对于HBase来说,单条记录或者小范围的查询是可以接受的,大范围的查询由于分布式的原因,可能在性能上有点影响,而对于像SQL的join等查询,HBase无法支持。
  3. 对性能和可靠性要求非常高的应用:由于HBase本身没有单点故障,可用性非常高。
  4. 海量数据,而且增长量无法预估的应用:HBase支持在线扩展,即使在一段时间内数据量呈井喷式增长,也可以通过HBase横向扩展来满足功能。

References:

  1. Hbase的伪分布式安装|SlowTech

  2. HBase2.2.2安装和编程实践指南|林子雨

  3. HBase技术原理|曹世宏

  4. Apache HBase ™ Reference Guide

这篇关于在Mac上配置HBase伪分布式娱乐环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/987899

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次