使用Spark,从HIVE中获取数据写入HBase过程中遇到的坑

时间:2024-03-29 09:37:19

在学习大数据的过程中,通过提交spark-submit提交jar包,将hive中的数据写入HBase的过程中遇到诸多问题,与大家分享。

首先,在跑任务的过程中发现错误。

ERROR metastore.RetryingHMSHandler: AlreadyExistsException(message:Database default already exists) 

使用Spark,从HIVE中获取数据写入HBase过程中遇到的坑

该问题是在创建默认数据库时发现hive中已经创建导致的,该问题可以忽略不计。

后续过程中发现spark的任务一直在accepted状态,查看日志发现提示以下错误:

There are 2 datanode(s) running and no node(s) are excluded in this operation.

该问题的原因是因为进行了hadoop namenode -format导致主节点的$HADOOP_HOME/dfs/name/current文件内的信息和从节点中$HADOOP_HOME/dfs/data/current的信息不一致导致。这两个地址根据配置因人而异,可以参考配置文件hdfs-site.xml文件中的dfs.namenode.name.dir及dfs.datanode.data.dir中所配置的目录。

暴力的处理方式是,首先停掉hadoop记全,分别删除对应的current文件夹下的所有文件。然后执行hadoop namenode -format,然后重新启动集群,之后问题得到解决。

在创建HBase表的时候,提示Table already exists

使用Spark,从HIVE中获取数据写入HBase过程中遇到的坑

原因是在删除hdfs后,hbase的元数据在zookeeper集群中仍然有保留。

此时执行,bin/zkCli.sh

ls /hbase/table,查看是否有要新建的表面,如果有使用rmr命令删除,之后重启Hbase,使用create即可成功。