手把手教你安装Apache HBase

HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

Hadoop只能执行批量处理,并且只以顺序方式访问数据。这意味着必须搜索整个数据集,即使是最简单的搜索工作。HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。

人们可以直接或通过HBase的存储HDFS数据。使用HBase在HDFS读取消费/随机访问数据。 HBase在Hadoop的文件系统之上,并提供了读写访问。

HBase 和 HDFS

HBase是一个面向列的数据库,在表中它由行排序。表模式定义只能列族,也就是键值对。一个表有多个列族以及每一个列族可以有任意数量的列。后续列的值连续地存储在磁盘上。表中的每个单元格值都具有时间戳。总之,在一个HBase:

表是行的集合。

行是列族的集合。

列族是列的集合。

列是键值对的集合。

下面给出的表中是HBase模式的一个例子。

关于hbase的介绍,大家可以自行到官网介绍去了解,此文章着重介绍如何安装。

本例采用三台机器(centos7):

master01(192.168.47.130),slave01(192.168.47.131),slave02(192.168.47.132)

其中master01节点作为HMaster,slave01、slave02节点作为RegionServer。

本例使用的安装包为:hbase-0.98.12-hadoop2-bin.tar.gz 下载地址:http://archive.apache.org/dist/hbase/hbase-0.98.12/

1,安装Hadoop

由于 HBase是运行上Hadoop的。故安装HBase之前,需先安装Hadoop, 关于Hadoop的安装可以参考之前的文章链接:手把手教你安装Apache Hadoop

2, 安装Zookeeper

HBase内置带有Zookeeper, 但是在完全分布式模式下,需使用外置的Zookeeper集群,关于如何选用Zookeeper,下面安装HBase时会说明。关于Zookeeper的安装可以参考之前的文章链接:手把手教你安装Zookeeper

3,安装HBase

master01机器使用命令:tar -zxvf hbase-0.98.12-hadoop2-bin.tar.gz解压hbase安装文件, 使用命令:mv ./hbase-0.98.12-hadoop2 /usr/local/将hbase移动到/usr/local/目录下。

所有的hbase配置文件位于:./hbase-0.98.12-hadoop2/conf/

3.1,master01配置hbase-env.sh

使用命令:vim ./hbase-0.98.12-hadoop2/conf/hbase-env.sh 打开

添加java和hadoop的配置文件环境变量。具体配置路径根据自己配置的路径。

修改HBASE_PID_DIR=/data/tmp/hadoop/hbase/pids, 指定hbase的进程存储路径。修改HBASE_MANAGES_ZK=false,此处代表使用外置的zookeeper(默认为true,使用自带zk),即第2步中安装的zookeeper。

3.2,master01配置hbase-site.xml

使用命令:vim ./hbase-0.98.12-hadoop2/conf/hbase-site.xml 打开

hbase.rootdir

hdfs://master01:9000/hbase

dfs.support.append

true

hbase.cluster.distributed

true

The mode the cluster will be in. Possible values are false: standalone and pseudo-distributed setups with managed Zookeeper true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)

hbase.master

master01:60000

hbase.master.info.port

60010

hbase.master.maxclockskew

180000

hbase.zookeeper.quorum

master01,slave01,slave02

hbase.zookeeper.property.dataDir

/data/tmp/zookeeper

dfs.replication

2

参数说明:

hbase.rootdir=hdfs://master01:9000/hbase指明hbase在hadoop中的存储目录。

hbase.cluster.distributed=true表示采用完全分布式模式,和hbase-env.sh中的HBASE_MANAGES_ZK=false配合使用。

hbase.zookeeper.quorum=master01,slave01,slave02采用第2步中安装的zookeeper。

hbase.zookeeper.property.dataDir=/data/tmp/zookeeper指定zookeeper保存信息的文件目录。

dfs.replication=2配置hbase的备份数据两份。

若zookeeper的端口不是默认值(2181),则需要配置zookeeper端口,配置如下:

hbase.zookeeper.property.clientPort

$

3.3,master01配置regionservers

输入下面内容,指明slave01,salve02作为regionserver数据节点。

slave01

slave02

3.4,master01配置hbase环境变量

输入命令:vim ~/.bashrc

其中/usr/local/hbase-0.98.12-hadoop2 为hbase所在的目录。配置环境变量可以方便启动或者停止hbase时不需要带上完整目录。

输入命令:source ~/.bashrc使环境变量生效。

3.5,master01拷贝hbase到slave01,slave02

master01分别使用命令:scp /usr/local/hbase-0.98.12-hadoop2 root@salve01:/usr/local/和scp /usr/local/hbase-0.98.12-hadoop2 root@salve02:/usr/local/将hbase-0.98.12-hadoop2文件在拷贝到salve01和slave02的usr/local/目录下和master01保持一致。

slave01,salve02机器上都操作步骤3.4,配置hbase环境变量。

这样3台机器的hbase就配置完毕。

4,启动HBase

启动hbase之前先启动hadoop和zookeeper。

4.1,启动hadoop

master01输入:start-all.sh 命令启动hadoop集群;

slave01中输入命令:yarn-daemon.sh start resourcemanager 启动ResourceManger资源管理节点(具体参考hadoop的配置);

slave01中输入命令:mr-jobhistory-daemon.sh start historyserver 启动历史服务;

启动浏览器,输入地址:http://master01:50070 访问hadoop集群:

查看HDFS(hadoop) 分布式文件系统:

4.2,启动zookeeper

master01,slave01,slave03分别输入命令:zkServer.sh start,启动服务。

master01启动:

slave01启动:

slave02启动:

4.3,启动hbase

master01上输入命令:start-hbase.sh

使用jps查看进程:

4.3.1,master01节点:

4.3.2,slave01节点:

4.3.3,slave02节点:

从三面三张图中可以看出,master01为HMaster,slave01、slave02为HRegionServer。

其他进程:

NameNode: hadoop的namenode进程,用来保存HDFS的元数据信息;

DataNode:hadoop的datanode进程;

SecondaryNameNode:职责是合并NameNode的edit logs到fsimage文件中;

QuorumPeerMain:zookeeper的进程;

ResourceManager: hadoop的资源管理进程;

关于的NameNode和SecondaryNameNode的区别参考链接:https://www.cnblogs.com/chenyaling/p/5521464.html

4.4,访问hbase的web

启动浏览器,输入地址:http://master01:60010访问hbase集群:

输入地址:http://slave01:60030访问hbase集群slave01节点信息:

输入地址:http://slave02:60030访问hbase集群slave02节点信息:

4.5,hadoop文件系统中查看hbase

hadoop中查看hbase有两种方式,一种通过hdfs命令查看,一种通过hadoop的web工具查看。

4.5.1,hdfs命令方式查看hbase:

4.5.2,hadoop的web中查看hbase:

4.6,zookepper中查看hbase

输入命令: zkCli.sh -server master01:2181,slave01:2181,slave02:2181 启动zookeeper客户端:

5,启动hbase客户端:

master01输入命令: hbase shell 启动hbase客户端:

输入命令: list 查看所有的表

输入命令: create 'habse_test_tab_20181021', 'col_f' 创建一个表名为habse_test_tab_20181021,列族名为col_f的表

使用put 'habse_test_tab_20181021’, '', '', '' 存储数据

使用scan 'habse_test_tab_20181021' 命令扫面表

使用get 'habse_test_tab_20181021','row_0001’获取一行数据

更多的hbase shell命令可参考链接: https://www.yiibai.com/hbase/hbase_shell.html

6,其他:

HBase提供了Java API用于操作Hbase,具体参考链接:https://www.cnblogs.com/xinfang520/p/7717399.html

相关技术咨询,请联系本文作者。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20190131G0G1XJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券