大数据系列——HBase部署及应用

HBase有三种部署方式,分别为单机模式、伪集群模式、集群模式。

其中单机模式比较简单,自行查找;伪集群模式和集群模式基本一样,区别就是前者都在一台电脑上,后者在不同的电脑上。

下面以生产环境一般用的集群方式部署为例说明,按最小要求3台节点来介绍集群部署方式。本样例是在3台虚拟机下部署的,每个节点安装Centos7核心版(不带GUI)

3台机器分别规划如下:

hdp1:10.10.10.110

hdp2:10.10.10.112

hdp3:10.10.10.113

下面从如下几个方面介绍下其部署及应用:

相关配置

安装

固定配置

分发程序

启动

查看状态

基本操作

相关配置

挂载windows目录、 IP配置、hosts名称配置、关闭防火墙、SSH配置, 需要3台电脑网络互通且能相互SSH登录,

具体操作参见:

Linux系列——挂载Windows虚拟文件夹到Linux系统

Linux系列——配置SSH免密登录

Linux系列——常规基础操作

安装

先在其中任意一台上面安装。

1、需要先搭建好Zookeeper集群

   具体参见:大数据系列——ZooKeeper部署及应用

2、需要先搭建好Hadoop集群

   具体参见:大数据系列——Hadoop部署及应用

3、下载HBase,直接解压就可以用。例如:hbase-2.3.5.tar.gz

下载地址

https://archive.apache.org/dist/hbase/

4、解压到目标目录

#从挂载目录将安装文件拷贝到目标路径

$cp /mnt/hdfs/vf/hbaseSetup/hbasep-2.3.5.tar/usr/proc/hbase

$ cd /usr/proc/hbase  这里切换到安装目录(每台机器都要新建该目录,配好一台后后面两台直接用scp命令分发,具体路径可以自定义,推荐放在/usr下)

$ tar -zxvf hbase-2.3.5.tar (解压后记着删除压缩文件)​

4、同步时间

   具体参见:Linux系列——常规基础操作

固定配置

1、修改hbase-env.sh,位于解压目录hbase-2.3.5下

修改下面几个关键配置:

export JAVA_HOME=/usr/local/src/jdk1.8.0_181/

export HBASE_LOG_DIR=/mydata/logs/hbase

export HBASE_PID_DIR=/mydata/data/pid

#关闭内置的Zookeeper

export HBASE_MANAGES_ZK=false

2、修改habse-site.xml,位于解压目录hbase-2.3.5/conf下

<property>

      <name>hbase.rootdir</name>

      <value>hdfs://cluster007/hbase</value>

      <description> hbase.rootdir是RegionServer的共享目录,用来持久化存储HBase数据的,默认是写到/tmp的,如果不修改此配置,在HBase重启时,数据会丢失。此处一般设置的是hdfs的文件目录,比如NameNode运行在namenode.Example.org主机的9090端口,则需要设置为                    hdfs://namenode.example.org:9000/hbase

      </description>

  </property>

  <property>

      <name>hbase.cluster.distributed</name>

      <value>true</value>

<description>此项用来配置HBase的部署模式,false表示单机,true表示完全分布式模式或者伪分布式模式。

    </description>

  </property>

  <property>

      <!-- 设置本地临时目录路径 -->

      <name>hbase.tmp.dir</name>

      <value>/usr/proc/hbase/hbase235/tmpdata</value>

  </property>

  <property>

      <!-- 允许节点时间偏差值 -->

      <name>hbase.master.maxclockskew</name>

      <value>180000</value>

  </property>

  <property>

     <!-- 定义regionserver上用于等待响应用户表级请求的线程数,可配大点 -->

     <name>hbase.regionserver.handler.count</name>

     <value>12</value>

  </property>

  <property>

     <!-- 这里因为要HMaster的HA,不需要指定域名 -->

     <name>hbase.master</name>

     <value>60000</value>

  </property>

  <property>

      <name>hbase.zookeeper.property.dataDir</name>

      <value>/usr/proc/hbase/hbase235/zkdata</value>

  </property>

  <property> 

    <name>hbase.zookeeper.quorum</name> 

    <value>hdp1,hdp2,hdp3</value>

  </property>

  <property>

     <name>hbase.zookeeper.property.clientPort</name>

     <value>2181</value>

  </property>

  <property>

    <name>hbase.unsafe.stream.capability.enforce</name>

    <value>false</value>

  </property>

3、拷贝core-site.xml和hdfs-site.xml

HBase没有识别cluster007这个集群,解决这个问题的方法是把Hadoop的2个配置文件(core-site.xml和hdfs-site.xml),

放到HBase的conf目录下,让HBase能找到Hadoop的配置

4、修改regionservers(加入所有机器名称,每个一行),位于解压目录hbase-2.3.5/conf下,本集群包括下面三个节点

hdp1

hdp2

hdp3

5、修改backup-masters文件(若没有则新增,加入备份主节点),位于解压目录hbase-2.3.5/conf下,本集群以hdp2为备份Master

hdp2

分发程序(有点慢约,等待完成停止不动后,回车)

scp -r /usr/proc/hbase  root@hdp2:/usr/proc/hbase  分发到hdp2

scp -r /usr/proc/hbase  root@hdp3:/usr/proc/hbase  分发到hdp3

启动

1、分别启动3台机器上的ZooKeeper进程

$ cd /usr/proc/zk/apache-zookeeper-3.5.9-bin/ 切换到进程目录

$ ./zkServer.sh start

2、分别启动3台机器上的Journalnode进程,(注意进程路径是sbin)

$ cd /usr/proc/hadoop/hadoop-3.3.1/sbin 切换到进程目录

$ ./hadoop-daemon.sh start journalnode

3、启动HDFS (所有namenode和datanode都会启动,注意进程路径是sbin)

$ cd /usr/proc/hadoop/hadoop-3.3.1/sbin 切换到进程目录

$ ./start-dfs.sh

4、启动Yarn(所有RM和NodeM都会启动,注意进程路径是sbin)

$ cd /usr/proc/hadoop/hadoop-3.3.1/sbin 切换到进程目录

$ ./start-yarn.sh

5、启动HBase(所有节点都会启动,都启动后会竞选主节点)

$ cd /usr/proc/hbase/hbase-2.3.5/sbin 切换到进程目录

$ ./start-hbase.sh

查看状态

1、Zookeeper状态:

在3台机器都正确启动ZooKeeper进程后,进行查看状态,

$ cd /usr/proc/zk/apache-zookeeper-3.5.9-bin/ 切换到进程目录

$ ./zkServer.sh status

3台机器的状态,其中有一台是:leader,另外2台是:follower

2、执行JPS查看各进程状态

hdp1:

NameNode

DataNode

Journalnode

ZKFC

ResourceManager(Active)

HMaster(Active)

HRegionServer

hdp2:

SecondaryNameNode

DataNode

Journalnode

ZKFC

NodeManager

HMaster(Standby)

HRegionServer

hdp3:

ResourceManager(Standby)

DataNode

Journalnode

NodeManager

HRegionServer

3、查看Web UI

Master后台:

http://hdp:60010

RegionServer后台:

http://hdp1:60030

http://hdp2:60030

http://hdp3:60030

基本操作

#进入 shell

hbase shell

#查看帮助

help

#查询 HBase 服务器状态

status

#查询 HBase 版本

version

#创建表

create 'tab1','cf1','cf2','cf3'

create 'tab2',{NAME=>'username',VERSIONS=>5} // 创建表示指定保存的版本数

#查看表详情

describe 'tab1'

#显示所有的表

list

#查看表是否存在

exists ‘tab1’

#判断表是否为‘enable’

is_enabled ‘tab1’

#查询表中有多少行

count ‘tab1’

#将整个表清空

truncate ‘tab1’

#删除表,有两步,第一步先让该表不可用,第二步删除表。直接drop未disable的表会失败。

disable 'tab1'

drop 'tab1'

#给列族添加列;修改版本数

alter ‘tab1’, {NAME => ‘cf4’, VERSIONS => 3}

alter  ‘tab1’,{NAME => ‘cf4’, VERSIONS => 6}

#删除一个列族, 注意删除前,需要先把表 disable,操作后再启用 enable

disable ‘tab1’

alter ‘tab1’, {NAME=>’cf1’, METHOD=>’delete’}

enable ‘tab1’

#删除一个列族的某个列,注意删除前,需要先把表 disable,操作后再启用 enable

disable ‘tab1’

alter ‘tab1’, {NAME=>’cf1.col1’, METHOD=>’delete’}

enable ‘tab1’

#插入数据,例如 put ‘t1′, ‘r1′, ‘c1′, ‘value’, ts1; t1指表名,r1指行键名,c1指列名,value指单元格值。ts1指时间戳,一般都省略掉了。

put 'tab1','xxid','cf1.col1','xxvalue'

#查询数据,get命令,用于查看表的某一行数据

get 'tab1','xxid'

get 'tab1','xxid','cf1'

get 'tab1','xxid','cf1.col1'

get 'tab1','xxid',{COLUMN=>'cf1.col1',VERSIONS=>5}

#查询数据,scan命令,用于查看表的全部数据

scan 'tab1'

scan 'tab1',{STARTROW => '1001', STOPROW =>  '1001'}

scan 'tab1',{STARTROW => '1001'}

#删除数据,delete命令,用于删除一行中的一个数据

delete 'tab1','xxid','cf.col1'

#删除数据,deleteall命令,用于删除一个数据

deletealll 'tab1'

#退出 shell

exit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值