hbase集群安装与部署
1、相关环境
centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 hbase1.2.4
本篇文章仅涉及hbase集群的搭建,关于hadoop与zookeeper的相关部署参见上篇文章http://www.cnblogs.com/learn21cn/p/6184490.html
目标如下:
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<br/> yum install ntp -y<br/> # 查看NTP状态<br/> service ntpd status<br/> # 配置文件<br/> vim /etc/ntp.conf
以下是配置文件内容
#禁止所有机器来进行连接<br/> restrict default ignore<br/> #允许内网其他机器同步时间<br/> restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap<br/> #配置时间服务器的地址为本机(注视掉server0~server3)<br/> server 127.127.1.0
之后个节点与master进行同步,并设置NTP开机自动启动
# 终端执行命令同步时间<br/> ntpdate 192.168.1.215<br/> # 设置开机自动启动<br/> systemctl restart ntpd.service<br/> systemctl enable ntpd.service
以上为最初同步
2> 设置定时任务,使服务器定时同步时间
执行以下命令 :
crontab -e<br/># 在centos7中,可以直接vim /etc/crontab,效果是一样的,只不过需要指定用户
配置文件写入以下内容:
* * * /usr/sbin/ntpdate 192.168.1.215 >> /data/ntpd.log
保存后执行以下命令查看定时任务,并重启服务
crontab -l<br/> # 重启<br/> systemctl restart crond.service
3、设置linux系统最大进程数和最大文件打开数
使用root账号
root soft nproc<br/> root hard nproc<br/> root soft nofile<br/> root hard nofile<br/> hadoop soft nproc<br/> hadoop hard nproc<br/> hadoop soft nofile<br/> hadoop hard nofile
设置完重新登录shell,执行以下命令查看结果
ulimit -a
4、调整linux内核参数
打开文件 /etc/sysctl.conf,进行以下设置
net.ipv4.ip_forward=<br/> net.ipv4.conf.default.rp_filter =<br/> net.ipv4.conf.default.accept_source_route =<br/> kernel.core_uses_pid =<br/> net.ipv4.tcp_syncookies =<br/> net.bridge.bridge-nf-call-ip6tables =<br/> net.bridge.bridge-nf-call-iptables =<br/> net.bridge.bridge-nf-call-arptables =<br/> kernel.msgmnb =<br/> kernel.msgmax =<br/> kernel.shmmax =<br/> kernel.shmall =<br/> # 提高系统支持的最大SYN半连接数,表示SYN队列的长度,默认为1024,加大队列长度为,可以容纳最多等待连接的网络连接数<br/> net.ipv4.tcp_max_syn_backlog =<br/> net.core.netdev_max_backlog=<br/> net.core.somaxconn =<br/> fs.file-max =<br/> net.core.wmem_default =<br/> net.core.rmem_default =<br/> net.core.rmem_max =<br/> net.core.wmem_max =<br/> net.ipv4.tcp_timestamps =<br/> # 减少系统SYN连接重试次数(默认是5)<br/> # 为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK,也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。<br/> net.ipv4.tcp_synack_retries =<br/> net.ipv4.tcp_syn_retries =<br/> net.ipv4.tcp_mem =<br/> net.ipv4.tcp_max_orphans =<br/> # 以下两参数可解决生产场景中大量连接的Web(cache)服务器中TIME_WAIT过多问题<br/> # 表示开启重用。允许将TIME-WAIT的sockets重新用于新的TCP连接,默认为0表示关闭<br/> net.ipv4.tcp_tw_reuse =<br/> # 打开TIME-WAIT套接字重用及回收功能,表示开启TCP连接中TIME-WAIT的sockets的快速收回功能,默认为0表示关闭。<br/> net.ipv4.tcp_tw_recycle =<br/> # 当keepalive起用的时候,TCP发送keepalive消息的频度,缺省是2小时,改为1200秒<br/> net.ipv4.tcp_keepalive_time =<br/> net.ipv4.tcp_syncookies=<br/> # 减少处于FIN-WAIT-2连接状态的时间,使系统可以处理更多的连接,缺省值是60秒<br/> net.ipv4.tcp_fin_timeout =<br/> net.ipv4.tcp_keepalive_intvl =<br/> net.ipv4.tcp_keepalive_probes =<br/> # 允许系统打开的端口范围,表示用于向外连接的端口范围<br/> net.ipv4.ip_local_port_range =<br/> # 网卡eno16777736<br/> net.ipv4.conf.eno16777736.send_redirects =<br/> net.ipv4.conf.lo.send_redirects =<br/> net.ipv4.conf.default.send_redirects =<br/> net.ipv4.conf.all.send_redirects =<br/> net.ipv4.icmp_echo_ignore_broadcasts =<br/> # 网卡eno16777736<br/> net.ipv4.conf.eno16777736.accept_source_route =<br/> net.ipv4.conf.lo.accept_source_route =<br/> net.ipv4.conf.default.accept_source_route =<br/> net.ipv4.conf.all.accept_source_route=<br/> net.ipv4.icmp_ignore_bogus_error_responses =<br/> kernel.core_pattern = /tmp/core<br/> vm.overcommit_memory =
之后,一定要执行以下命令进行检查,防止出现错误,例如“没有那个文件或目录”之类
# 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载<br/> sysctl -p
5、配置文件
1> hbase-env.sh
# 配置JDK安装路径<br/> export JAVA_HOME=/usr/java/jdk<br/> # 配置Hadoop安装路径<br/> export HADOOP_HOME=/usr/Apache/hadoop<br/> # 设置HBase的日志目录<br/> export HBASE_LOG_DIR=${HBASE_HOME}/logs<br/> # 设置HBase的pid目录<br/> export HBASE_PID_DIR=${HBASE_HOME}/pids<br/> # 使用独立的ZooKeeper集群<br/> export HBASE_MANAGES_ZK=false<br/> # 设置HBase内存堆的大小<br/> export HBASE_HEAPSIZE=<br/> # 设置HMaster最大可用内存<br/> export HBASE_MASTER_OPTS="-Xmx512m"<br/> # 设置HRegionServer最大可用内存<br/> export HBASE_REGIONSERVER_OPTS="-Xmx512m"
注意:
企业实际部署时,datanode一般设置16到20G左右,过小与过大都不合适;regionserver一般可以设置32到48,或者以上;hmaster一般4到8G足够了。此外实际部署当中,hmaster与regionserver一般不在同一机器中。
2> hbase-site.xml参数说明见注释
<configuration><br/> <!-- 开启分布式模式 --><br/> <property><br/> <name>hbase.cluster.distributed</name><br/> <value>true</value><br/> </property> <!-- 设置HRegionServers目录 --><br/> <property><br/> <name>hbase.rootdir</name><br/> <value>hdfs://nscluster/hbase</value><br/> </property> <!-- 设置HMaster的rpc端口 --><br/> <property><br/> <name>hbase.master.port</name><br/> <value>16000</value><br/> </property> <!-- 设置HMaster的http端口 --><br/> <property><br/> <name>hbase.master.info.port</name><br/> <value>16010</value><br/> </property> <!-- 指定缓存文件存储的路径 --><br/> <property><br/> <name>hbase.tmp.dir</name><br/> <value>/usr/Apache/hbase/data/tmp</value><br/> </property> <!-- 指定ZooKeeper集群位置 --><br/> <property><br/> <name>hbase.zookeeper.quorum</name><br/> <value>master,data1,data2</value><br/> </property> <!-- 指定ZooKeeper集群端口 --><br/> <property><br/> <name>hbase.zookeeper.property.clientPort</name><br/> <value>2181</value><br/> </property> <!--指定Zookeeper数据目录,需要与ZooKeeper集群上配置相一致 --><br/> <property><br/> <name>hbase.zookeeper.property.dataDir</name><br/> <value>/usr/Apache/zookeeper/data</value><br/> </property> <!-- ZooKeeper客户端同时访问的并发连接数,需要与ZooKeeper集群上配置相一致,可设置为2000 --><br/> <property><br/> <name>hbase.zookeeper.property.maxClientCnxns</name><br/> <value>60</value><br/> </property> <!-- 优化配置项 --><br/> <!-- 关闭分布式日志拆分 --><br/> <property><br/> <name>hbase.master.distributed.log.splitting</name><br/> <value>false</value><br/> </property> <!-- hbase客户端rpc扫描一次获取的行数,增大参数可以提高扫描次数,但同时会增加内存的使用 --><br/> <property><br/> <name>hbase.client.scanner.caching</name><br/> <value>2000</value><br/> </property> <!-- HRegion分裂前最大的文件大小(以下数字标识了10G)当HStoreFile 大于这个文件时,就会split 成两个文件 --><br/> <property><br/> <name>hbase.hregion.max.filesize</name><br/> <value>10737418240</value><br/> </property> <!-- 一个HRegionServer中最大的region数量 --><br/> <property><br/> <name>hbase.regionserver.reginoSplitLimit</name><br/> <value>2000</value><br/> </property> <!-- 当某一个region的storefile个数达到该值则block写入,等待compact,或者说定义storefile数量达到多少时block住update操作 默认7 --><br/> <!-- 设置过小会使影响系统吞吐率,但也不应过大,经验值是15到20左右。太大的话会在系统压力很大时使storefile过多,compact一直无法完成,扫库或者数据读取的性能会受到影响。--><br/> <!--同时,可以适当提高一些hbase.hstore.compactionThreshold,增加compact的处理线程数,加快compact的处理速度而避免block--><br/> <property><br/> <name>hbase.hstore.blockingStoreFiles</name><br/> <value>14</value><br/> </property> <!-- StoreFile的个数超过这个数就开始合并 默认值为3--><br/> <property><br/> <name>hbase.hstore.compactionThreshold</name><br/> <value>6</value><br/> </property> <!-- 超过memstore大小的倍数达到该值则block所有写入请求,自我保护 --><br/> <property><br/> <name>hbase.hregion.memstore.block.multiplier</name><br/> <value>20</value><br/> </property> <!-- service工作的sleep间隔 默认10000--><br/> <property><br/> <name>hbase.server.thread.wakefrequency</name><br/> <value>500</value><br/> </property> <!-- 以下三项通常联合起来调整 --><br/> <!-- MemStore flush 顺序是按照大小降序执行的,直到刷新到MemStore使用内存略小于该百分比 --><br/> <property><br/> <name>hbase.regionserver.global.memstore.lowerLimit</name><br/> <value>0.3</value><br/> </property> <!-- hbase.regionserver.global.memstore.upperLimit与hbase.block.cache.size这两项合起来不能超过0.8,谁大谁小取决于业务偏向于读还是写,如果读多一些就把读缓存设置大一些 --><br/> <!-- 默认0.4 当MemStore使用内存总量达到该值(总量的百分比)时,block所有更新,将会有多个MemStores flush到文件中--><br/> <property><br/> <name>hbase.regionserver.global.memstore.upperLimit</name><br/> <value>0.39</value><br/> </property><br/> <!-- 读缓存占堆的百分比,默认0.25 --><br/> <property><br/> <name>hbase.block.cache.size</name><br/> <value>0.4</value><br/> </property> <!-- RegionServer处理rpc线程数,默认10 --><br/> <property><br/> <name>hbase.reginoserver.handler.count</name><br/> <value>300</value><br/> </property> <!-- 客户端最大重试次数,默认10 --><br/> <property><br/> <name>hbase.client.retries.number</name><br/> <value>5</value><br/> </property> <!-- 客户端重试的休眠时间 --><br/> <property><br/> <name>hbase.client.pause</name><br/> <value>100</value><br/> </property><br/> </configuration>
3> 配置regionservers文件
目录:$HBASE_HOME/conf/,添加以下节点
data1<br/> data2
4> 配置backup-masters文件
目录:$HBASE_HOME/conf/,添加以下节点
data1
表示data1是一个备用的HMaster节点
6、创建配置文件中出现的文件夹
cd /usr/Apache/hbase<br/> # 创建hbase的缓存文件目录<br/> mkdir data/tmp<br/> # 创建hbase的日志文件目录<br/> mkdir logs<br/> # 创建hbase的pid文件目录<br/> mkdir pids
将hbase以及相关软件分发到其他机器。
7、环境变量设置所有的节点都要配置,~/.bashrc 或 ~/.bash_profile
export HADOOP_HOME=/usr/Apache/hadoop<br/> export ZOOKEEPER_HOME=/usr/Apache/zookeeper<br/> export HBASE_HOME=/usr/Apache/hbase<br/> export HADOOP_COMMON_HOME=$HADOOP_HOME<br/> export HADOOP_HDFS_HOME=$HADOOP_HOME<br/> export HADOOP_MAPRED_HOME=$HADOOP_HOME<br/> export HADOOP_YARN_HOME=$HADOOP_HOME<br/> export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop<br/> export CLASSPATH=.:$HADOOP_HOME/lib:$CLASSPATH<br/> export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:$HBASE_HOME/bin
8、启动与关闭
start-hbase.sh<br/> stop-hbase.sh
master节点
访问:192.168.1.215:16010/
data1节点会作为一个备用节点,如果master节点关闭,data1节点会成为主节点,这就是设置了backup-masters文件的作用,当然前提hbase使用了zookeeper集群。
访问:192.168.1.218:16010/
转发申明:
本文转自互联网,由小站整理并发布,在于分享相关技术和知识。版权归原作者所有,如有侵权,请联系本站 top8488@163.com,将在24小时内删除。谢谢