Impala(二)Impala负载均衡

如有不妥之处,欢迎随时留言沟通交流,谢谢~

Impala分为是三个组件,statestored/catalogd和impalad,其中statestored和catalogd是单点的,没有高可用的需求,因为这两个实例是无状态的,本身不存储任何数据,例如catalogd的数据存储在第三方数据库(例如mysql中),statestore的数据全都存储在内存中,可以通过简单的主备的方式来实现高可用,本文最后会提到。正常情况下只有master提供服务,slave只是运行状态但是不接受任何请求,当master出现问题之后再slave提升为master提供服务。

而对于impalad节点,每一个节点都可以提供jdbc和thrift等服务,并且对于连接到该impalad的查询作为coordinator节点(需要消耗一定的内存和CPU)存在,为了保证每一个节点的负载的平衡需要对于这些impalad做一下均衡,负载均衡分为四层负载均衡和七层负载均衡,前者是针对运输层的,后者是针对应用层的,区别在于前者不需要了解应用协议,只需要对传输层收到的IP数据包进行转发,而后者需要了解应用协议的,而对于impalad这种SQL服务器,就需要使用SQL协议的代理,所以七层代理对于impalad是有点不切实际的。

主要用的就是haproxy四层交换机的特性,讲所有指向haproxy主机和端口的请求,转发到相应的主机:端口上。

1、安装haproxy

yum install haproxy

2、配置文件

vim /etc/haproxy/haproxy.cfg

文件内容

global
    # To have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local0
    log         127.0.0.1 local1 notice
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    #stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#
# You might need to adjust timing values to prevent timeouts.
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    maxconn                 3000

    #连接时间需要修改,因为如果时间较短的话会出现,任务在执行,但是连接已经断开所以获取不到结果的情况。
    timeout connect 3600000ms
    timeout client 3600000ms
    timeout server 3600000ms

#
# This sets up the admin page for HA Proxy at port 25002.
#
listen stats :25002
    balance
    mode http
    stats enable
    stats auth admin:admin

#配置修改
listen impala-shell :25003
    mode tcp
    option tcplog
    balance leastconn

    server impala2 impala-host02:21000
    server impala3 impala-host03:21000
    server impala4 impala-host04:21000
    server impala5 impala-host05:21000

# This is the setup for Impala. Impala client connect to load_balancer_host:25003.
# HAProxy will balance connections among the list of servers listed below.
# The list of Impalad is listening at port 21000 for beeswax (impala-shell) or original ODBC driver.
# For JDBC or ODBC version 2.x driver, use port 21050 instead of 21000.

#配置修改
listen impala-jdbc:25001

    # impala负载均衡需要第四层的,所以填tcp
    mode tcp
    option tcplog
    balance leastconn

    #主机列表
    #impala-host02是impala的主机列表
    #由于是要对jdbc的请求进行转发,所以端口设置的是21050
    server impala2 impala-host02:21050
    server impala3 impala-host03:21050
    server impala4 impala-host04:21050
    server impala5 impala-host05:21050
                                    

3、启动

/usr/sbin/haproxy  -f   /etc/haproxy/haproxy.cfg

4、负载连接

haproxy-host-ip是haproxy的ip地址,主机名也可以,负载连接时用

impala-shell:haproxy-host-ip:25003  
impala-jdbc:haproxy-host-ip:25001


在haproxy上,使用impala-shell(localhost可以改成haproxy-host-ip):

mqq@VM-106-20-ubuntu:~$ impala-shell -i localhost:25003
Starting Impala Shell without Kerberos authentication
Connected to localhost:25003
Server version: impalad version 2.9.0-cdh5.12.0 RELEASE (build 03c6ddbdcec39238be4f5b14a300d5c4f576097e)
***********************************************************************************
Welcome to the Impala shell.
(Impala Shell v2.11.0-cdh5.14.2 (ed85dce) built on Tue Mar 27 13:39:48 PDT 2018)

You can run a single query from the command line using the '-q' option.
***********************************************************************************
[localhost:25003] > select * from t_sec_hurst_bs_dim limit 1;
Query: select * from t_sec_hurst_bs_dim limit 1
Query submitted at: 2018-07-25 20:16:07 (Coordinator: http://bigdata04:25000)
ERROR: AnalysisException: Could not resolve table reference: 't_sec_hurst_bs_dim'

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值