升级Impala
升级Impala涉及构建或获取新的Impala相关二进制文件,然后重新启动Impala服务。
升级Impala
- 关闭集群中所有相关主机上所有与 Impala 相关的守护进程.
- 停止集群中每个Impala节点上的impalad。
$ sudo service impala-server stop - 停止集群中状态存储的任何实例。
$ sudo service impala-state-store stop - 停止集群中所有目录服务的实例。
$ sudo service impala-catalog stop
- 按照 README.md 文件中的构建过程生成新的 Impala 二进制文件。
- 替换集群中所有相关主机上所有与Impala相关的守护进程的二进制文件。
- 检查配置文件中是否有新的推荐或要求的配置设置,通常在/etc/impala/conf下。有关性能和可扩展性的设置,请参见 Impala 的安装后配置。
- 重新启动集群中所有相关主机上所有与Impala相关的守护进程。
- 在集群中所需节点上重新启动Impala状态存储服务。如果服务成功启动,预计会看到一个名为statetored的进程。
$ sudo service impala-state-store start $ ps ax | grep [s]tatestored 6819 ? Sl 0:07 /usr/lib/impala/sbin/statestored -log_dir=/var/log/impala -state_store_port=24000
在Impala服务器服务之前重启状态存储服务,以避免运行impala-shell时出现 "未连接 "的错误。 - 在群集中的任何一台主机上重新启动 Impala 目录服务。如果服务启动成功,预计会看到一个名为 catalogd 的进程。
$ sudo service impala-catalog restart $ ps ax | grep [c]atalogd 6068 ? Sl 4:06 /usr/lib/impala/sbin/catalogd
- 在集群中的每个节点上重启Impala守护进程服务。如果服务启动成功,预计会看到一个名为 impalad 的进程。
$ sudo service impala-server start $ ps ax | grep [i]mpalad 7936 ? Sl 0:12 /usr/lib/impala/sbin/impalad -log_dir=/var/log/impala -state_store_port=24000 -state_store_host=127.0.0.1 -be_port=22000
注意事项:
如果服务没有成功启动(即使sudo service命令可能显示[OK]),检查Impala日志文件中的错误,通常在/var/log/impala中。
Impala升级注意事项
升级到Impala 3.0时,向具有SELECT或INSERT权限的Impala角色授予REFRESH权限。
要使用Impala 3.0中的细粒度权限功能,如果某个角色在升级到Impala 3.0之前对Impala中的某个对象拥有SELECT或INSERT权限,则在升级后授予该角色REFRESH权限。
Impala 3.0中更新的保留字列表
Impala 3.0中更新了Impala中的保留字列表。如果你需要使用一个保留字作为标识符,例如表名,请将该字用回标括起来。
如果你需要使用Impala以前版本的保留字,请设置impalad和catalogd的启动标志。
--reserved_words_version=2.11.0
请注意,这个启动选项将在未来的版本中被取消。
Impala 3.0中默认使用的十进制V2
在Impala中,支持DECIMAL类型的两种不同实现。从Impala 3.0开始,默认使用DECIMAL V2。有关详细信息,请参见DECIMAL类型。
如果您需要继续使用第一个版本的DECIMAL类型以保证查询的向后兼容性,请将DECIMAL_V2查询选项设置为FALSE。
SET DECIMAL_V2=FALSE;
Impala 3.0中改变了列别名的行为
为了符合 SQL 标准,Impala 不再在 GROUP BY、HAVING 和 ORDER BY 的子表达式中执行别名替换。关于支持和不支持的别名语法的例子,请参见Overview of Impala Aliases。
默认的PARQUET_ARRAY_RESOLUTION在Impala 3.0中有所改变
在Impala 3.0中,PARQUET_ARRAY_RESOLUTION的默认值被改为THREE_LEVEL,以匹配Parquet标准的3级编码。
启用插入的聚类提示
在Impala 3.0中,集群提示默认为启用。该提示会在查询计划中增加一个按分区列进行的本地排序。
集群提示只对HDFS和Kudu表有效。
与以前的版本一样,无聚类提示可以防止聚类。如果一个表定义了排序列,则无聚类提示会被忽略,并发出警告。
在Impala 3.0中删除了过时的查询选项
以下查询选项在几个版本中已被废弃,并被删除。
- DEFAULT_ORDER_BY_LIMIT。
- ABORT_ON_DEFAULT_LIMIT_EXCEED。
- V_CPU_CORES
- 保留_REQUEST_TIMEOUT(时间)
- RM_INITIAL_MEM
- SCAN_NODE_CODEGEN_THRESHOLD(节点)。
- MAX_IO_BUFFERS
- RM_INITIAL_MEM
- DISABLE_CACHED_READS(禁用缓存)。
在Impala 3.0中增加了细粒度的权限
从Impala 3.0开始,更细粒度的权限被强制执行,如REFRESH、CREATE、DROP和ALTER权限。特别是,现在运行REFRESH或INVALIDATE METADATA需要新的REFRESH权限。之前没有ALL权限的用户在升级后将无法再运行REFRESH或INVALIDATE METADATA。这些用户需要拥有REFRESH或ALL权限才能运行REFRESH或INVALIDATE METADATA。
refresh_after_connect Impala Shell选项在Impala 3.0中被移除
在Impala 3.0中,从Impala Shell中删除了过时的--refresh_after_connect选项。
Impala 3.0中的EXTRACT和DATE_PART函数的返回类型已更改
对EXTRACT和DATE_PART函数做了如下修改。
EXTRACT和DATE_PART函数的输出类型改为BIGINT。
从TIMESTAMP中提取毫秒部分,返回秒的部分和毫秒的部分。例如,EXTRACT (CAST('2006-05-12 18:27:28.123456789' AS TIMESTAMP), 'MILLISECOND')将返回28123。
更改SHUTDOWN命令的端口
如果你在Impala 3.1中使用了SHUTDOWN命令,并明确指定了一个端口,那么在Impala 3.2中改变端口号参数,使用KRPC端口。
改变客户端连接超时
改变了客户端连接超时的默认行为。
在Impala 3.2和更低版本中,如果--fe_service_threads指定的线程数达到了最大值,客户端就会无限期地等待打开新的会话。
在Impala 3.3和更高版本中,增加了一个新的启动标志---accepted_client_cnxn_timeout,以控制如果我们已经用完了配置的服务器线程数,服务器应该如何处理新的连接请求。
如果 --accepted_client_cnxn_timeout > 0,则新的连接请求在指定的超时后被拒绝。
如果--accepted_client_cnxn_timeout=0,客户端无限期等待连接到Impala。你可以使用这个设置来恢复Impala 3.3之前的行为。
默认超时时间为5分钟。
默认设置更改
版本变更 | 配置 | 默认值 |
---|---|---|
Impala 2.12 | --compact_catalog_topicimpalad标志 | true |
Impala 2.12 | --max_cached_file_handlesimpalad标志。 | 20000 |
Impala 3.0 | PARQUET_ARRAY_RESOLUTION 查询选项 | THREE_LEVEL |
Impala 3.0 | DECIMAL_V2 |
TRUE |