Ambari集成Impala(亲测有效)
文档目录
- 2.1 创建impala源文件
- 2.2 重启ambari-server
- 2.3 初始化impala
- 2.4 修改hdfs配置文件
- 2.5 启动impala服务
- 2.6 复制hbase jar包到impala目录下
- 2.7 修改/etc/default/bigtop-utils配置
- 2.8 查看impala集成情况
一. 将impala纳入到ambari版本管理中
执行如下命令将impala纳入到ambari版本管理中
VERSION=`hdp-select status hadoop-client | sed 's/hadoop-client - \([0-9]\.[0-9]\).*/\1/'`
sudo git clone https://github.com/cas-bigdatalab/ambari-impala-service.git /var/lib/ambari-server/resources/stacks/HDP/$VERSION/services/IMPALA
如果希望通过源码编译打包的方式集成,需要将该部分源码放置到
ambari源码目录/ambari-server/src/main/resources/stacks/HDP/$VERSION/services/IMPALA
编译打包之后,会在
/var/lib/ambari-server/resources/stacks/HDP/$VERSION/services/IMPALA
目录下生成对应代码
二. 初始化Impala
注意:该过程出现问题于目录/var/log/impala/查看相应报错日志
2.1 创建impala源文件
提供两种创建源的方式:
cdh官方源下载
该方式已经在IMPALA/package/scripts/impala-catalog.py文件中设置好,无需手动操作
注意! 需要确认http链接中涉及到的操作系统是否与自己保持一致,否则要做出适当修改,做出修改后,应通过浏览器验证链接是否可达
优点: 无需手动配置,操作方便
缺点: 因为要去官网下载impala的rpm文件,不够稳定,安装过程比较慢,可能会失败
本地源下载
注:采用此方案,需要把官方下载操作中列出的几行代码注释掉~
到如下链接下载cdh集成压缩包
下载好,将安装包解压放置在linux某台服务器上的/var/www/html/目录下
浏览器输入ip/cdh
若出现如下内容,证明本地源配置成功
若此处出现显示问题,需要检查httpd服务是否安装并开启
yum install httpd
service httpd start
在ambari-server节点上 /etc/yum.repos.d/目录下添加文件:
impala.repo,配置如下:
[cloudera-cdh5]
# Packages for Cloudera's Distribution for Hadoop, Version 5, on RedHat or CentOS 6 x86_64
name=Cloudera's Distribution for Hadoop, Version 5
baseurl=http://{ip}/cdh/5.14.0
gpgkey =http://{ip}/cdh/RPM-GPG-KEY-cloudera
gpgcheck = 0
随后将此文件发送到各个需要安装impala的agent节点上
2.2 重启ambari-server
重启ambari-server之前,请先过一下 第三部分, ambari集成imapal过程中遇到的问题
# 执行以下命令重启ambari-server
ambari-server restart
2.3 初始化impala
重启成功后,ambari web界面选择impala服务进行安装
Actions–> Add Service --> 选择 Impala–> next
推荐: ambari-server节点安装Impala_Catalog_Service,Impala_State_Store, agent节点安装Impala_Daemons
注意:若2.1步骤中直接选择官方源下载方式,这里可能会很慢,而且可能会失败,需要多试几次
2.4 修改hdfs配置文件
Ambari主界面–>HDFS–>Configs–>Advanced修改
修改Custom core-site文件
增加以下参数:
<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
</property>
<property>
<name>dfs.client.read.shortcircuit.skip.checksum</name>
<value>false</value>
</property>
<property>
<name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
<value>true</value>
</property>
修改Custom hdfs-site文件
增加以下参数:
<property>
<name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.block.local-path-access.user</name>
<value>impala</value>
</property>
<property>
<name>dfs.client.file-block-storage-locations.timeout.millis</name>
<value>60000</value>
</property>
修改结束后,按照ambari界面提示重启hdfs及其相关组件
需要确认安装impala节点下/etc/impala/conf目录下是否有以下几个文件
core-site.xml
hdfs-site.xml
hive-site.xml
没有的话,需要从/etc/hadoop/conf/*.xml拷贝过去
cp /etc/hadoop/conf/*.xml /etc/impala/conf
# 或者可能需要scp远程拷贝(如果当前节点/etc/hadoop/conf目录下也没有这些文件时)
2.5 启动impala服务
界面上启动impala服务
这里启动一会儿之后Impala_Daemons节点会挂掉
大约几分钟的样子,这是因为还有一些配置没有配置好
2.6 复制hbase jar包到impala目录下
将hbase的jar包拷贝到 /usr/lib/impala/lib 并创建软连接(Impala_Daemons节点执行)
注意:需要根据对应的cdh版本选择对应的hbase版本,否则可能出现版本不兼容的问题. 同时,应以自己的cdh版本为准
cp /usr/lib/hbase/lib/hbase-*.jar /usr/lib/impala/lib/
如下图 :我的节点上/usr/lib/impala/lib目录下已有hbase的四个jar包(hbase-annotations.jar,hbase-client.jar,hbase-common.jar,hbase-protocol.jar),这几个就不需要再次建立软连接了
# 创建所需的软链接
ln -s hbase-examples-1.2.0-cdh5.14.0.jar hbase-examples.jar
ln -s hbase-external-blockcache-1.2.0-cdh5.14.0.jar hbase-external-blockcache.jar
ln -s hbase-hadoop2-compat-1.2.0-cdh5.14.0.jar hbase-hadoop2-compat.jar
ln -s hbase-hadoop-compat-1.2.0-cdh5.14.0.jar hbase-hadoop-compat.jar
ln -s hbase-it-1.2.0-cdh5.14.0.jar hbase-it.jar
ln -s hbase-prefix-tree-1.2.0-cdh5.14.0.jar hbase-prefix-tree.jar
ln -s hbase-procedure-1.2.0-cdh5.14.0.jar hbase-procedure.jar
ln -s hbase-resource-bundle-1.2.0-cdh5.14.0.jar hbase-resource-bundle.jar
ln -s hbase-rest-1.2.0-cdh5.14.0.jar hbase-rest.jar
ln -s hbase-rsgroup-1.2.0-cdh5.14.0.jar hbase-rsgroup-1.2.0.jar
ln -s hbase-server-1.2.0-cdh5.14.0.jar hbase-server.jar
ln -s hbase-shell-1.2.0-cdh5.14.0.jar hbase-shell.jar
ln -s hbase-spark-1.2.0-cdh5.14.0.jar hbase-spark.jar
ln -s hbase-thrift-1.2.0-cdh5.14.0.jar hbase-thrift.jar
作用: 如果没有拷贝hbase的jar到/usr/lib/impala/lib,会报如下错误:
如果没有正确创建软链接会导致jar包不能被正确识别,会报类似的错误:
F0510 04:53:11.157616 25119 impalad-main.cc:64] NoClassDefFoundError: org/apache/hadoop/hbase/client/Scan
CAUSED BY: ClassNotFoundException: org.apache.hadoop.hbase.client.Scan
2.7 修改/etc/default/bigtop-utils配置
在该文件下修改JAVA_HOME配置
2.8 查看impala集成情况
Ambari界面,相关组件被正常集成和启动
Impala_State_Store节点正常
Impala_Catalog_Service节点正常
Impala_Daemons节点正常
在Impala_Daemons节点运行 impala shell
三. Impala集成过程中遇到的问题
3.1 Impala初始化报错Host key verification failed
报错关键信息如下:
Traceback (most recent call last):
File "/var/lib/ambari-agent/cache/stacks/HDP/2.6/services/IMPALA/package/scripts/impala-daemon.py", line 38, in <module>
...
resource_management.core.exceptions.ExecutionFailed: Execution of 'scp -r root@{hostname}:/etc/hadoop/conf/core-site.xml /var/lib/ambari-agent/tmp' returned 1. Host key verification failed.
原因: ssh的问题,当前主机和传输的主机没有配置ssh互信
解决方案: 配置ssh免密登录
或者:
注释掉: impala_base.py 52行
注释掉: impala_daemon.py 14行
# self.configureHDFS(env)
注意: 在初始化脚本结束后需要执行以下命令:
cp /etc/hadoop/conf/*.xml /etc/impala/conf
# 或者可能需要scp远程拷贝(如果当前节点/etc/hadoop/conf目录下也没有这些文件时)
确保: imapla安装节点下面包含以下配置文件
core-site.xml
hdfs-site.xml
hive-site.xml