主要内容:
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