Impala3.4是Impala3.x最后一个版本,对比CDH6.3.2的Impala 3.2版本,在查询性能,内存优化,元数据管理方面都有一定的提升。目前Cloudera不再提供免费的安装包,要在CDH6集成Impala3.4,需要对Aapche Impala进行编译和打包,Cloudera官方并不建议这样做,因为与已有CDH组件的兼容性问题并没有得到测试,需要根据实际情况选择是否升级到Impala3.4版本。
在CDH中单独升级Impala,可以通过以下步骤:
1. 对Apache Impala 3.4进行编译
2. 根据Cloudera Impala的目录结构,构建Impala目录
3. 在CM管理平台修改环境变量指向Impala3.4版本
注:安装包已经编译打包好,可直接查看第三步,前两个步骤可作为了解。
一、编译Impala
1、环境要求
最小内存:4GB,低于4G编译将失败
操作系统:仅支持以下操作系统,选择和CDH集群一样的操作系统即可
● Ubuntu 14.04、16.04、18.04
● CentOS 7
硬盘:20G
2、下载Apache Impala3.4
# 克隆impala 3.4
git clone --single-branch --branch 3.4.0 https://github.com/apache/impala.git impala-3.4
# 打上 IMPALA-9815 的commit
cd impala-3.4
git fetch origin 481ea4ab0d476a4aa491f99c2a4e376faddc0b03
git cherry-pick 481ea4ab0d476a4aa491f99c2a4e376faddc0b03
# 克隆impala-lzo和hadoop-lzo
git clone --branch master https://github.com/cloudera/impala-lzo.git impala-3.4/../Impala-lzo
git clone https://github.com/cloudera/hadoop-lzo.git impala-3.4/../hadoop-lzo
3、修改apache-ant下载地址
export IMPALA_HOME=`pwd`
vim $IMPALA_HOME/bin/bootstrap_system.sh
redhat sudo wget -nv \
https://downloads.apache.org/ant/binaries/apache-ant-1.10.12-bin.tar.gz
redhat sha512sum -c - <<< '2287dc5cfc21043c14e5413f9afb1c87c9f266ec2a9ba2d3bf2285446f6e4ccb59b558bf2e5c57911a05dfa293c7d5c7ad60ac9f744ba11406f4e6f9a27b2403 apache-ant-1.10.12-bin.tar.gz'
redhat sudo tar -C /usr/local -xzf apache-ant-1.10.12-bin.tar.gz
redhat sudo ln -s /usr/local/apache-ant-1.10.12/bin/ant /usr/local/bin
4、修改ivy下载地址
vim impala-3.4/../hadoop-lzo/build.xml
96 <property name="ivy_repo_url" value="https://repo.maven.apache.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar"/>
vim impala-3.4/../hadoop-lzo/ivy/ivysettings.xml
15 value="https://repo.maven.apache.org/maven2/"
5、安装编译依赖
$IMPALA_HOME/bin/bootstrap_system.sh
6、编译
# 设置环境变量
source $IMPALA_HOME/bin/impala-config.sh
# 编译过程会下载python依赖和其他静态依赖,会比较耗费时间
$IMPALA_HOME/buildall.sh -noclean -notests -release
编译完后可以找到impalad可执行文件和impala-frontend的jar包
$ ll -h be/build/latest/service/impalad fe/target/impala-frontend-0.1-SNAPSHOT.jar
-rwxrwxr-x 1 root root 460M 6月 20 11:30 be/build/latest/service/impalad
-rw-rw-r-- 1 root root 7.5M 6月 20 11:33 fe/target/impala-frontend-0.1-SNAPSHOT.jar
$ strings be/build/latest/service/impalad | grep 3.4.0
3.4.0-RELEASE
二、构建目录
按照Cloudera impala的目录结构,打包新版本相关可执行文件和依赖包
1、拷贝Cloudera Impala目录结构
cd /opt/cloudera/parcels/CDH/lib
cp -r impala apache-impala-3.4
cd apache-impala-3.4
2、构建lib目录
把lib目录里原来的jar包都删了,剩下so文件,拷贝libkudu_client.so.0和新版本的jar包到lib目录
rm -f lib/*.jar
cp $IMPALA_HOME/fe/target/dependency/* lib/
cp $IMPALA_HOME/fe/target/impala-frontend-0.1-SNAPSHOT.jar lib/
# 替换 libkudu_client.so.0 是因为impala3.4使用了impala3.2的kudu client不支持的功能。
# Impala 3.3开始支持kudu表的列注释,升级了依赖的Kudu client版本
cp $IMPALA_HOME/toolchain/kudu-4ed0dbbd1/release/lib64/libkudu_client.so.0 lib/
cp $IMPALA_HOME/toolchain/kudu-4ed0dbbd1/release/lib64/libkudu_client.so.0.1.0 lib/
3、构建sbin-retail目录
把里面的impalad换成编译后的impalad
cp $IMPALA_HOME/be/build/latest/service/impalad sbin-retail/
rm -rf sbin-debug
ln -s sbin-retail sbin-debug
4、更新WWW目录
这个目录是WebUI用的,把旧版的删了,复制新版的过来
rm -rf www
cp -r $IMPALA_HOME/www www
三、更改CM配置
把打包好的apache-impala-3.4目录放到所有机器上,确保它们一致。
在CM中Impala -> 配置 -> env,加一个环境变量 IMPALA_HOME=/opt/cloudera/parcels/CDH/lib/apache-impala-3.4
然后重启整个Impala集群。重启成功后,可以看到catalogd、statestored、impalad启用了新页面,并且版本号是3.4
四、验证和回滚
最后要验证一下集群是否工作正常,包括Impala 3.4的一些新功能。如果有任何不兼容的地方,回滚CM的配置再重启Impala集群就回来了,因为我们并没有动老版本的任何东西。