首页 > 代码库 > 搭建企业级HBase

搭建企业级HBase

主要内容:

1. 集群规划

2. 企业级系统参数配置

3. Hadoop动态替换节点

4. HBase动态替换节点

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1. 集群规划

    HBase企业级使用常见场景:

    (1)大数据量(100TB级数据)且有快速随机访问的需求。

    (2)容量扩展容易便捷,动态扩展系统容量是必须的。

    (3)业务场景简单,不需要关系数据库中很多特性。

    (4)合理设计rowkey。因为hbase的查询用rowkey是最高效的,也几乎是生产环境下唯一可行的方式。

    在搭建HBase高可用集群时,将HBase的RegionServer部署在HDFS的3个DataNode节点上,HBase的HMaster服务部署在HDFS的2个NameNode(Active和Standby)节点上,部署2个HMaster保证集群的高可用性,防止单点问题。这里使用了独立的ZooKeeper集群,未使用HBase自带的ZooKeeper。下面给出HBase的集群搭建架构图:

技术分享

    搭建HBase HA集群需要首先搭建Hadoop HA集群,其方法可参考Hadoop2 HA这篇博客。在其基础上加入HBase HA,规划整个集群由5台主机组成。

2. 企业级系统参数配置

  $ ulimit -a   // 查看linux系统最大进程数和最大文件打开数

  // 设置linux系统最大进程数和最大文件打开数(设置完重新登录shell)

$ suroot
# vim/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
// 调整linux内核参数
# vim/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

3. Hadoop动态替换节点

  (1)添加节点

    添加节点有两种方式:一种是静态添加,关闭hadoop集群,配置相应配置,重启集群;另一种是动态添加,在不重启集群的情况下添加节点。

        a. 设置新datanode与namenode的SSH无密码登陆

        b. 在hosts添加主机名称,并且把该文件复制到集群中的其他节点上。

        c. 修改namenode节点上的slaves文件(主要用于下次重启的时候使用)

        d. 在datanode中启动进程:

            sbin/hadoop-daemon.sh start datanode 

            sbin/yarn-daemon.sh start nodemanager

        e. 在datanode中启动:start-balancer.sh均衡当前的hdfs块

  (2)删除节点

        a. 需要在hdfs-site.xml配置文件中配置:

         <property>

                <name>dfs.hosts.exclude</name>

                <value>/usr/local/cluster/hadoop-2.2.0/etc/hadoop/exclude</value>

        </property>

    在hadoop 2.2.0的文档中说通过配置dfs.namenode.hosts.exclude,发现没有效果,使用早期版本的配置项dfs.hosts.exclude才有效果

        b. 在exclude文件中添加需要删除的节点。

    然后执行刷新命令:hdfs dfsadmin -refreshNodes

    根据hdfs dfsadmin -report可以查看该节点的状况

4. HBase动态替换节点

  (1)添加HBase节点

    在HMaster的regionserver配置文件中添加新节点的host。

    在新节点中通过下面命令启动HRegionServer:

    hbase-daemon.sh start regionserver

    可以通过hbase shell和status进行确认。 

  (2)删除HBase节点

    hbase-daemon.sh stop regionserver

    在下线节点前要停止Load Balancer

    要下线一台RegionServer可以这样做,当执行graceful_stop脚本的时候,要将Region Load Balancer关掉,否则balancer和下线脚本会在region部署的问题上存在冲突。

    graceful_stop.sh HOSTNAME

 

 

搭建企业级HBase