阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

HBase集群安装与部署

155次阅读
没有评论

共计 12163 个字符,预计需要花费 31 分钟才能阅读完成。

1、相关环境

CentOS7 Hadoop2.6.5 zookeeper3.4.9 jdk1.8 hbase1.2.4

本篇文章仅涉及 hbase 集群的搭建,关于 hadoop 与 zookeeper 的相关部署参见Zookeeper 集群的搭建及 Hadoop HA 的相关配置  http://www.linuxidc.com/Linux/2016-12/138430.htm

目标如下:

master 192.1.68.1.215 HMaster
data1 192.168.1.218 HMaster 备用 HRegionServer
data2 192.168.1.219 HRegionServer

2、关于时间同步的问题

安装 hbase,需要服务器之间的时间同步,10 秒之内是可接受的范围

1> 安装与配置 NTP

每个节点都要安装,以 master 来作为时间服务器

# 安装 NTP
yum install ntp -y 
# 查看 NTP 状态
service ntpd status
# 配置文件
vim /etc/ntp.conf

以下是配置文件内容

# 禁止所有机器来进行连接
restrict default ignore
#允许内网其他机器同步时间
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
#配置时间服务器的地址为本机(注视掉 server0~server3)
server  127.127.1.0

之后个节点与 master 进行同步,并设置 NTP 开机自动启动

# 终端执行命令同步时间         
ntpdate 192.168.1.215
# 设置开机自动启动        
systemctl restart ntpd.service
systemctl enable ntpd.service

以上为最初同步

2> 设置定时任务,使服务器定时同步时间

执行以下命令:

crontab -e

 配置文件写入以下内容:

0    1    *    *    *    /usr/sbin/ntpdate    192.168.1.215    >> /data/ntpd.log

保存后执行以下命令查看定时任务,并重启服务

crontab -l
# 重启
systemctl restart crontab.service

3、设置 linux 系统最大进程数和最大文件打开数

使用 root 账号

root            soft    nproc           50000
root            hard    nproc           50000
root            soft    nofile          25535
root            hard    nofile          25535
hadoop          soft    nproc           50000
hadoop          hard    nproc           50000
hadoop          soft    nofile          25535
hadoop          hard    nofile          25535

设置完 重新登录 shell,执行以下命令查看结果

ulimit -a

HBase 集群安装与部署

Hadoop+HBase 搭建云存储总结 PDF http://www.linuxidc.com/Linux/2013-05/83844.htm

Ubuntu Server 14.04 下 Hbase 数据库安装  http://www.linuxidc.com/Linux/2016-05/131499.htm

HBase 结点之间时间不一致造成 regionserver 启动失败 http://www.linuxidc.com/Linux/2013-06/86655.htm

CentOS 6.3 下 HBase 伪分布式平台搭建  http://www.linuxidc.com/Linux/2016-11/136830.htm

Hadoop 集群安装 &HBase 实验环境搭建 http://www.linuxidc.com/Linux/2013-04/83560.htm

基于 Hadoop 集群的 HBase 集群的配置 http://www.linuxidc.com/Linux/2013-03/80815.htm‘

Hadoop 安装部署笔记之 -HBase 完全分布模式安装 http://www.linuxidc.com/Linux/2012-12/76947.htm

单机版搭建 HBase 环境图文教程详解 http://www.linuxidc.com/Linux/2012-10/72959.htm

4、调整 Linux 内核参数

打开文件 /etc/sysctl.conf,进行以下设置

net.ipv4.ip_forward= 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 268435456
# 提高系统支持的最大 SYN 半连接数,表示 SYN 队列的长度,默认为 1024,加大队列长度为,可以容纳最多等待连接的网络连接数
net.ipv4.tcp_max_syn_backlog = 65000
net.core.netdev_max_backlog= 32768
net.core.somaxconn = 32768
fs.file-max = 65000
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_timestamps = 1
# 减少系统 SYN 连接重试次数(默认是 5)# 为了打开对端的连接,内核需要发送一个 SYN 并附带一个回应前面一个 SYN 的 ACK,也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送 SYN+ACK 包的数量。net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800
# 以下两参数可解决生产场景中大量连接的 Web(cache)服务器中 TIME_WAIT 过多问题
# 表示开启重用。允许将 TIME-WAIT 的 sockets 重新用于新的 TCP 连接,默认为 0 表示关闭
net.ipv4.tcp_tw_reuse = 1
# 打开 TIME-WAIT 套接字重用及回收功能,表示开启 TCP 连接中 TIME-WAIT 的 sockets 的快速收回功能,默认为 0 表示关闭。net.ipv4.tcp_tw_recycle = 1
# 当 keepalive 起用的时候,TCP 发送 keepalive 消息的频度,缺省是 2 小时,改为 1200 秒
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies= 1
# 减少处于 FIN-WAIT- 2 连接状态的时间,使系统可以处理更多的连接,缺省值是 60 秒
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 3
# 允许系统打开的端口范围,表示用于向外连接的端口范围
net.ipv4.ip_local_port_range = 1024 65535
# 网卡 eno16777736
net.ipv4.conf.eno16777736.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 网卡 eno16777736
net.ipv4.conf.eno16777736.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_source_route= 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
kernel.core_pattern = /tmp/core
vm.overcommit_memory = 1

之后,一定要执行以下命令进行检查,防止出现错误,例如“没有那个文件或目录”之类

# 从指定的文件加载系统参数,如不指定即从 /etc/sysctl.conf 中加载
sysctl -p

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-12/138536p2.htm

5、配置文件

 1> hbase-env.sh

# 配置 JDK 安装路径
export JAVA_HOME=/usr/java/jdk
# 配置 Hadoop 安装路径
export HADOOP_HOME=/usr/Apache/hadoop
# 设置 HBase 的日志目录
export HBASE_LOG_DIR=${HBASE_HOME}/logs
# 设置 HBase 的 pid 目录
export HBASE_PID_DIR=${HBASE_HOME}/pids
# 使用独立的 ZooKeeper 集群
export HBASE_MANAGES_ZK=false
# 设置 HBase 内存堆的大小
export HBASE_HEAPSIZE=1024
# 设置 HMaster 最大可用内存
export HBASE_MASTER_OPTS="-Xmx512m"
# 设置 HRegionServer 最大可用内存
export HBASE_REGIONSERVER_OPTS="-Xmx512m"

注意:
企业实际部署时,datanode 一般设置 16 到 20G 左右,过小与过大都不合适;regionserver 一般可以设置 32 到 48,或者以上;hmaster 一般 4 到 8G 足够了。此外实际部署当中,hmaster 与 regionserver 一般不在同一机器中。

2> hbase-site.xml 参数说明见注释

<configuration>
    <!-- 开启分布式模式 -->
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
  
    <!-- 设置 HRegionServers 目录 -->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://nscluster/hbase</value>
    </property>
  
    <!-- 设置 HMaster 的 rpc 端口 -->
    <property>
        <name>hbase.master.port</name>
        <value>16000</value>
    </property>
  
    <!-- 设置 HMaster 的 http 端口 -->
    <property>
        <name>hbase.master.info.port</name>
        <value>16010</value>
    </property>
  
    <!-- 指定缓存文件存储的路径 -->
    <property>
        <name>hbase.tmp.dir</name>
        <value>/usr/Apache/hbase/data/tmp</value>
    </property>  
    
    <!-- 指定 ZooKeeper 集群位置 -->
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master,data1,data2</value>
    </property>
  
    <!-- 指定 ZooKeeper 集群端口 -->
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
  
    <!--指定 Zookeeper 数据目录,需要与 ZooKeeper 集群上配置相一致 -->
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/usr/Apache/zookeeper/data</value>
    </property>
  
    <!-- ZooKeeper 客户端同时访问的并发连接数,需要与 ZooKeeper 集群上配置相一致,可设置为 2000 -->
    <property>
        <name>hbase.zookeeper.property.maxClientCnxns</name>
        <value>60</value>
    </property>
  
    <!-- 优化配置项 -->
    <!-- 关闭分布式日志拆分 -->
    <property>
        <name>hbase.master.distributed.log.splitting</name>
        <value>false</value>
    </property>
  
    <!-- hbase 客户端 rpc 扫描一次获取的行数,增大参数可以提高扫描次数,但同时会增加内存的使用 -->
    <property>
        <name>hbase.client.scanner.caching</name>
        <value>2000</value>
    </property>
  
    <!-- HRegion 分裂前最大的文件大小(以下数字标识了 10G)当 HStoreFile 大于这个文件时,就会 split 成两个文件 -->
    <property>
        <name>hbase.hregion.max.filesize</name>
        <value>10737418240</value>
    </property>
  
    <!-- 一个 HRegionServer 中最大的 region 数量 -->
    <property>
        <name>hbase.regionserver.reginoSplitLimit</name>
        <value>2000</value>
    </property>
   
    <!-- 当某一个 region 的 storefile 个数达到该值则 block 写入,等待 compact,或者说定义 storefile 数量达到多少时 block 住 update 操作  默认 7 -->
    <!-- 设置过小会使影响系统吞吐率,但也不应过大,经验值是 15 到 20 左右。太大的话会在系统压力很大时使 storefile 过多,compact 一直无法完成,扫库或者数据读取的性能会受到影响。-->
    <!--同时,可以适当提高一些 hbase.hstore.compactionThreshold,增加 compact 的处理线程数,加快 compact 的处理速度而避免 block-->  
    <property>
        <name>hbase.hstore.blockingStoreFiles</name>
        <value>14</value>    
    </property>
  
    <!-- StoreFile 的个数超过这个数就开始合并 默认值为 3 -->
    <property>
        <name>hbase.hstore.compactionThreshold</name>
        <value>6</value>
    </property>
  
  
    <!-- 超过 memstore 大小的倍数达到该值则 block 所有写入请求,自我保护 -->
    <property>
        <name>hbase.hregion.memstore.block.multiplier</name>
        <value>20</value>
    </property>
  
    <!-- service 工作的 sleep 间隔 默认 10000-->
    <property>
        <name>hbase.server.thread.wakefrequency</name>
        <value>500</value>
    </property>
     
    <!-- 以下三项通常联合起来调整 -->  
    <!-- MemStore flush 顺序是按照大小降序执行的,直到刷新到 MemStore 使用内存略小于该百分比 -->
    <property>
        <name>hbase.regionserver.global.memstore.lowerLimit</name>
        <value>0.3</value>
    </property>
  
    <!-- hbase.regionserver.global.memstore.upperLimit 与 hbase.block.cache.size 这两项合起来不能超过 0.8,谁大谁小取决于业务偏向于读还是写,如果读多一些就把读缓存设置大一些 -->  
    <!-- 默认 0.4 当 MemStore 使用内存总量达到该值(总量的百分比)时,block 所有更新,将会有多个 MemStores flush 到文件中-->
    <property>
        <name>hbase.regionserver.global.memstore.upperLimit</name>
        <value>0.39</value>
    </property>
    <!-- 读缓存占堆的百分比,默认 0.25 -->  
    <property>
        <name>hbase.block.cache.size</name>
        <value>0.4</value>
    </property>
  
    <!-- RegionServer 处理 rpc 线程数,默认 10 -->
    <property>
        <name>hbase.reginoserver.handler.count</name>
        <value>300</value>
    </property>
  
    <!-- 客户端最大重试次数,默认 10 -->
    <property>
        <name>hbase.client.retries.number</name>
        <value>5</value>
    </property>
  
    <!-- 客户端重试的休眠时间 -->
    <property>
        <name>hbase.client.pause</name>
        <value>100</value>
    </property>
</configuration>

3> 配置 regionservers 文件

目录:$HBASE_HOME/conf/,添加以下节点

data1
data2

4> 配置 backup-masters 文件

目录:$HBASE_HOME/conf/,添加以下节点

data1

表示 data1 是一个备用的 HMaster 节点

6、创建配置文件中出现的文件夹

cd /usr/Apache/hbase
# 创建 hbase 的缓存文件目录
mkdir data/tmp
# 创建 hbase 的日志文件目录
mkdir logs
# 创建 hbase 的 pid 文件目录
mkdir pids

7、环境变量设置

~/.bashrc 或 ~/.bash_profile

export HADOOP_HOME=/usr/Apache/hadoop
export ZOOKEEPER_HOME=/usr/Apache/zookeeper
export HBASE_HOME=/usr/Apache/hbase
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export CLASSPATH=.:$HADOOP_HOME/lib:$CLASSPATH
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:$HBASE_HOME/bin

8、启动与关闭

start-hbase.sh
stop-hbase.sh

master 节点

访问:192.168.1.215:16010/

HBase 集群安装与部署

 data1节点会作为一个备用节点,如果 master 节点关闭,data1节点会成为主节点,这就是设置了 backup-masters 文件的作用,当然前提 hbase 使用了 zookeeper 集群。

 访问:192.168.1.218:16010/

HBase 集群安装与部署

HBase 的详细介绍:请点这里
HBase 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138536.htm 

1、相关环境

CentOS7 Hadoop2.6.5 zookeeper3.4.9 jdk1.8 hbase1.2.4

本篇文章仅涉及 hbase 集群的搭建,关于 hadoop 与 zookeeper 的相关部署参见Zookeeper 集群的搭建及 Hadoop HA 的相关配置  http://www.linuxidc.com/Linux/2016-12/138430.htm

目标如下:

master 192.1.68.1.215 HMaster
data1 192.168.1.218 HMaster 备用 HRegionServer
data2 192.168.1.219 HRegionServer

2、关于时间同步的问题

安装 hbase,需要服务器之间的时间同步,10 秒之内是可接受的范围

1> 安装与配置 NTP

每个节点都要安装,以 master 来作为时间服务器

# 安装 NTP
yum install ntp -y 
# 查看 NTP 状态
service ntpd status
# 配置文件
vim /etc/ntp.conf

以下是配置文件内容

# 禁止所有机器来进行连接
restrict default ignore
#允许内网其他机器同步时间
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
#配置时间服务器的地址为本机(注视掉 server0~server3)
server  127.127.1.0

之后个节点与 master 进行同步,并设置 NTP 开机自动启动

# 终端执行命令同步时间         
ntpdate 192.168.1.215
# 设置开机自动启动        
systemctl restart ntpd.service
systemctl enable ntpd.service

以上为最初同步

2> 设置定时任务,使服务器定时同步时间

执行以下命令:

crontab -e

 配置文件写入以下内容:

0    1    *    *    *    /usr/sbin/ntpdate    192.168.1.215    >> /data/ntpd.log

保存后执行以下命令查看定时任务,并重启服务

crontab -l
# 重启
systemctl restart crontab.service

3、设置 linux 系统最大进程数和最大文件打开数

使用 root 账号

root            soft    nproc           50000
root            hard    nproc           50000
root            soft    nofile          25535
root            hard    nofile          25535
hadoop          soft    nproc           50000
hadoop          hard    nproc           50000
hadoop          soft    nofile          25535
hadoop          hard    nofile          25535

设置完 重新登录 shell,执行以下命令查看结果

ulimit -a

HBase 集群安装与部署

Hadoop+HBase 搭建云存储总结 PDF http://www.linuxidc.com/Linux/2013-05/83844.htm

Ubuntu Server 14.04 下 Hbase 数据库安装  http://www.linuxidc.com/Linux/2016-05/131499.htm

HBase 结点之间时间不一致造成 regionserver 启动失败 http://www.linuxidc.com/Linux/2013-06/86655.htm

CentOS 6.3 下 HBase 伪分布式平台搭建  http://www.linuxidc.com/Linux/2016-11/136830.htm

Hadoop 集群安装 &HBase 实验环境搭建 http://www.linuxidc.com/Linux/2013-04/83560.htm

基于 Hadoop 集群的 HBase 集群的配置 http://www.linuxidc.com/Linux/2013-03/80815.htm‘

Hadoop 安装部署笔记之 -HBase 完全分布模式安装 http://www.linuxidc.com/Linux/2012-12/76947.htm

单机版搭建 HBase 环境图文教程详解 http://www.linuxidc.com/Linux/2012-10/72959.htm

4、调整 Linux 内核参数

打开文件 /etc/sysctl.conf,进行以下设置

net.ipv4.ip_forward= 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 268435456
# 提高系统支持的最大 SYN 半连接数,表示 SYN 队列的长度,默认为 1024,加大队列长度为,可以容纳最多等待连接的网络连接数
net.ipv4.tcp_max_syn_backlog = 65000
net.core.netdev_max_backlog= 32768
net.core.somaxconn = 32768
fs.file-max = 65000
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_timestamps = 1
# 减少系统 SYN 连接重试次数(默认是 5)# 为了打开对端的连接,内核需要发送一个 SYN 并附带一个回应前面一个 SYN 的 ACK,也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送 SYN+ACK 包的数量。net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800
# 以下两参数可解决生产场景中大量连接的 Web(cache)服务器中 TIME_WAIT 过多问题
# 表示开启重用。允许将 TIME-WAIT 的 sockets 重新用于新的 TCP 连接,默认为 0 表示关闭
net.ipv4.tcp_tw_reuse = 1
# 打开 TIME-WAIT 套接字重用及回收功能,表示开启 TCP 连接中 TIME-WAIT 的 sockets 的快速收回功能,默认为 0 表示关闭。net.ipv4.tcp_tw_recycle = 1
# 当 keepalive 起用的时候,TCP 发送 keepalive 消息的频度,缺省是 2 小时,改为 1200 秒
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies= 1
# 减少处于 FIN-WAIT- 2 连接状态的时间,使系统可以处理更多的连接,缺省值是 60 秒
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 3
# 允许系统打开的端口范围,表示用于向外连接的端口范围
net.ipv4.ip_local_port_range = 1024 65535
# 网卡 eno16777736
net.ipv4.conf.eno16777736.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 网卡 eno16777736
net.ipv4.conf.eno16777736.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_source_route= 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
kernel.core_pattern = /tmp/core
vm.overcommit_memory = 1

之后,一定要执行以下命令进行检查,防止出现错误,例如“没有那个文件或目录”之类

# 从指定的文件加载系统参数,如不指定即从 /etc/sysctl.conf 中加载
sysctl -p

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-12/138536p2.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计12163字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中