1. 下载安装包

登录官网获取HBase安装包下载地址 https://hbase.apache.org/downloads.html

2. 执行命令下载并安装

cd /usr/local/src/
wget http://archive.apache.org/dist/hbase/2.0.0/hbase-2.0.0-bin.tar.gz
tar -zxvf hbase-2.0.-bin.tar.gz
mv hbase-2.0. /usr/local/hbase/

PS:Phoenix5.0只支持HBase2.0版本,HBase即使用了更高一点的小版本,在创建二级索引时也会出现异常。当然不使用二级索引的话,2.1.8版也可以正常使用

3. 修改服务器系统环境变量

所有服务器都需要按要求修改配置

vi /etc/profile

在尾部添加下面配置

export HBASE_HOME=/usr/local/hbase/
export PATH=$PATH:$HBASE_HOME/bin

保存退出后,运行命令,让配置马上生效

source /etc/profile

4. 配置HBase的Java安装路径

vi /usr/local/hbase/conf/hbase-env.sh

在尾部添加下面配置

export JAVA_HOME=/usr/local/java/jdk
export HBASE_MANAGES_ZK=false

5. 配置hbase-site.xml

官方文档配置说明:https://hbase.apache.org/book.html

vi /usr/local/hbase/conf/hbase-site.xml

在配置中添加下面代码

<configuration>
<!-- hbase在hadoop的HDFS中的存储路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://nameservice/hbase</value>
</property>
<!-- 设置zookeeper集群地址 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,master-backup</value>
</property>
<!-- 设置zookeeper的数据存放目录 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/zookeeper</value>
</property>
<!-- 是否开启完全分布式配置 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- RegionServer与Zookeeper间的连接超时时间。当超时时间到后,ReigonServer会被Zookeeper从RS集群清单中移除,HMaster收到移除通知后,会对这台server负责的regions重新balance,让其他存活的RegionServer接管 -->
<property>
<name>zookeeper.session.timeout</name>
<value>180000</value>
</property>
<!-- Client端与zk发送心跳的时间间隔 -->
<property>
<name>hbase.zookeeper.property.tickTime</name>
<value>6000</value>
</property>
<!-- 在当前ReigonServer上单个Reigon的最大存储空间,单个Region超过该值时,这个Region会被自动split成更小的region -->
<property>
<name>hbase.hregion.max.filesize</name>
<value>5368709120</value>
</property>
<!-- 在flush时,当一个region中的Store(Coulmn Family)内有超过7个storefile时,则block所有的写请求进行compaction,以减少storefile数量。 -->
<property>
<name>hbase.hstore.blockingStoreFiles</name>
<value>30</value>
</property>
<!-- block的等待时间 -->
<property>
<name>hbase.hstore.blockingWaitTime</name>
<value>90000</value>
</property>
<!-- 减少因内存碎片导致的Full GC,提高整体性能 -->
<property>
<name>hbase.hregion.memstore.mslab.enabled</name>
<value>true</value>
</property>
<!-- memstore大小,当达到该值则会flush到外存设备 -->
<property>
<name>hbase.hregion.memstore.flush.size</name>
<value>268435456</value>
</property>
<!-- 强制刷新之前,RegionServer中所有memstore的最大大小(默认值为:hbase.regionserver.global.memstore.size 的95%),当由于内存限制而导致更新被阻塞时,系统会以尽可能小的刷新量刷新数据,此值中的默认值特意设置为空,以遵守旧的 hbase.regionserver.global.memstore.lowerLimit 属性 -->
<property>
<name>hbase.regionserver.global.memstore.size.lower.limit</name>
<value>0.36</value>
</property>
<!-- hbase.hregion.memstore.flush.size 这个参数的作用是当单个Region内所有的memstore大小总和超过指定值时,flush该region的所有memstore。RegionServer的flush是通过将请求添加一个队列,模拟生产消费模式来异步处理的。那这里就有一个问题,当队列来不及消费,产生大量积压请求时,可能会导致内存陡增,最坏的情况是触发OOM。这个参数的作用是防止内存占用过大,当ReigonServer内所有region的memstores所占用内存总和达到heap的40%时,HBase会强制block所有的更新并flush这些region以释放所有memstore占用的内存。 -->
<property>
<name>hbase.regionserver.global.memstore.upperLimit</name>
<value>0.4</value>
</property>
<!-- 当一个region里的memstore占用内存大小超过hbase.hregion.memstore.flush.size两倍的大小时,block该region的所有请求,进行flush,释放内存。虽然我们设置了region所占用的memstores总内存大小,比如64M,但想象一下,在最后63.9M的时候,我Put了一个200M的数据,此时memstore的大小会瞬间暴涨到超过预期的hbase.hregion.memstore.flush.size的几倍。这个参数的作用是当memstore的大小增至超过hbase.hregion.memstore.flush.size 2倍时,block所有请求,遏制风险进一步扩大 -->
<property>
<name>hbase.hregion.memstore.block.multiplier:</name>
<value>2</value>
</property>
<!-- RegionServer的请求处理IO线程数 -->
<property>
<name>hbase.regionserver.handler.count</name>
<value>30</value>
</property>
<!-- 每次获取行锁的超时时间,默认为30s -->
<property>
<name>hbase.rowlock.wait.duration</name>
<value>90000</value>
</property>
<!-- 客户端每次获得rs一次socket时间 -->
<property>
<name>hbase.regionserver.lease.period</name>
<value>180000</value>
</property>
<!-- rpc超时时间 -->
<property>
<name>hbase.rpc.timeout</name>
<value>180000</value>
</property>
<!-- 客户端每次scan|get的超时时间 -->
<property>
<name>hbase.client.scanner.timeout.period</name>
<value>180000</value>
</property>
<!-- 客户端每次scan的一个next,获得多少行,默认1 -->
<property>
<name>hbase.client.scanner.caching</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
<property>
<name>hbase.region.server.rpc.scheduler.factory.class</name>
<value>org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory</value>
<description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
</property>
<property>
<name>hbase.rpc.controllerfactory.class</name>
<value>org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory</value>
<description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
</property>
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
<description>开启phoenix命名空间配置</description>
</property>
</configuration>

6. 配置节点服务器地址

vi /usr/local/hbase/conf/regionservers

修改为下面配置

node1
node2
node3

7. 复制hdfs-site.xml到HBase的配置路径下

cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml /usr/local/hbase/conf/

8. 创建backup-masters

echo 'master-backup' > /usr/local/hbase/conf/backup-masters

9. 配置Phoenix方式访问hbase

cd /usr/local/src/
wget http://www.apache.org/dyn/closer.lua/phoenix/apache-phoenix-5.0.0-HBase-2.0/bin/apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz
tar -zxvf apache-phoenix-5.0.-HBase-2.0-bin.tar.gz
mv apache-phoenix-5.0.-HBase-2.0-bin /usr/local/phoenix
cd /usr/local/phoenix # 复制phoenix服务插件到hbase目录下
cp phoenix-5.0.-HBase-2.0-server.jar /usr/local/hbase/lib/
cp phoenix-core-5.0.-HBase-2.0.jar /usr/local/hbase/lib/
cp phoenix-5.0.-HBase-2.0-queryserver.jar /usr/local/hbase/lib/ # 修改phoneix配置
vi /usr/local/phoenix/bin/hbase-site.xml
# 在配置中添加下面内容
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>

10.将hbase同步到其他服务器

rsync -avz /usr/local/hbase/ master-backup:/usr/local/hbase/
rsync -avz /usr/local/hbase/ node1:/usr/local/hbase/
rsync -avz /usr/local/hbase/ node2:/usr/local/hbase/
rsync -avz /usr/local/hbase/ node3:/usr/local/hbase/

11.配置Phoenix主节点

在master和master-backup节点的hbase-site.xml添加下面配置

vi /usr/local/hbase/conf/hbase-site.xml

在配置中添加下面代码

    <property>
<name>hbase.master.loadbalancer.class</name>
<value>org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer</value>
</property>
<property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.phoenix.hbase.index.master.IndexMasterObserver</value>
</property>

12. 让hbase支持LZ4压缩,减少磁盘空间的占用

每台服务器都运行下面代码,安装lz4

yum install lz4
yum install lz4-devel -y
mkdir /usr/local/hbase/lib/native
ln -s /usr/local/hadoop/lib/native /usr/local/hbase/lib/native/Linux-amd64-

13. 启动服务

在master服务器启动HBase服务

/usr/local/hbase/bin/start-hbase.sh

关闭服务

/usr/local/hbase/bin/stop-hbase.sh

14. 检查服务是否已正常启动

在master与master-backup中输入

jps

如果显示下面服务,则表示服务已正常启动

 HMaster

在各个node节点服务器中输入jps,检查是否已运行下面服务

 HRegionServer

打开浏览器,检查hbase是否启动成功

  • master

http://192.168.10.90:16010/master-status

  • backup-master

http://192.168.10.91:16010/master-status

版权声明:本文原创发表于 博客园,作者为 AllEmpty 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

作者博客:http://www.cnblogs.com/EmptyFS/

大数据高可用集群环境安装与配置(07)——安装HBase高可用集群的更多相关文章

  1. 大数据入门第五天——离线计算之hadoop(上)概述与集群安装

    一.概述 根据之前的凡技术必登其官网的原则,我们当然先得找到它的官网:http://hadoop.apache.org/ 1.什么是hadoop 先看官网介绍: The Apache™ Hadoop® ...

  2. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十)安装hadoop2.9.0搭建HA

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  3. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(八)安装zookeeper-3.4.12

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  4. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(九)安装kafka_2.11-1.1.0

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  5. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二)安装hadoop2.9.0

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  6. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(三)安装spark2.2.1

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  7. CentOS6安装各种大数据软件 第三章:Linux基础软件的安装

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  8. Redis安装与配置Redis安装与配置

    今天在使用Redis的时候遇到了一些问题,这个问题的解决,发现很多人使用Redis的时候没有一点安全意识.所以又重温了一下Redis,觉得应该写一下Redis的安全和配置. Redis安装与配置Red ...

  9. 二进制搭建kubernetes多master集群【三、配置k8s master及高可用】

    前面两篇文章已经配置好了etcd和flannel的网络,现在开始配置k8s master集群. etcd集群配置参考:二进制搭建kubernetes多master集群[一.使用TLS证书搭建etcd集 ...

  10. 大数据项目之_15_帮助文档_NTP 配置时间服务器+Linux 集群服务群起脚本+CentOS6.8 升级到 python 到 2.7

    一.NTP 配置时间服务器1.1.检查当前系统时区1.2.同步时间1.3.检查软件包1.4.修改 ntp 配置文件1.5.重启 ntp 服务1.6.设置定时同步任务二.Linux 集群服务群起脚本2. ...

随机推荐

  1. docker for windows 容器内网通过独立IP直接访问的方法

    Docker官方推荐我们通过端口映射的方式把Docker容器的服务提供给宿主机或者局域网其他容器使用.一般过程是: 1.Docker进程通过监听宿主机的某个端口,将该端口的数据包发送给Docker容器 ...

  2. PHP实现微信网页登陆授权开发

    这篇文章主要介绍了关于PHP实现微信网页登陆授权开发,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 更多PHP相关知识请关注我的专栏PHP​zhuanlan.zhihu.com 微信开 ...

  3. 【HITB GSEC CTF 2017】1000levels

    https://files.cnblogs.com/files/p4nda/498a3f10-8976-4733-8bdb-30d6f9d9fdad.gz #通过阅读天枢战队大佬们的wp调试的结果 首 ...

  4. php二位数组排序(按子元素排序)

    array_multisort(array_column($mainTree[$note]["beCalls"], "wtp"), SORT_DESC, arr ...

  5. 云时代架构阅读笔记十一——数据库SQL优化

    网上关于SQL优化的教程很多,但是比较杂乱.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充. 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 ...

  6. java#java.util.Date与java.time.LocalDateTime的转换

    转换主要通过Instant来进行的. Date date = new Date(); LocalDateTime localDateTime = LocalDateTime.ofInstant(dat ...

  7. MinGW 安装与简单实例

    MinGW的下载 链接: https://pan.baidu.com/s/1JiZoyFHUWoeaxCQcUXCKgg 密码: myh3 MinGW的安装 基本上都是按提示的点击下一步操作 接下来修 ...

  8. Java If ... Else

    章节 Java 基础 Java 简介 Java 环境搭建 Java 基本语法 Java 注释 Java 变量 Java 数据类型 Java 字符串 Java 类型转换 Java 运算符 Java 字符 ...

  9. 树莓派3b安装Windows10 Arm

    感谢老外的这个项目:https://github.com/WOA-Project/WOA-Deployer-Rpi 还有这个:https://uupdump.ml/ 首先从https://uupdum ...

  10. TP框架数据模型

    1.TP框架的数据模型需要建在Model文件夹下: 1.数据模型 与控制器相似,但是每个数据模型控制一张数据表. 2.数据模型可写可不写,如果不写 则沿用父类数据模型. 2.访问数据库: 1.更改数据 ...