Hive HA使用说明及Hive使用HAProxy配置HA(高可用)

Hive HA使用说明及Hive使用HAProxy配置HA(高可用) http://www.aboutyun.com/thread-10938-1-1.html (出处: about云开发)


问题导读


1.为什么会产生hive HA?
2.hive HA需要修改哪些配置?
3.hive如何启动及使用?







Hive HA使用说明


hive让大数据飞了起来,不再需要专人写MR。平常我们都可以用基于thrift的任意语言来调用hive。
不过爱恨各半,hive的thrift不稳定也是出了名的。很容易就出问题,让人无计可施。唯一的办法就是不断kill,不断restart。
当然,我们可以用haproxy来解决这个问题,关键,haproxy不管hive是否逻辑可用,不能执行逻辑的hive也“死马当活马”。
当然,搞的好的可以用 zookeeper,不过,它太“重”,而且不管hive的重启。

         Hive HA横空出世。只要指明它可以管理的服务器ip,端口,启动一个主控服务器,在其他服务器上启动节点服务,它就一切搞定。
        Hive HA原理是:
       将若干hive 实例纳入一个资源池,然后对外提供一个唯一的接口,进行proxy relay。
      对于程序开发人员,就把它认为是一台超强“hive"就可以。每次它接收到一个HIVE查询连接后,都会轮询资源池里可用的hive 资源。
这样,能充分使用每个hive server,减少压力。在拿到hive 连接后,Hive HA会首先进行逻辑可用测试,这个逻辑规则可自行配置。
      如果逻辑可用,则直接把客户端的HIVE 查询连接 relay到该hive server。
     若逻辑不可用,则将该hive server放入黑名单,然后继续读取池里其他hive server进行连接测试。
    Hive Ha每隔一段时间(可配置),对黑名单中的hive server进行处理,通过和节点管理服务器通讯,重启该hive server。如果
重启后可用,则将该hive从黑名单中移除,加入资源池。

Hive HA地址:
https://github.com/foxmoon/HiveHa







Hive使用HAProxy配置HA(高可用)


HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HAProxy是完全免费的、借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。

  • 免费开源,稳定性也是非常好,这个可通过我做的一些小项目可以看出来,单Haproxy也跑得不错,稳定性可以与硬件级的F5相媲美。 根据官方文档,HAProxy可以跑满10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom's 10GbE NICs (Myri-10G PCI-Express),这个数值作为软件级负载均衡器是相当惊人的。
  • HAProxy 支持连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。 这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。
  • HAProxy 支持全透明代理(已具备硬件防火墙的典型特点): 可以用客户端IP地址或者任何其他地址来连接后端服务器. 这个特性仅在Linux 2.4/2.6内核打了cttproxy补丁后才可以使用. 这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。
  • HAProxy现多于线上的Mysql集群环境,我们常用于它作为MySQL(读)负载均衡;
  • 自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警,这个也是我非常喜欢它的原因之一;
  • HAProxy支持虚拟主机,许多朋友说它不支持虚拟主机是错误的,通过测试我们知道,HAProxy是支持虚拟主机的。

HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
安装配置
在 HAProxy官网下载安装包并编译
  1. wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz|tar zxvf
  2. mv haproxy-1.4.24 /opt/haproxy-1.4.24
  3. cd /opt/haproxy-1.4.24
  4. make TARGET=linux26
复制代码


添加配置文件
在/opt/haproxy-1.4.24目录下创建一个config.cfg文件,添加如下内容:
  1. global
  2.         daemon
  3.         nbproc 1
  4.         pidfile /var/run/haproxy.pid
  5.         ulimit-n 65535

  6. defaults
  7.         mode tcp                        #mode { tcp|http|health },tcp 表示4层,http表示7层,health仅作为健康检查使用
  8.         retries 2                       #尝试2次失败则从集群摘除
  9.         option redispatch               #如果失效则强制转换其他服务器
  10.         option abortonclose             #连接数过大自动关闭
  11.         maxconn 1024                    #最大连接数
  12.         timeout connect 1d              #连接超时时间,重要,hive查询数据能返回结果的保证
  13.         timeout client 1d               #同上
  14.         timeout server 1d               #同上
  15.         timeout check 2000              #健康检查时间
  16.         log 127.0.0.1 local0 err #[err warning info debug]

  17. listen  admin_stats                     #定义管理界面
  18.         bind 0.0.0.0:1090               #管理界面访问IP和端口
  19.         mode http                       #管理界面所使用的协议
  20.         maxconn 10          #最大连接数
  21.         stats refresh 30s               #30秒自动刷新
  22.         stats uri /                     #访问url
  23.         stats realm Hive\ Haproxy       #验证窗口提示
  24.         stats auth admin:123456         #401验证用户名密码

  25. listen hive             #hive后端定义
  26.         bind 0.0.0.0:10001              #ha作为proxy所绑定的IP和端口
  27.         mode tcp                        #以4层方式代理,重要
  28.         balance leastconn               #调度算法 'leastconn' 最少连接数分配,或者 'roundrobin',轮询分配
  29.         maxconn 1024                    #最大连接数
  30.         server hive_1 192.168.1.1:10000 check inter 180000 rise 1 fall 2
  31.         server hive_2 192.168.1.2:10000 check inter 180000 rise 1 fall 2
  32.     #释义:server 主机代名(你自己能看懂就行),IP:端口 每180000毫秒检查一次。也就是三分钟。
  33.     #hive每有10000端口的请求就会创建一个log,设置短了,/tmp下面会有无数个log文件,删不完。
复制代码



如何启动
在HAProxy目录下执行如下命令:
  1. haproxy -f conf.cfg
复制代码


如何使用
在hive-server或者hive-server2中jdbc的连接信息修改url和port,如hive-server2:
  1. jdbc:hive2://${haproxy.hostname}:${haproxy.hive.bind.port}/${hive.database}
复制代码


上面haproxy.hostname为你安装haproxy的机器名;haproxy.hive.bind.port为conf.cfg中定义的监听hive的端口(上面中定义的为10001)


你可能感兴趣的:(hive)