热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:如何为ImpalaDaemon服务配置Executor和Coordinator角色

篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何为Impala Daemon服务配置Executor和Coordinator角色相关的知识,希望对你有一定的参考价值。 温馨提示:如果使用电脑

篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何为Impala Daemon服务配置Executor和Coordinator角色相关的知识,希望对你有一定的参考价值。




温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。





Fayson的github:


https://github.com/fayson/cdhproject





提示:代码块部分可以左右滑动查看噢



1.文档编写目的




默认情况下,CDH集群中的Impala Daemon又可以充当查询的coordinator,也可以作为executor来执行查询本身,coordinator类似一个查询作业的管理角色一样负责协调各个Impala Daemon上的executor。在大规模集群中,Impala作业比较多的情况下,一个Impala Daemon既作为coordinator又作为executor是比较常见的,这就不可避免的会带来一些问题:


1.coordinator与executor会互相干扰带来性能问题。对于较大或者复杂的查询的时候,coordinator会带来大量的网络和CPU开销。每个coordinator都会缓存所有表分区和数据文件的元数据,同时作为executor它还需要处理join,聚合或者其他操作,这些都需要大量内存。


2.将大量主机都作为coordinator会造成不必要的网络开销,甚至是timeout错误,因为每个coordinator都需要与statestore进程通信以进行元数据更新。


3.当有大量查询负载较重的Impala Daemon作为coordinator时,会更容易超过admission control所设置的"soft limits"。


所以从CDH5.12开始,Impala支持分离coordinator与executor,可以明确指定哪些主机只作为coordinator,而不作为executor。这些节点不会参与I/O密集型操作比如扫描,或者CPU密集型操作比如聚合。同时你也可以指定哪些主机只作为executor,而不作为coordinator,它们依旧会与statestore进程进行通信,但是不会从statestore获取元数据,你不能通过impala-shell客户端或者BI工具连接到这些主机。


本篇文章Fayson主要介绍如何为Impala Daemon服务配置Coordinator和Executor角色,从而解决大规模集群下Impala查询性能瓶颈问题。




  • 测试环境


1.CM5.14.3/CDH5.14.2

2.RedHat7.4




  • 前置条件


1.集群已启用Kerberos

2.集群已集成Sentry服务

3.Impala已配置HAProxy负载


2.配置Impala服务的Coordinator和Executor




这里以Fayson的测试环境为例,选择集群的两个节点cdh02和cdh03节点的ImpalaDaemon作为Coordinator角色,cdh04和cdh04节点的Impala Daemon作为Executor角色进行配置说明。


1.登录Cloudera Manager界面进入Impala服务,点击“配置”




2.进入角色组界面,新建Coordinator角色组,将一部分Impala Daemon节点划分为Coordinator Group角色组


如何为Impala Daemon服务配置Executor和Coordinator角色

如何为Impala Daemon服务配置Executor和Coordinator角色


2.将cdh02和cdh03两个节点移到Coordinator Group组


如何为Impala Daemon服务配置Executor和Coordinator角色


4.进入Impala的配置页面,为我们划分的两个组配置高级参数

在Impala配置中搜索“Impala Daemon 命令行参数高级配置代码段(安全阀)”,为Default Group组配置-is_coordinator = false,为Coordinator Group配置-is_executor = true,如下截图所示:


如何为Impala Daemon服务配置Executor和Coordinator角色


保存配置,根据CM提示重启Impala服务。


如何为Impala Daemon服务配置Executor和Coordinator角色


3.修改HAProxy的配置




1.修改/etc/haproxy/haproxy.cfg文件,将Coordinator Group组的Impala Daemon节点配置到haproxy.cfg文件中,内容如下:




listen impalashell
    bind 0.0.0.0:25003
    mode tcp
    option tcplog
    balance leastconn
    server cdh02.fayson.com cdh02.fayson.com:21000 check
    server cdh03.fayson.com cdh03.fayson.com:21000 check
listen impalajdbc
    bind 0.0.0.0:25004
    mode tcp
    option tcplog
    balance leastconn
    server cdh02.fayson.com cdh02.fayson.com:21050 check
    server cdh03.fayson.com cdh03.fayson.com:21050 check

(可左右滑动)


如何为Impala Daemon服务配置Executor和Coordinator角色


2.保存配置,然后重启Impala服务




[root@cdh01 ~]# systemctl restart haproxy
[root@cdh01 ~]# systemctl status haproxy

(可左右滑动)


如何为Impala Daemon服务配置Executor和Coordinator角色


3.访问HAProxy服务监控界面查看


如何为Impala Daemon服务配置Executor和Coordinator角色


4.Impala-shell测试




1.使用impala-shell命令访问HAProxy端口


如何为Impala Daemon服务配置Executor和Coordinator角色


2.执行SQL操作,通过CM查看SQL执行详细信息


如何为Impala Daemon服务配置Executor和Coordinator角色


通过CM查看到的SQL执行详细信息可以看到cdh02将接受的查询请求转发至cdh04节点,该节点为Executor角色的Impala Daemon。




5.总结




1.对于较大的Impala集群,我们在配置Impala Daemon负载均衡时可以将一部分Impala Daemon节点配置为Coordinator角色。这里需要考虑的问题,Coordinator角色的节点可以部署在非DataNode节点上,保证所有的Executor角色的节点都能在所有的DataNode节点,避免Impala跨节点读取数据。


2.配置为Coordinator角色的Impala Daemon可以通过impala-shell访问,但配置为Executor角色的Impala Daemon是不可以通过impala-shell访问。


3.作为Coordinator角色的Impala Daemon节点作为HAProxy的后端,用于配置Impala集群负载均衡。


4.Coordinator角色的Impala Daemon节点不会参与运算而仅负责调度和监控查询的执行,以及同步元数据,而Executor角色的Impala节点仅参与运算但不会同步数据。





提示:代码块部分可以左右滑动查看噢





为天地立心,为生民立命,为往圣继绝学,为万世开太平。


温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。




推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。



推荐阅读
  • Kubernetes(k8s)基础简介
    Kubernetes(k8s)基础简介目录一、Kubernetes概述(一)、Kubernetes是什么(二& ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 本文是一篇翻译文章,介绍了async/await的用法和特点。async关键字被放置在函数前面,意味着该函数总是返回一个promise。文章还提到了可以显式返回一个promise的方法。该特性使得async/await更易于理解和使用。本文还提到了一些可能的错误,并希望读者能够指正。 ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • 服务网关与流量网关
    一、为什么需要服务网关1、什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关& ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 什么是网关服务器初学linux服务器开发时,我们的服务器是很简单的,只需要一个程序完成与客户端的连接,接收客户端数据,数据处理,向客户端发送数据。但是在处理量很大的情况下,一 ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
author-avatar
mobiledu2502931473
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有