0


如何安装配置hbase

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

JDK版本的要求

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

hbase下载

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

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

环境变量设置

在启动 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。

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

通过使用 或其他一些安全方法,将公钥安全地复制到每个节点。 在其他每个节点上,创建一个名为 .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以上的版本也会有些莫名其妙的问题。

标签: hbase hadoop 大数据

本文转载自: https://blog.csdn.net/lzyzuixin/article/details/128739543
版权归原作者 醉心编码 所有, 如有侵权,请联系我们删除。

“如何安装配置hbase”的评论:

还没有评论