Impala配置与错误解决方案

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhong_han_jun/article/details/45563505

安装环境

版本 2.1.0 对应CDH5.3.0
       impala是CDH的组件,hadoop其他环境(hdfs、yarn、hive)已经准备的情况下,直接通过yum进行安装,这里提供下载地址impala下载

安装内容:
安装的用户为:root
       hdname (hive 元数据节点所在)
               impala impala-server impala-state-store impala-catalog impala-shell
       其他节点
       impala-server impala-shell

权限配置(所有机器都应当进行)

   impala 安装过程中会创建名为 impala 的用户和组,不要删除该用户和组。
如果想要 impala 和 YARN 合作,需要把 impala 用户加入 hdfs 组,相关的可以了解的是Llama项目。
  impala 在执行 DROP TABLE 操作时,需要把文件移到到 hdfs 的回收站,所以你需要创建一个 hdfs 的目录 /user/impala,并将其设置为impala 用户可写。同样的,impala 需要读取 hive 数据仓库下的数据,故需要把 impala 用户加入 hive 组。

添加附属组命令

    usermod -G hive,hdfs,hadoop impala

结果如图
这里写图片描述

创建impala在hdfs上的目录并设置权限

sudo -u hdfs hadoop fs -mkdir /user/impala
sudo -u hdfs hadoop fs -chown impala /user/impala

设置scoket path

在每个节点上创建/var/run/hadoop-hdfs
kdir -p /var/run/hadoop-hdfs
  注意:该文件夹可能已经存在,应当确认用impala是否有权限进行读写
  如果已经存在,将用户impala加入该文件所属的组,并修改该文件组的权限即:chmod 775 /var/run/hadoop-hdfs

mysql驱动

驱动下载地址mysql-connector-java-5.1.30.tar.gz
将下载的文件复制到/usr/share/java/并修改名为mysql-connector-java.jar
选择这个文件路径是因为impala的默认路径是这个,可以查看/etc/default/impala中的参数MYSQL_CONNECTOR_JAR

#配置文件设置
配置文件存在两个地方
##/etc/default/impala
该文件为impala的默认配置,包含了机器信息和相关路径配置,包括JDBC、impala的所有配置文件,这里需要修改的是metastore和catalog两个服务安装所在的主机信息,最终结果如下,高亮部分为修改地方,其中hdname为impala的catalog和state-store组件安装所在机器的host名,也即元数据mysql所在机器

==IMPALA_CATALOG_SERVICE_HOST=hdname==
==IMPALA_STATE_STORE_HOST=hdname==
IMPALA_STATE_STORE_PORT=24000
IMPALA_BACKEND_PORT=22000
IMPALA_LOG_DIR=/var/log/impala

IMPALA_CATALOG_ARGS=" -log_dir=${IMPALA_LOG_DIR} ==-state_store_host=${IMPALA_STATE_STORE_HOST}== "
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} \
    -use_statestore \
    -state_store_host=${IMPALA_STATE_STORE_HOST} \
    -be_port=${IMPALA_BACKEND_PORT}"

ENABLE_CORE_DUMPS=true

# LIBHDFS_OPTS=-Djava.library.path=/usr/lib/impala/lib
# MYSQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar
# IMPALA_BIN=/usr/lib/impala/sbin
# IMPALA_HOME=/usr/lib/impala
# HIVE_HOME=/usr/lib/hive
# HBASE_HOME=/usr/lib/hbase
# IMPALA_CONF_DIR=/etc/impala/conf
# HADOOP_CONF_DIR=/etc/impala/conf
# HIVE_CONF_DIR=/etc/impala/conf
# HBASE_CONF_DIR=/etc/impala/conf

##/etc/impala/conf
  实际上这个文件所在的位置是由/etc/default/impala中所决定的,有的版本可能是在/usr/lib/impala/conf下
  hive、hdfs、core三个核心配置文件分别从hdfs和hive的配置文件中复制过来,如果有hbase-site.xml,也一起复制过来
  结果如下:
这里写图片描述
  修改文件hdfs-site.xml,在文件中增加下列内容

 <property>
    <name>dfs.client.read.shortcircuit</name>
    <value>true</value>
</property>
<property>
    <name>dfs.domain.socket.path</name>
    <value>/var/run/hadoop-hdfs/dn._PORT</value>
</property>
<property>
  <name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
  <value>true</value>
</property>
<property>
  <name>dfs.client.file-block-storage-locations.timeout</name>  
  <value>10000</value>
</property>

配置文件同步

  将impala文件和conf文件夹同步到所有的impala-server节点

启动impala

确认所有的服务已经启动,包括hive、impala,查看impala启动服务可以使用命令

ps -ef |grep impala

如果正常的话,在hdname中有以下三个服务,如图
这里写图片描述
有可以通过url访问也可以通过浏览器访问相关的服务

            主机名:25010  默认的元数据所在节点信息,
            主机名:25000    server信息,任何有装server的节点都可以访问
            主机名:25020  catalog信息

在任意一节点使用命令impala-shell登录impala终端,连接到store中connect hdname;
  执行命令invalidate metadata更新元数据
  结果如图
这里写图片描述

错误解决参考

错误1

路径权限问题
Error connecting: TTransportException, Could not connect to master:21000
在日志文件/var/log/impala中查看impalad.ERROR,错误如下

ERROR: short-circuit local reads is disabled because
  - dfs.domain.socket.path is not configured.
  - dfs.client.read.shortcircuit is not enabled.

这里写图片描述
解决方法
   找到对应参数的下的值,查看该路径是否存在,impala用户是否有权限进行读写

错误2

invalidate metadata 更新元数据出错
错误代码

Query: invalidate metadata
ERROR: Couldn't open transport for hdname:26000 (connect() failed: Connection refused)

查看日志信息,有如下错误,无法读取datanode上的数据块信息

I0507 10:03:36.218281 21562 BlockStorageLocationUtil.java:177] Failed to query block locations on datanode 192.168.73.16:50020: org.apache.hadoop.ipc.RemoteException(java.lang.UnsupportedOperationException): Datanode#getHdfsBlocksMetadata  is not enabled in datanode config
        at org.apache.hadoop.hdfs.server.datanode.DataNode.getHdfsBlocksMetadata(DataNode.java:1547)

解决方法
注意:这里使用的端口说是26000,事实上在整个配置过程中没有任何的端口设置为26000,同时出现这种错误是在登录终端并且成功连接之后出现,也就是说这跟元数据相关
解决方法:
/etc/default/impala 中的配置项IMPALA_CATALOG_ARGS,需要增加参数 -state_store_host=${IMPALA_STATE_STORE_HOST}
结果如下
这里写图片描述
该参数告诉了catalog去哪个host找元数据,事实上在state-store的配置中也有重新设置state_store_host参数
这里写图片描述

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页