Hive是facebook开源的一个非常伟大的工具,可以将Hadoop中的数据用sql方式进行查询,比自己写map/reduce程序要方便很多。但是在实际使用中发现hive其实不够稳定,极少数情况会出现端口不响应或者进程丢失的问题,所以考虑将hive做成负载均衡的方式。或者更严格的说,叫做失效备份,避免出现某台个别的服务器连接数过大造成的端口不响应或者服务器故障造成无法查询。
前提是有2-3台服务器作为hive server,一台放置HAProxy。
一、安装配置HAProxy
#wget
#tar zxf haproxy-1.4.20.tar.gz
#mv haproxy-1.4.20 /opt/modules/haproxy
#cd /opt/modules/haproxy
#make TARGET=linux26
这样就编译完成了。
然后来配置HAProxy为四层代理,仅作为端口转发器使用。
global
daemon
nbproc 1
pidfile /var/run/haproxy.pid
ulimit-n 65535
####################
defaults
mode tcp #mode { tcp|http|health },tcp 表示4层,http表示7层(对我们没用),health仅作为健康检查使用
retries 2 #尝试2次失败则从集群摘除
option redispatch #如果失效则强制转换其他服务器
option abortonclose #连接数过大自动关闭
maxconn 1024 #最大连接数
timeout connect 1d #连接超时时间,重要,hive查询数据能返回结果的保证
timeout client 1d #同上
timeout server 1d #同上
timeout check 2000 #健康检查时间
log 127.0.0.1 local0 err #[err warning info debug]
################
listen admin_stats #定义管理界面
bind 0.0.0.0:1090 #管理界面访问IP和端口
mode http #管理界面所使用的协议
maxconn 10 #最大连接数
stats refresh 30s #30秒自动刷新
stats uri / #访问url
stats realm Hive\ Haproxy #验证窗口提示
stats auth admin:123456 #401验证用户名密码
########hive1#################
listen hive#hive后端定义
bind 0.0.0.0:10000 #ha作为proxy所绑定的IP和端口
mode tcp #以4层方式代理,重要
balance leastconn #调度算法 'leastconn' 最少连接数分配,或者 'roundrobin',轮询分配
maxconn 1024 #最大连接数
server hive_215 192.168.1.49:10000 check inter 1000 rise 1 fall 2
#释义:server 主机代名(你自己能看懂就行),IP:端口 每1000毫秒检查一次。
server hive_216 192.168.1.50:10000 check inter 1000 rise 1 fall 2
#同上,另外一台服务器。
用haproxy -f haproxy.conf启动。