之前根据网上相关教程搭建hive,一直没什么问题,最近新搭建 hive服务时出现了无法创建数据表的问题,从日志中发现报了一个,无法找到/user问题,正常情况下创建一张数据表的时候会在hdfs中创建一个/user/hive/warehouse的文件夹,去hdfs中没有这个目录,我就手动添加
hadoop fs -mkdir /user/hive/warehouse
显示添加失败,经过尝试要在目录前添加-p函数,并且添加namenode的域名(机器名)和端口.
hadoop fs -mkdir -p hdfs://host1:port1/user/hive/warehouse
创建成功后,重新打开hive使用,创建hive表,依然失败,一样的报错,无法找到/user目录。依据上次手动创建目录的经验我认为应该是没找到对应的hdfs服务。
修改hive-site.xml文件
<property>
<name>hive.metastore.warehouse.dir</name>
<value> hdfs://<Federation name>/user/hive/warehouse</value>
</property>
重新启动hive, 可以创建hive表了。对于之前使用hive无需过多配置,这次却需要修改warehouse,也找到了合理的解释,之前配置hive都是安装在Hadoop namenode的机器上直接可以通过/user/hive/warehouse创建hdfs目录,但是这次为了分散压力我把hive安装到了别的服务器上,导致无法找到正确的namenode,所以需要在hive.metastore.warehouse.dir,添加hdfs联邦的地址。