搭建企业级HBase

本文详述了如何在三台机器上搭建企业级HBase集群,包括环境准备、集群规划、系统参数配置、HBase相关文件设置、路径创建、文件同步以及启动步骤。在配置过程中强调了时间同步、系统参数调整以及错误排查的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在写这一篇文章之前,先啰嗦一下上一篇文章,上一篇是配置hadoop ha ,但由于一些配置出错,导致最后的结果出错,虽然最后发现问题所在,但也花费了不少时间。而在搭建这些环境时,最重要的就是配置文件了,所以大家在配置文件时一定要仔细细心。


关于HBase的介绍在前面的文章中已经讲解过,这篇文章主要是配置企业级的HBase,之前的配置都是基于单机版,但如果用在真实的环境中,可能不止一台机器了。这里的实验环境我们使用三台电脑,两台master节点,一台regionserver。由于是测试,所以三台电脑配置一样,如果是实际使用,可能master和reginonserver的配置会稍有不同。企业级的配置我们一般要先设置电脑的系统参数,例如最大可打开的文件数,最多同时使用的进程数等;在配置好这些之后,再开始进行后面的配置。

一、前提

1、环境:

    系统:centos6.8

    jdk:1.7

    hbase:1.2.3

2.集群规划

namenode1:59.78.184.37  hmaster(active OR standby)/hdfs/zookeeper

namenode2:59.78.184.39  hmaster(active OR standby)/hdfs/zookeeper

datanode:59.78.184.43 regionserver/hdfs/zookeeper

3.配置系统参数

修改系统最大进程数和最多文件打开数

su root
vi /etc/security/limits.conf
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

修改完之后,可使用ulimit -a查看

调整linux内核数

 vi /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_users_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.mggmnb= 65536
kernel.mggmax= 65536
kernel.shmmax= 68719476736
kernel.shmall= 268435456
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
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
net.ipv4.tcp_tw_reuse= 1
net.ipv4.tcp_tw_recycle= 1
net.ipv4.tcp_keepalive_time= 1200
net.ipv4.tcp_syncookies= 1
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
net.ipv4.conf.eml.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
net.ipv4.conf.eml.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

之后运行:sysctl -p 使配置生效

4.使用ntp或其他工具使集群时间同步(这一点很重要,若时间不一致,会导致出错)

二、配置

1.将hbase的tar包拷贝至namenode1,并解压缩到/opt下,权限赋予给hadoop

2.配置以下几个文件:hbase-env.sh   hbase-site.xml   regionserver   backup-masters

hbase-env.sh:

</pre><pre name="code" class="plain">//配置java路径
export JAVA_HOME=/opt/java/jdk1.7.0_25
//设置hbase内存堆的大小
export HBASE_HEAPSIZE=1024
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
//设置hmaster最大可用内存
export HBASE_MASTER_OPTS="-Xmx512m"
//设置regionserver最大可用内存
export HBASE_REGIONSERVER_OPTS="-Xmx512m"
//设置hbase的log目录
export HBASE_LOG_DIR=${HBASE_HOME}/logs
//设置hbase的pid目录
export HBASE_PID_DIR=/opt/hbase/pids
//设置为false说明不使用自带的zookeeper
export HBASE_MANAGES_ZK=false
hbase-site.xml

</pre><pre name="code" class="plain"><configuration>
  <!--是否将log plit-->
  <property>
    <name>hbase.master.distributed.log.splitting</name>
    <value>false</value>
  </property>
  <!--hbase的路径,mycluster与hadoop中的core-site.xml中配置一致-->
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://mycluster/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name> 
    <value>true</value> 
  </property>
  <!--master的端口号-->
  <property>
    <name>hbase.master.port</name>
    <value>60000</value>
  </property>
  <!--指定zookeeper的机器名-->
  <property> 
    <name>hbase.zookeeper.quorum</name>
    <value>namenode1,namenode2,datanode</value>
  </property>
  <!--zookeeper的data路径,与zookeeper的一致-->
  <property> 
    <name>hbase.zookeeper.property.dataDir</name> 
    <value>/opt/hadoopdata/zookeeper/data</value> 
  </property>
  <property>
    <name>hbase.client.scanner.caching</name>
    <value>2000</value>
  </property>
  <!--最多存放的文件数-->
  <property>
    <name>hbase.hregion.max.filesize</name>
    <value>10737418240</value>
  </property>
  <property>
    <name>hbase.regionserver.regionSplitLimit</name>
    <value>2000</value>
  </property>
  <property>
    <name>hbase.hstore.compactionThreshold</name>
    <value>6</value>
  </property>
  <property>
    <name>hbase.hstore.blockingStoreFiles</name>
    <value>14</value>
  </property>
  <property>
    <name>hbase.hregion.memstore.block.multiplier</name>
    <value>20</value>
  </property>
  <property>
    <name>hbase.server.thread.wakefrequency</name>
    <value>500</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.maxClientCnxns</name>
    <value>2000</value>
  </property>
  <property>
    <name>hbase.regionserver.global.memstore.lowerLimit</name>
    <value>0.3</value>
  </property>
  <property>
    <name>hbase.regionserver.global.memstore.upperLimit</name>
    <value>0.39</value>
  </property>
  <property>
    <name>hfile.block.cache.size</name>
    <value>0.4</value>
  </property>
  <property>
    <name>hbase.regionserver.handler.count</name>
    <value>300</value>
  </property>
  <property>
    <name>hbase.client.retries.number</name>
    <value>5</value>
  </property>
  <property>
    <name>hbase.client.pause</name>
    <value>100</value>
  </property>
</configuration>
regionserver (配置regionserver的机器)

datanode
backup-masters(配置备用master机器名)

namenode2

将hadoop下的hdfs-site.xml拷贝的/opt/hbase/conf文件下,以便hbase能够找到hadoop

3.创建上述配置中的路径文件夹。

4.将配置好的hbase文件夹拷贝至其他两台机器中:

scp -r /opt/hbase-1.2.3 namenode2:/opt
scp -r /opt/hbase-1.2.3 datanode:/opt
5.各机器上配置环境变量

vi ~/.bashrc
export HBASE_HOME=/opt/hbase-1.2.3
export PATH=$PATH:$HBASE_HOME/bin
source ~/.bashrc 使配置生效

三、启动

以上配置完成之后,可启动hbase

1.依次启动zookeeper(可参见上一篇文章)

2.启动hdfs

namenode1上直接运行 ./start-dfs.sh 即可


3.启动hbase

namenode1上启动即可

cd /opt/hbase-1.2.3/bin
./start-hbase.sh

从上图可看出,依次启动了主master,regionserver和namenode2的备用master

4.在datanode上可以运行hbase shell查看hbase 是否可用,是否可建表,插入数据等。

5.在浏览器上查看

namenode1:


namenode2:



ps:之前启动hbase时失败过一次,报错如下:Couldn't create proxy provider null

这个是hadoop配置出错,在hdfs-site.xml文件中。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值