故障排除

本教程旨在为正在构建,部署和使用 CarbonData 的用户和开发人员提供故障排除。

当加载数据时,遇到 tablestatus.lock 问题:

现象

17/11/11 16:48:13 ERROR LocalFileLock: main hdfs:/localhost:9000/carbon/store/default/hdfstable/tablestatus.lock (No such file or directory)
java.io.FileNotFoundException: hdfs:/localhost:9000/carbon/store/default/hdfstable/tablestatus.lock (No such file or directory)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:101)

可能原因 当你创建 carbonsession 时使用 <hdfs path> 作为存储路径,你可能会遇到这种错误,因为默认的锁类型是 LOCALLOCK。

处理 创建 carbonsession 之前,进行如下设置:

import org.apache.carbondata.core.util.CarbonProperties
import org.apache.carbondata.core.constants.CarbonCommonConstants
CarbonProperties.getInstance().addProperty(CarbonCommonConstants.LOCK_TYPE, "HDFSLOCK")

加载 thrift 类库失败

现象

Thrift 抛出以下异常 :

thrift: error while loading shared libraries:
libthriftc.so.0: cannot open shared object file: No such file or directory

可能原因

包含类库目录的完整路径没有被正确配置。

处理

参照 Apache thrift 文档 https://thrift.apache.org/docs/install 正确地安装 thrift。

启动 Spark Shell 失败

现象

shell 提示以下的错误 :

org.apache.spark.sql.CarbonContext$$anon$$apache$spark$sql$catalyst$analysis
$OverrideCatalog$_setter_$org$apache$spark$sql$catalyst$analysis
$OverrideCatalog$$overrides_$e

可能原因

Spark 版本和编译 Carbondata 指定的 Spark 配置不匹配。

处理

  1. 请确保 Spark 版本和编译 Carbondata 指定的 Spark 配置匹配。

  2. 使用以下命令 :

"mvn -Pspark-2.1 -Dspark.version {yourSparkVersion} clean package"

注意 : 避免直接使用 "mvn clean package" 而不指定配置参数。

无法在集群上执行加载查询.

现象

加载查询时遇到以下异常:

Dictionary file is locked for updation.

可能原因

集群中所有节点上 carbon.properties 文件可能不一致。

处理

按照下面步骤确保所有节点上的 carbon.properties 文件一致:

  1. 将 master 节点上的 carbon.properties 文件复制到集群中其他所有节点上。 比如, 你可以使用 ssh 将该文件复制到所有节点上。

  2. 为了使修改生效,重启 Spark 集群。

无法在集群上执行插入查询.

现象

插入查询时遇到以下异常:

Dictionary file is locked for updation.

可能原因

集群中所有节点上 carbon.properties 文件可能不一致。

处理

按照下面步骤确保所有节点上的 carbon.properties 文件一致:

  1. 将 master 节点上的 carbon.properties 文件复制到集群中其他所有节点上。 比如, 你可以使用 scp 将该文件复制到所有节点上。

  2. 为了使修改生效,重启 Spark 集群。

无法通过 thrift 连接到 hiveuser

现象

遇到以下异常 :

Cannot connect to hiveuser.

可能原因

外部进程没有访问权限。

处理

确保 mysql 中的 Hiveuser 能够允许访问外部进程。

无法在创建表时读取 Metastore 数据库。

现象

我们在尝试连接时遇到以下异常 :

Cannot read the metastore db

可能原因

元数据库可能出现功能障碍。

处理

从 Spark 目录的 carbon.metastore 中删除 metastore db。

无法在集群上加载数据

现象

数据加载时遇到以下异常 :

Data Load failure exception

可能原因

下面原因可能导致这个异常 :

  1. 集群中所有节点上的 core-site.xml、hive-site.xml、yarn-site 以及 carbon.properties 等文件可能不一致。

  2. carbon.properties 中关于 hdfs ddl 没有正确的配置。

处理

按照下面步骤确保所有节点上的配置文件一致:

  1. 将 master 节点上的 core-site.xml、hive-site.xml、yarn-site 以及 carbon.properties 文件复制到集群中其他所有节点上。 比如, 你可以使用 scp 将该文件复制到所有节点上。

    注意 : 在主节点的 carbon.properties 中设置好 hdfs ddl 路径。

  2. 为了使修改生效,重启 Spark 集群。

无法在集群上插入数据

现象

数据插入时遇到以下异常 :

Data Load failure exception

可能原因

下面原因可能导致这个异常 :

  1. 集群中所有节点上的 core-site.xml、hive-site.xml、yarn-site 以及 carbon.properties 等文件可能不一致。

  2. carbon.properties 中关于 hdfs ddl 没有正确的配置。

处理

按照下面步骤确保所有节点上的配置文件一致:

  1. 将 master 节点上的 core-site.xml、hive-site.xml、yarn-site 以及 carbon.properties 文件复制到集群中其他所有节点上。 比如, 你可以使用 scp 将该文件复制到所有节点上。

    注意 : 在主节点的 carbon.properties 中设置好 hdfs ddl 路径。

  2. 为了使修改生效,重启 Spark 集群。

多个用户无法在表上执行并发操作(加载,插入,更新)

现象

运行时遇到以下异常:

Table is locked for updation.

可能原因

不支持并发。

处理

用户必须等待查询执行完成,并且确保该表的锁被释放,以便其他查询能够执行成功。

无法创建拥有单个数字类型列的表格

现象

运行时遇到以下异常 :

Table creation fails.

可能原因

不支持这种行为

处理

创建表格必须提供一个维度列。