impala + hive metastore遇到的问题

impala版本:1.1.1

hive:0.10.0-cdh4.4.0

hadoop:hadoop-2.0.0-cdh4.2.2

数据存储在hadoop的HDFS,文件格式是RCFile,用impala创建external table方式关联文件。一直都正常运行,但因为数据量太大,业务应用访问太慢,需要将table分区,但没想分区太多。出现了异常,异常内容如下:

ERROR: AnalysisException: Failed to load metadata for table: my_table CAUSED BY: TableLoadingException: TableLoadingException: Failed to load metadata for table: my_table CAUSED BY: TTransportException: java.net.SocketTimeoutException: Read timed out CAUSED BY: SocketTimeoutException: Read timed out

或者

AnalysisException:Failed to load metadata for table:my_table

CAUSED BY:TableLoadingException:Failed to load metadata for table:my_table

CAUSED BY: TTransportExeption: null

查找原因,发现impala与hive都不能正常读取metadata信息。但进程仍正常。只好kill掉进程再重启

1)ps -ef|grep metastore

2)返回hive进程pid,执行kill -9 pid

3)./hive --service metastore

4)service impala-server stop

5)service impala-server start

6)impala-shell -r

可以获取到metadata数据,看到表信息

但是仍然不能访问my_table

查询hive的log,在/tmp/root/hive.log目录下(可以在hive-site.xml中修改路径)

发现报java.lang.OutOfMemoryError:GC overhead limit exceed

修改hive/conf/hive-env.sh,将export HADOOP_HEAPSIZE=** 改大,并重启hive就可以了。(据说也可以升级impala到1.2.4版本解决)

如果进入impala-shell,访问某些表时仍有如下错误:

ERROR: TApplicationException:get_table failed:out of sequence response

执行:invalidate metadata my_table;

再执行你的sql语句应该就可以了。

 

 

你可能感兴趣的:(impala)