博客 Impala进阶——Impala的负载均衡

Impala进阶——Impala的负载均衡

   数栈君   发表于 2024-03-06 10:25  144  0

第 1 节 Impala的负载均衡
Impala主要有三个组件,分别是statestore,catalog和impalad,对于Impalad节点,每⼀个节点都可以接收客户端的查询请求,并且对于连接到该Impalad的查询还要作为Coordinator节点(需要消耗⼀定的内存和CPU)存在,为了保证每⼀个节点的资源开销的平衡需要对于集群中的Impalad节点做⼀下负载均衡.

Cloudera官⽅推荐的代理⽅案:HAProxy
DNS做负载均衡
DNS做负载均衡⽅案是最简单的,但是性能⼀般,所以这⾥我们按照官⽅的建议使⽤HAProxy实现负载均衡

⽣产中应该选择⼀个⾮Impalad节点作为HAProxy的安装节点

1.1 HAProxy⽅案
安装haproxy

yum install haproxy -y

配置⽂件

vim /etc/haproxy/haproxy.cfg

具体配置内容

#---------------------------------------------------------------------
# Example configuration for a possible web application. See the
# full configuration options online.
#
# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
log 127.0.0.1 local2
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
#---------------------------------------------------------------------
defaults
mode http#mode { tcp|http|health },tcp 表示4层,http表示7层,health仅作为健康检查使⽤用
log global
option httplog
option dontlognull
#option http-server-close
#option forwardfor except 127.0.0.0/8
#option abortonclose##连接数过大自动关闭
option redispatch #如果失效则强制转换其他服务器
retries 3 #尝试3次失败则从集群摘除
timeout http-request 10s
timeout queue 1m
#timeout connect 10s
#timeout client 1m
#timeout server 1m
timeout connect 1d#连接超时间,重要,hive查询数据能返回结果的保证
timeout client 1d#同上
timeout server 1d#同上
timeout http-keep-alive 10s
timeout check 10s#健康检查时间
maxconn 3000#最大连接数


listen status #定义管理理界⾯面
bind 0.0.0.0:1080 #管理理界⾯面访问IP和端⼝口
mode http #管理理界⾯面所使⽤用的协议
option httplog
maxconn 5000 #最⼤大连接数
stats refresh 30s #30秒⾃自动刷新
stats uri /stats


listen impalashell
bind 0.0.0.0:25003 #ha作为proxy所绑定的IP和端⼝
mode tcp #以4层⽅方式代理,重要
option tcplog
balance roundrobin #调度算法 'leastconn' 最少连接数分配,或者 'roundrobin',轮询分配
server impalashell_1 linux121:21000 check
server impalashell_2 linux122:21000 check
server impalashell_3 linux123:21000 check


listen impalajdbc
bind 0.0.0.0:25004 #ha作为proxy所绑定的IP和端⼝
mode tcp #以4层方式代理,重要
option tcplog
balance roundrobin #调度算法 'leastconn' 最少连接数分配,或者 'roundrobin',轮询分配
server impalajdbc_1 linux121:21050 check
server impalajdbc_2 linux122:21050 check
server impalajdbc_3 linux122:21050 check

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend main *:5000
acl url_static path_beg -i /static /images /javascript/stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app


#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
balance roundrobin
server static 127.0.0.1:4331 check


#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
balance roundrobin
server app1 127.0.0.1:5001 check
server app2 127.0.0.1:5002 check
server app3 127.0.0.1:5003 check
server app4 127.0.0.1:5004 check

启动

开启: service haproxy start
关闭: service haproxy stop
重启: service haproxy restart

使⽤
Impala-shell访问⽅式

impala-shell -i linux123:25003

使⽤起来⼗分⽅便,区别仅仅相当于是修改了⼀个ip地址和端⼝⽽已,其余不变。

jdbc:hive2://linux123:25004/default;auth=noSasl

Impala集群在操作过程中尽量多给内存,如果内存不能满⾜使⽤要求,Impala的执⾏很可能会报错!!

第 2 节 Impala优化
cloudera官⽹上的Impala⽂档,原名为《Impala Performance Guidelines and Best Practices》。主要介绍了为了提升impala性能应该考虑的⼀些事情,结合实际考虑:

1. 基本优化策略

⽂件格式

对于⼤数据量来说,Parquet⽂件格式是最佳的
避免⼩⽂件

insert ... values 会产⽣⼤量⼩⽂件,避免使⽤
合理分区粒度

利⽤分区可以在查询的时候忽略掉⽆⽤数据,提⾼查询效率,通常建议分区数量在3万以下(太多的分区也会造成元数据管理的性能下降)
分区列数据类型最好是整数类型

分区列可以使⽤string类型,因为分区列的值最后都是作为HDFS⽬录使⽤,如果分区列使⽤整数类型可以降低内存消耗
获取表的统计指标

在追求性能或者⼤数据量查询的时候,要先获取所需要的表的统计指标(如:执⾏ compute stats )
减少传输客户端数据量

聚合(如 count、sum、max 等)
过滤(如 WHERE )
limit限制返回条数
返回结果不要使⽤美化格式进⾏展示(在通过impala-shell展示结果时,添加这些可选参数: -B、 --output_delimiter )
在执⾏之前使⽤EXPLAIN来查看逻辑规划,分析执⾏逻辑

Impala join⾃动的优化⼿段就是通过使⽤COMPUTE STATS来收集参与Join的每张表的统计信息,然后由Impala根据表的⼤⼩、列的唯⼀值数⽬等来⾃动优化查询。为了更加精确地获取每张表的统计信息,每次表的数据变更时(如执⾏Insert,add partition,drop partition等)最好都要执⾏⼀遍COMPUTE STATS获取到准确的表统计信息。

————————————————

本文系转载,版权归原作者CH_ENN笔记所有,链接:

https://blog.csdn.net/chengh1993/article/details/112062379      ,如若侵权请联系我们进行删除!

《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack  
0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群