Impala官网翻译13-修改Impala的启动选项
修改Impala的启动选项
通过Impala守护进程的配置选项,您可以选择在单一主机上运行的服务使用哪些主机和端口,指定日志记录的目录,控制资源使用和安全性,并指定Impala软件的其他方面。
通过命令行配置 Impala 启动选项
Impala 服务器、stattore 和目录服务使用默认文件 /etc/default/impala 中提供的值启动。
这个文件包括Impala使用的许多资源的信息。该文件中包含的大多数默认值在大多数情况下应该是有效的。例如,通常情况下,你不会改变CLASSPATH变量的定义,但你总是会设置statetore服务器使用的地址。您可能会修改的一些内容包括
IMPALA_STATE_STORE_HOST=127.0.0.1 IMPALA_STATE_STORE_PORT=24000 IMPALA_BACKEND_PORT=22000 IMPALA_LOG_DIR=/var/log/impala IMPALA_CATALOG_SERVICE_HOST=... IMPALA_STATE_STORE_HOST=... export IMPALA_STATE_STORE_ARGS=${IMPALA_STATE_STORE_ARGS:- \ -log_dir=${IMPALA_LOG_DIR} -state_store_port=${IMPALA_STATE_STORE_PORT}} IMPALA_SERVER_ARGS=" \ -log_dir=${IMPALA_LOG_DIR} \ -catalog_service_host=${IMPALA_CATALOG_SERVICE_HOST} \ -state_store_port=${IMPALA_STATE_STORE_PORT} \ -state_store_host=${IMPALA_STATE_STORE_HOST} \ -be_port=${IMPALA_BACKEND_PORT}" export ENABLE_CORE_DUMPS=${ENABLE_COREDUMPS:-false}
要使用备用值,请编辑默认值文件,然后重启所有与 Impala 相关的服务,使更改生效。使用以下命令重新启动Impala服务器。
$ sudo service impala-server restart
Stopping Impala Server: [ OK ]
Starting Impala Server: [ OK ]
使用以下命令重新启动 Impala StateStore。
$ sudo service impala-state-store restart Stopping Impala State Store Server: [ OK ] Starting Impala State Store Server: [ OK ]
使用以下命令重新启动 Impala 目录服务。
$ sudo service impala-catalog restart
Stopping Impala Catalog Server: [ OK ]
Starting Impala Catalog Server: [ OK ]
一些需要更改的常见设置包括:
- StateStore地址。在可行的情况下,将stesttored放在一个不运行impalad守护进程的独立主机上。在这个推荐的配置中,impalad 守护进程不能使用环回地址来引用 statestored 服务器。如果stesttored存放在IP地址为192.168.0.27的机器上,请更改。
IMPALA_STATE_STORE_HOST=127.0.0.1
改为:
IMPALA_STATE_STORE_HOST=192.168.0.27
- 目录服务器地址(包括主机名和端口号)。更新 IMPALA_CATALOG_SERVICE_HOST 变量的值。在可行的情况下,将目录服务器运行在与状态存储相同的主机上。在这个推荐的配置中, impalad 守护进程不能使用环回地址来引用目录服务器。如果目录服务的主机的 IP 地址是 192.168.0.27,则添加以下一行:
IMPALA_CATALOG_SERVICE_HOST=192.168.0.27:26000
目前,/etc/default/impala 缺省文件没有定义IMPALA_CATALOG_ARGS环境变量,但如果你添加了一个环境变量,服务启动/关闭脚本就会识别它。在/etc/default/impala中添加这个变量的定义,并添加选项--catalog_service_host=hostname。如果端口与默认的26000不同,也可以添加选项--catalog_service_port=port。
- 内存限制。你可以限制Impala可用的内存量。例如,要允许Impala使用不超过70%的系统内存,请更改:
export IMPALA_SERVER_ARGS=${IMPALA_SERVER_ARGS:- \ -log_dir=${IMPALA_LOG_DIR} \ -state_store_port=${IMPALA_STATE_STORE_PORT} \ -state_store_host=${IMPALA_STATE_STORE_HOST} \ -be_port=${IMPALA_BACKEND_PORT}}
改为:
export IMPALA_SERVER_ARGS=${IMPALA_SERVER_ARGS:- \ -log_dir=${IMPALA_LOG_DIR} -state_store_port=${IMPALA_STATE_STORE_PORT} \ -state_store_host=${IMPALA_STATE_STORE_HOST} \ -be_port=${IMPALA_BACKEND_PORT} -mem_limit=70%}
可以使用绝对值来指定内存限制,如500m或2G,也可以使用物理内存的百分比来指定,如60%。
注意:超过指定内存限制的查询会被中止。百分比限制是基于机器的物理内存,不考虑cgroups。
- 核心转储启用。要启用核心转储,请更改。
export ENABLE_CORE_DUMPS=${ENABLE_COREDUMPS:-false}
改为:
export ENABLE_CORE_DUMPS=${ENABLE_COREDUMPS:-true}
注意:
核心转储文件的位置可能会根据您的操作系统配置而有所不同。
其他安全设置可能会阻止Impala写入核心转储,即使启用该选项。 - 授权。指定 --server_name 选项作为 IMPALA_SERVER_ARGS 和 IMPALA_CATALOG_ARGS 设置的一部分,以启用 Impala 核心对授权的支持。详情请参见启用 Sentry 授权后启动 Impala。
- 对成功或被阻止的 Impala 查询进行审计,这是安全性的另一个方面。为每个 Impala 节点指定 --audit_event_log_dir=directory_path 选项以及 --max_audit_event_log_file_size=number_of_queries 和 --abort_on_failed_audit_event 选项作为 IMPALA_SERVER_ARGS 设置的一部分,以启用和自定义审计。详情请参见审核Impala操作。
- Impala Web UI 的密码保护,默认情况下,它在 25000 端口监听。此功能涉及将部分或全部 --webserver_password_file、 --webserver_authentication_domain 和 --webserver_certificate_file 选项添加到 IMPALA_SERVER_ARGS 和 IMPALA_STATE_STORE_ARGS 设置中。详情请参见Impala的安全指南。
- 另一个可以添加到IMPALA_SERVER_ARGS的设置是一个以逗号分隔的查询选项和值列表:
‑‑default_query_options='option=value,option=value,...'
这些选项控制了这个impalad实例所执行的查询行为。你在这里指定的选项值覆盖了Impala查询选项的默认值,如impala-shell中的SET语句所示。
- 在故障排除过程中,相应的支持渠道可能会指导你更改其他值,特别是对impala_server_args的值,以解决问题或收集调试信息。
注意:
impalad 守护进程的这些启动选项与 impala-shell 命令的命令行选项不同。关于 impala-shell 的选项,请参见 impala-shell 配置选项。
检查 Impala 配置选项的值
你可以通过Impala web界面检查所有这些设置的当前运行时值,默认情况下,impalad daemon可在http://impala_hostname:25000/varz,stattored daemon可在http://impala_hostname:25010/varz,catalogd daemon可在http://impala_hostname:25020/varz。
catalogd守护程序的启动选项
catalogd守护进程实现了Impala Catalog服务,当Impala创建表、插入数据或执行其他类型的DDL和DML操作时,该服务会向所有Impala节点广播元数据变化。
使用--load_catalog_in_background选项来控制何时加载表的元数据。
- 如果设置为false,当表的元数据第一次被引用时就会被加载。这意味着特定查询的第一次运行可能会比后续运行慢。从Impala 2.2开始,--load_catalog_in_background的默认值为false。
- 如果设置为true,即使没有查询需要元数据,目录服务也会尝试加载表的元数据。因此,当运行第一个需要元数据的查询时,元数据可能已经被加载。
- 然而,出于以下原因,我们建议不要将该选项设置为true。
- 后台加载会干扰特定查询的元数据加载。这可能会在启动时或在元数据失效后发生,持续时间取决于元数据的数量,并可能导致看似随机的长运行查询,难以诊断。
- Impala 可能会加载可能从未使用过的表的元数据,可能会增加目录大小,从而增加目录服务和 Impala Daemon 的内存使用量。