Cloudera Impala需求
为了达到预期的效果,Impala依赖于软件、硬件的可用性,以及下面章节描述的配置。
继续阅读:
- 支持的操作系统
- 支持的Hadoop发布
- Hive Metastore及相关配置
- Java依赖关系
- 包和库
- 网络配置需求
- 硬件需求
- 用户帐户需求
支持的操作系统
支持的64位操作系统:
-
Red Hat Enterprise Linux (RHEL) 5.7/6.2/6.4、Oracle Linux 5.7/6.2/6.4、Centos 5.7/6.2/6.4
在Red Hat Enterprise Linux 5.0及其兼容版本中,需要做一些额外的工作,impala-shell才能使用Kerberos连接到Impala集群
sudo yum install python-devel openssl-devel python-pip sudo pip-python install ssl
-
SLES 11 SP1及以上版本
-
Ubuntu 10.04/12.04 或 Debian 6.03
支持的Hadoop发布
Impala 1.2.1支持CDH 4.1及以上版本。下面列出了不同Impala与CDH版本之间的支持关系:
- CDH 4.1 与 Impala 1.2.1
- CDH 5 beta版与 Impala 1.2
- CDH 4.1以上版本与Impala 1.1
- CDH 4.1以上版本与Impala 1.0
- CDH 4.1以上版本与Impala 0.7
- CDH 4.2以上版本与Impala 0.6
- CDH 4.1与Impala 0.5或更早版本。这一组合仅支持RHEL/CentOS
注意:因为Impala 1.2.1是与CDH 4协同工作,而CDH 5 beta发布时包含的是Impala 1.2.0,这样从CDH 4升级到CDH 5 beta版时实际上是恢复到较早的Impala版本。CHD 5 beta版本中自带的Impala beta版包含了基于CDH 5基础架构的资源管理功能,以及急需的用户定义函数功能和目录服务。然后,它不包括Impala 1.2.1中的一些新功能,例如 SHOW CREATE TABLE 语句、 SHOW TABLE STATS 语句和 SHOW COLUMN STATS 语句、 OFFSET 和 NULLS FIRST/LAST 选项,以及SYNC_DDL 选项。
Hive Metastore及相关配置
Impala可以与存储在Hive中的数据交互,使用与Hive相同的基础架构跟踪schema中对象如表和列的元数据。以下组件是前提条件:
- Hive使用 MySQL 或 PostgreSQL作为 metastore
注意:
安装与配置Hive metastore是Impala的必要条件。没有Hive metastore则Impala无法工作。参见安装 Cloudera Impala,了解安装与配置Hive metastore的步骤。尽管MySQL和PostgreSQL都可以用作Hive的metastore,但是只有使用MySQL时才可以使用表统计信息功能。
应当配置Hive metastore服务而不是直接连接到metastore数据库。 Metastore服务满足CDH中的Hive与Impala之间不同层次的交互需求,并避免了许多已知的直接连接的问题(The metastore service is required to interoperate between possibly different levels of Hive used by CDH and Impala, and avoids known issues with connecting directly to the metastore database.假如通过Cloudera Manager 4.5安装,则Metastore服务被设置为默认启用。
Hive安装步骤总结如下:
-
- 安装MySQL或PostgreSQL数据库,如果没有自动启动则启动
- 下载MySQL/PostgreSQL连接器,放于/usr/share/java/目录下
- 使用适当的命令行工具连接到数据库,创建Hive metastore数据库
- 使用适当的命令行工具连接到数据库,授予hive用户权限
- 修改hive-site.xml文件,添加数据库信息:URL、用户名、密码。你需要将该hive-site.xml移动到下面将讲到的Impala配置目录
-
- 可选:Hive。尽管只有Hive metastore是Impala所需的功能,你仍可以在几台客户端机器上创建、载入数据到特定格式的表。参见Impala支持的Hadoop文件格式了解详细信息。Hive与Impala不需要安装在相同的数据节点上,他们只需要访问相同的metastore数据库。
Java Dependencies
Impala主要由C++编写,它使用Java与其他不同的Hadoop组件通讯:
- Impala官方支持的JVM是Oracle JVM。其他版本的JVM可能会出现问题,通常导致impalad启动失败。特别是,Ubuntu中默认几个层面使用的JamVM会导致impalad启动失败。
- Impalad守护进程内部通过 JAVA_HOME 环境变量定位java库。确保impalad服务运行在正确的JAVA_HOME下。
- 所有java依赖的程序都打包到impala-dependencies.jar文件里,该文件位于/usr/lib/impala/lib/下。These map to everything that is built under fe/target/dependency.
包与库
包或正确配置的库。你可以通过Cloudera Impala公共库,或自定义的库,使用包手工安装Impala。使用Cloudera Impala 公共库时,下载并安装下面的文件到每一台准备安装Impala或Impala Shell的机器上。安装步骤如下:
- 下载Red Hat 5 repo file (http://archive.cloudera.com/impala/redhat/5/x86_64/impala/cloudera-impala.repo) 到/etc/yum.repos.d/
- 下载Red Hat 6 repo file (http://archive.cloudera.com/impala/redhat/6/x86_64/impala/cloudera-impala.repo) 到/etc/yum.repos.d/
- 下载SUSE repo file (http://archive.cloudera.com/impala/sles/11/x86_64/impala/cloudera-impala.repo) 到/etc/zypp/repos.d/
- 下载Ubuntu 10.04 list file (http://archive.cloudera.com/impala/ubuntu/lucid/amd64/impala/cloudera.list) 到/etc/apt/sources.list.d/
- 下载Ubuntu 12.04 list file (http://archive.cloudera.com/impala/ubuntu/precise/amd64/impala/cloudera.list) 到/etc/apt/sources.list.d/
- 下载Debian list file (http://archive.cloudera.com/impala/debian/squeeze/amd64/impala/cloudera.list) 到/etc/apt/sources.list.d/
例如,在Red Hat 6系统中,你可以运行下面这组命令:
$ cd /etc/yum.repos.d $ sudo wget http://archive.cloudera.com/impala/redhat/6/x86_64/impala/cloudera-impala.repo $ ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo Cloudera-cdh.repo cloudera-impala.repo
注意:
你可以使用wget或curl在archive.cloudera.com下载这些文件,但不要使用rsync。
同样,你也可以使用 Cloudera Manager 安装、管理 Impala。Impala 1.2.1及更高版本需要Cloudera Manager 4.8及以上版本,之前版本的Cloudera Manager无法管理 Impala 目录服务。
注意: 在CM管理环境中,新的目录服务不会被CM 4.8之前的版本支持或管理。CM 4.8及以上版本需要Impala的目录服务。因此,假如你升级到Cloudera Manager 4.8及以上版本,你必须同时把Impala升级到1.2.1或更高版本. 也就是说,如果你把Impala升级到1.2.1或更高版本,也必须把Cloudera Manager升级成4.8或更高版本。
通过Cloudera Manager安装时,可以采用特定OS的包安装,也可以采用parcels方式安装。Parcels方式简化了集群中升级或发布程序步骤。
网络配置需求
为了确保最佳性能,Impala会试图完全通过本地数据完成任务,而不会通过网络连接使用远程数据。为了这一目标,Impala通过解析主机名标识为ip地址,提供给每个Impala守护进程哥哥数据节点的ip地址。 Impala使用简单的数据节点上和Impala守护进程的所有机器上的IP接口来操作本地数据。确保Impala守护进程的主机名表示可以解析为IP数据节点的地址。对于单一宿主的机器,这通常是自动的,但是对于多宿主的机器,确保Impala守护进程的主机名可以解析为正确的接口。Impala在启动时会试图确定正确的主机名,并在日志中打印一条主机名的消息(To support this goal, Impala matches the hostname provided to each Impala daemon with the IP address of each datanode by resolving the hostname flag to an IP address. For Impala to work with local data, use a single IP interface for the datanode and the Impala daemon on each machine. Ensure that the Impala daemon's hostname flag resolves to the IP address of the datanode. For single-homed machines, this is usually automatic, but for multi-homed machines, ensure that the Impala daemon's hostname resolves to the correct interface. Impala tries to to detect the correct hostname at start-up, and prints the derived hostname at the start of the log in a message of the form):
Using hostname: impala-daemon-1.cloudera.com
绝大部分情况下这可以正常工作。假如需要手工指定主机名,使用 –hostname 选项。
硬件需求
当执行连接操作时,所有数据集都会加载到内存中。数据集可能非常大,因此应确认你的硬件有足够的内存,以确保连接能如期完成。
根据数据集的大小不同而需求不同,以下是一般推荐:
- CPU - Impala使用新处理器中包含的SSE4.2指令集。Impala也可以使用在就处理器,但最佳性能是运行在:
- Intel - Nehalem (released 2008) 或以后处理器
- Intel - AMD - Bulldozer (released 2011)或以后处理器
- 内存 - 推荐至少128 GB,最好256 GB以上。假如查询处理过程中,某个节点上的中间结果超出该节点上Impala可使用内存的限制,查询将取消。注意查询时并行的,而聚合查询的中间结果通常比原始数据小,Impala可以查询比个别节点上实际可用内存大很多的表或连接操作。
- 存储 - 数据节点有12块以上的硬盘。I/O速度通常是Impala磁盘性能的限制因素。确保有足够的硬盘空间来存放Impala将查询的数据。
用户帐户需求
Impala创建一个名叫impala的用户和用户组。请不要删除该用户或用户组,也不要修改用户、用户组的许可与权限。确保现有系统不会阻挠该用户、用户组功能。例如,你可能有脚本自动删除不在白名单中的用户,请先把这一用户、用户组添加到许可列表中。
为了资源管理功能可用(与CDH5、YARN、Liama组件协作),impala用户需要是hdfs组的成员。当新安装时这一设置会自动执行,但当从较早版本的Impala升级到1.2时不会自动执行。当你把一个已经安装了1.0或1.1版本Impala的节点升级到的CDH 5时,需要手工添加impala用户到hdfs组。
为了执行 DROP TABLE 操作时能正确的删除,Impala需要移动文件到HDFS回收站。你可能需要手工创建一个HDFS目录/user/impala,并设置为impala用户可写,这样回收站就可以被创建。否则,执行 DROP TABLE 操作后数据可能仍然保留。
Impala不应以root用户运行。Impala通过直接读取来达到最佳性能,而root不允许直接读取。因此,以root用户运行Impala可能会影响性能。
Impala安全功能提供授权,授权是基于连接到Impala服务器的Linux操作系统用户以及用户所属组的权限。参见Impala安全了解详细信息。