如何安装配置hbase

news2024/10/6 6:40:53

当完成hdfs、zookeeper的安装配置后,现在进入到hbase的安装和配置环节。这样的做的目的之一是要把海量的数据存入到hbase数据库中。

JDK版本的要求

hbase对JDK版本是有要求的,不是JDK版本越高越好,根据我走过的坑,目前最好的JDK版本是JDK 8。

hbase下载

  1. 从此 Apache 下载镜像列表中选择一个下载站点。 单击建议的顶部链接。 这将带您进入HBase版本的镜像。 单击名为 stable 的文件夹,然后将以 .tar.gz 结尾的二进制文件下载到本地文件系统。 暂时不要下载以 src 结尾的文件.tar.gz

  1. 解压缩下载的文件,并切换到新创建的目录。

环境变量设置

在启动 HBase 之前,必须设置环境变量。 为了简化此操作,HBase 允许您在 conf/hbase-env.sh 文件中设置它。您必须找到 Java 所在的位置 安装在您的计算机上,找到它的一种方法是使用 Whereis Java 命令。一旦你有了位置, 编辑 conf/hbase-env.sh 文件并取消注释以 #export JAVA_HOME= 开头的行,然后将其设置为 Java 安装路径。JAVA_HOME

设置JAVA_HOME的 hbase-env.sh 中提取的示例

# Set environment variables here.

# The java implementation to use.

export JAVA_HOME=/usr/jdk64/jdk1.8.0_112

伪分布配置

配置 HBase

编辑 hbase 站点.xml配置。 首先,添加以下属性,该属性指示 HBase 在分布式模式下运行,每个守护程序一个 JVM 实例。

<property><name>hbase.cluster.distributed</name><value>true</value></property>

接下来,使用 URI 语法为 添加 的配置,指向 HDFS 实例的地址。 在此示例中,HDFS 在端口 8020 的本地主机上运行。hbase.rootdirhdfs:

<property><name>hbase.rootdir</name><value>hdfs://localhost:8020/hbase</value></property>

您不需要在 HDFS 中创建目录。 HBase将为您执行此操作。如果创建目录,HBase 将尝试执行迁移,这不是您想要的。

最后,删除 和 的现有配置 ,hbase.tmp.dirhbase.unsafe.stream.capability.enforce

启动 HBase

使用 bin/start-hbase.sh 命令启动 HBase。 如果系统配置正确,则该命令应显示正在运行的 HMaster 和 HRegionServer 进程。jps

检查 HDFS 中的 HBase 目录

如果一切正常,HBase在HDFS中创建其目录。 在上面的配置中,它存储在 HDFS 上的 /hbase/ 中。 您可以使用 Hadoop 的 bin/ 目录中的命令列出此目录。hadoop fs

$ ./bin/hadoop fs -ls /hbase
Found 7 items
drwxr-xr-x   - hbase users          02014-06-2518:58 /hbase/.tmp
drwxr-xr-x   - hbase users          02014-06-2521:49 /hbase/WALs
drwxr-xr-x   - hbase users          02014-06-2518:48 /hbase/corrupt
drwxr-xr-x   - hbase users          02014-06-2518:58 /hbase/data
-rw-r--r--   3 hbase users         422014-06-2518:41 /hbase/hbase.id
-rw-r--r--   3 hbase users          72014-06-2518:41 /hbase/hbase.version
drwxr-xr-x   - hbase users          02014-06-2521:49 /hbase/oldWALs

完全分布式部署

实际上,您需要一个完全分布式的配置来全面测试 HBase 并在实际方案中使用它。 在分布式配置中,群集包含多个节点,每个节点运行一个或多个 HBase 守护程序。 其中包括主实例和备份主实例、多个 ZooKeeper 节点和多个区域服务器节点。

本高级快速入门向群集添加了另外两个节点。 体系结构将如下所示:

Table 1. Distributed Cluster Demo Architecture

节点名称

Master

ZooKeeper

RegionServer

node-a.example.com

是的

是的

node-b.example.com

备份

是的

是的

node-c.example.com

是的

是的

确保所有节点都具有通信的完全访问权限,并且没有防火墙规则可以阻止它们相互通信。 如果您看到任何错误,例如 ,请检查您的防火墙。no route to host

置无密码 SSH 访问

node-a需要能够登录和(和自身)才能启动守护进程。 实现此目的的最简单方法是在所有主机上使用相同的用户名,并配置从其他主机上到其他每个主机的无密码 SSH 登录。node-bnode-cnode-a

  1. 在主机上,生成密钥对。

以将运行 HBase 的用户身份登录时,使用以下命令生成 SSH 密钥对:

$ ssh-keygen -t rsa

如果命令成功,密钥对的位置将打印到标准输出。 公钥的默认名称为 id_rsa.pub

  1. 创建将保存其他节点上的共享密钥的目录 以 HBase 用户身份登录,并在用户的主目录中创建一个 .ssh/ 目录(如果该目录尚不存在)。 如果它已存在,请注意它可能已经包含其他密钥。node-b、node-c。

  1. 将公钥复制到其他节点

通过使用 或其他一些安全方法,将公钥安全地复制到每个节点。 在其他每个节点上,创建一个名为 .ssh/authorized_keys 的新文件(如果有) 尚不存在,并将 id_rsa.pub 文件的内容追加到该文件的末尾。

 cat id_rsa.pub >> ~/.ssh/authorized_keys
  1. 测试无密码登录

如果正确执行了该过程,则当您使用相同的用户名从 SSH 连接到其他任一节点时,系统不应提示您输入密码。node-a

如果正确执行了该过程,则当您使用相同的用户名从 SSH 连接到其他任一节点时,系统不应提示您输入密码。node-a

  1. 由于将运行备份主服务器,请重复上述过程,替换您看到的所有位置。 请确保不要覆盖现有的 .ssh/authorized_keys 文件,而是使用运算符而不是运算符将新密钥连接到现有文件。

配置regionserver

编辑 conf/regionservers 并删除包含 的行。添加包含 和 的主机名或 IP 地址的行。localhostnode-bnode-c

即使您确实想在 上运行 RegionServer ,也应该通过其他服务器用于与其通信的主机名来引用它。 在这种情况下,那将是. 这使您能够将配置分发到群集的每个节点,任何主机名冲突。 保存文件。

配置备份服务器

conf/ 中创建一个名为 backup-master 的新文件,并向其添加一个主机名为 的新行。 在本演示中,主机名为 。node-bnode-b.example.com。

配置连接到zookeeper

在 上,编辑 conf/hbase-site.xml并添加以下属性。node-a

<property><name>hbase.zookeeper.quorum</name><value>node-a.example.com,node-b.example.com,node-c.example.com</value></property><property><name>hbase.zookeeper.property.dataDir</name><value>/usr/local/zookeeper</value></property>

常用命令

hbase启动命令

使用 bin/start-hbase.sh 命令启动 HBase。 如果系统配置正确,则该命令应显示正在运行的 HMaster 和 HRegionServer 进程。jps

hbase停止命令

与提供 bin/start-hbase.sh 脚本以方便地启动所有 HBase 守护程序的方式相同,bin/stop-hbase.sh 脚本会停止它们。

$ ./bin/stop-hbase.sh
stopping hbase....................
$

连接到 HBase

使用位于 HBase 安装的 bin/ 目录中的命令连接到正在运行的 HBase 实例。 在此示例中,省略了启动 HBase 命令行管理程序时打印的一些用法和版本信息。 HBase 外壳提示符以字符结尾。hbase shell>

$ ./bin/hbase shell
hbase(main):001:0>

创建表

使用该命令创建新表。 必须指定表名和列系列名。create

hbase(main):001:0> create 'test', 'cf'0 row(s) in 0.4170 seconds

=> Hbase::Table - test

列出有关表的信息

使用命令确认表存在list

hbase(main):002:0> list 'test'
TABLE
test
1 row(s) in 0.0180 seconds

=> ["test"]

现在使用该命令查看详细信息,包括配置默认值describe

hbase(main):003:0> describe 'test'
Table test is ENABLED
test
COLUMN FAMILIES DESCRIPTION
{NAME => 'cf', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE =>
'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'f
alse', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE
 => '65536'}
1 row(s)
Took 0.9998 seconds

将数据放入表中

若要将数据放入表中,请使用该命令。put

hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'0 row(s) in 0.0850 seconds

hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'0 row(s) in 0.0110 seconds

hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'0 row(s) in 0.0100 seconds

在这里,我们插入三个值,一次一个。 第一个插入位于 ,列 ,值为 。 HBase 中的列由列系列前缀(在本例中)后跟冒号和列限定符后缀(在本例中)组成。row1cf:avalue1cfa

一次扫描表中的所有数据

从 HBase 获取数据的方法之一是扫描。 使用该命令扫描表中的数据。 您可以限制扫描,但现在,所有数据都会被获取。scan

hbase(main):006:0> scan 'test'
ROW                                      COLUMN+CELL
 row1                                    column=cf:a, timestamp=1421762485768, value=value1
 row2                                    column=cf:b, timestamp=1421762491785, value=value2
 row3                                    column=cf:c, timestamp=1421762496210, value=value3
3 row(s) in 0.0230 seconds

获取单行数据

若要一次获取一行数据,请使用该命令。get

hbase(main):007:0> get 'test', 'row1'
COLUMN                                   CELL
 cf:a                                    timestamp=1421762485768, value=value1
1 row(s) in 0.0350 seconds

禁用表

如果要删除表或更改其设置,以及在某些其他情况下,则需要先使用该命令禁用该表。 您可以使用该命令重新启用它。disable enable

hbase(main):008:0> disable 'test'0 row(s) in 1.1820 seconds

hbase(main):009:0> enable 'test'0 row(s) in 0.1770 seconds

删除表

若要删除(删除)表,请使用以下命令。drop表

hbase(main):011:0> drop 'test'0 row(s) in 0.1370 seconds

退出shell

若要退出 HBase 命令行管理程序并断开与群集的连接,请使用以下命令。quit

两个大坑

hadoop版本用2.8.X,jdk用1.8.X版本。用hadoop 3.X版本会有问题,jdk用1.8.X以上的版本也会有些莫名其妙的问题。

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

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

相关文章

LeetCode刷题复盘笔记—一文搞懂贪心算法之122. 买卖股票的最佳时机 II问题(贪心算法系列第三篇)

今日主要总结一下可以0贪心算法解决的一道题目&#xff0c;122. 买卖股票的最佳时机 II 题目&#xff1a;122. 买卖股票的最佳时机 II Leetcode题目地址 题目描述&#xff1a; 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&am…

深度学习实战 —— LSTM轨迹预测

前言 最近写了一份用LSTM之类的序列模型+SeNet预测轨迹,经过一系列调试效果最后比较理想了。记录下~ 上效果: 一些效果图 训练误差图: 测试误差图: 训练损失: 测试损失: batch平均耗时: 拟合效果:

(day7) 自学Java——面向对象进阶

目录 1.static静态变量 ​编辑 2.继承 ​编辑 3.多态 4.包、final、权限修饰符、代码块 5.抽象类 6.接口 7.内部类 非原创&#xff0c;为方便自己后期复习 1.static静态变量 静态存储位置的数据是共享的 练习&#xff1a;定义数组工具类 需求&#xff1a;在实际开发…

深度卷积对抗神经网络 基础 第二部分 DC-GANs

深度卷积对抗神经网络 基础 第二部分 DC-GANs DC-GANs &#xff08;DC-GANs Deep convolutional GAN&#xff09;是基于GANs的一种专门对图片生成的一种模型&#xff0c;其通过卷积操作来进行图片的一些基本操作来实现模型的功能。 激活函数 Activations 激活函数是任何输入…

代码随想录--哈希表章节总结

代码随想录–哈希表章节总结 1. LeetCode242 有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异位词。 示例 1: 输入: s &quo…

高德地图红绿灯读秒是怎么实现的?(二)

通过上一篇高德官方回复&#xff0c;以及一些科技大佬们的脑回路&#xff0c;做了一些简单的回复&#xff1b; 这次好好的从个人研究观点来阐述一下这个论题 目前有两种说法&#xff0c;一种说是靠大数据分析&#xff0c;一种说是靠交管部门数据。 从个人的研究来看&#xff0…

socket 2---TCP编程

目录 一、TCP编程流程 二、函数接口 2.1、监听接口 2.2、发起连接 connect 2.3、接收新连接 accept 2.4、收发接口 三、代码实现 问题&#xff1a; 要是创建多个客户端的话会怎么样呢&#xff1f; 那么怎么去真正解决这个问题呢&#xff1f; 一、TCP编程流程 这里…

数据结构与算法基础(王卓)(9):线性表的应用(有序表合并)(有序,可重复)

PPT&#xff1a;第二章P176&#xff1b; 合并为一个新的整体&#xff1a;有序表的合并&#xff08;有序&#xff0c;可重复&#xff09; 线性表&#xff1a; 对于该操作的具体实现的流程设计&#xff1a;&#xff08;各模块&#xff09; 创建一个空表C 依次从A或B(中&#…

移动云国产商用密码规模化应用

前言 为深入贯彻落实《密码法》&#xff0c;推动商用密码技术在工业和信息化行业领域的融合应用&#xff0c;工业和信息化部密码应用研究中心组织开展了“首届全国商用密码应用优秀案例征集”工作&#xff0c;并评审选出15项优秀案例。 同时&#xff0c;为持久发挥本次活动的…

CSAPP笔记

目录 第一章 一个典型的硬件组成 从键盘上读取hello指令​编辑 存储器结构示例 相对性能公式 计算机系统抽象 第二章--信息的表示和处理 按位 & | ^ ~ 与逻辑运算 && || 逻辑右移和算术右移 左移 定义计算机如何编码和操作整数的数学定义 补码编码的定义 补码…

【JavaWeb】前端开发三剑客之CSS(上)

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【JavaWeb】 ✈️✈️本篇内容:CSS从零开始学习&#xff01; &#x1f680;&#x1f680;代码托管平台github&#xff1a;JavaWeb代码存放仓库&#xff01; ⛵⛵作…

擎创动态 | 官宣!与深智城集团正式签约

近日&#xff0c;上海擎创信息技术有限公司与深圳市智慧城市科技发展集团有限公司&#xff08;以下简称“深智城集团”&#xff09;就“一体化协同办公平台项目”达成战略合作&#xff0c;签约仪式已圆满完成。 ​深智城集团副总经理罗介平、智城软件公司常务副总经理韩小宇、智…

android 读取assets配置文件

方法1-getAssets().open(“re.properties”) try {Properties props new Properties();props.load(getAssets().open("re.properties"));Log.e(TAG, "className:" props.getProperty("className"));} catch (IOException e) {e.printStackTrace…

支持加密的日记应用程序DailyTxT

本文完成于 12 月下旬&#xff0c;对应的版本为 1.0.10(2022_11_02)&#xff1b; 什么是 DailyTxT &#xff1f; DailyTxT 是一个加密的 Web 日记应用程序&#xff0c;用于写下您当天的故事并轻松地再次找到它们。它是用 Python Flask&#xff08;后端&#xff09;和 Vue.JS&am…

23种设计模式(十二)——外观模式【接口隔离】

外观模式 文章目录 外观模式意图什么时候使用外观真实世界类比外观模式的实现外观模式的优缺点亦称:Facade 意图 外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容…

一直以来,人们都在探索互联网赋能实体的正确的途径和逻辑

一直以来&#xff0c;人们都在寻找互联网回归实体的正确的方式和方法&#xff1b;一直以来&#xff0c;人们都在探索互联网赋能实体的正确的途径和逻辑。然而&#xff0c;互联网似乎始终都游离于产业之外&#xff0c;似乎始终都超脱于产业之上。尽管经历了PC时代和移动互联网时…

分支预测详解

分支预测用于在微处理器中以流水线效率为目标来预测程序流。有许多方法来实现分支预测&#xff0c;通常在更好的预测结果和增加硬件做预测之间需要进行权衡。 目录 分支预测简介 静态分支预测 动态分支预测 启动分支预测 分支预测简介 要了解分支预测器&#xff0c;就不得…

QT当类有多个不同类型的同名信号时如何处理QOverload?

我们在设计类的信号时也许也会像设计类方法一样&#xff0c;给予多种不同参数类型的重载版本&#xff0c;这样一来我们就可以应对不同类型的参数输入或者输出。 但我们在使用有重载的信号版本时就不那么方便了&#xff0c;QT系统没有那么智能&#xff0c;不会自动匹配&#xff…

【实操案例三】进制转换、异常捕获、输出颜色设置、格式化字符串的设置等实例代码及运行效果图!

任务一&#xff1a;将指定的十进制数转换成二进制、八进制、十六进制 # 任务一&#xff1a;将指定的十进制数转换成二进制、八进制、十六进制 def fun():numint(input(请输入一个十进制整数&#xff1a;))print(num,的二进制数为&#xff1a;,bin(num)) # 第一种写法&#xff…

网线交叉、直连区别

欢迎来到东用知识小课堂&#xff01;一.网线常识网线常用的有&#xff1a;双绞线、同轴电缆、光纤等。双绞线可按其是否外加金属网丝套的屏蔽层而区分为屏蔽双绞线&#xff08;STP&#xff09;和非屏蔽双绞线&#xff08;UTP&#xff09;。从性价比和可维护性出发&#xff0c;大…