详细:Linux系统怎么安装以及配置Hive 以及我遇到的问题……Table ‘CTLGS‘ already exists (state=42S01,code=1050)

目录

一、Hive是干什么的?

二、安装Hive所具备的条件

三、安装Hive

(一) Hive的安装及环境变量配置

        1.上传软件包

2.解压软件包(解压到对应文件目录)

3.配置环境变量(方便后面去操作)

4.避免jar包冲突

5.删除原来的jar包并上传新的jar包

6.初始化元数据库

(二)元数据配置

1.拷贝java.jar包

2.配置xml文件

3.登陆mysql初始化hive元数据库

4.初始化元数据库

 1.出现问题: 

2.原因分析:

3.解决问题:

(三)Hive启动检测

1.编写启动脚本

2. 赋予权限

3.配置hive日志路径

4.hive启动检测

1)出现问题:

2)原因分析:

3)解决问题:

4)扩展:

5)重新启动hive

​编辑

四、连接DBeaver

(一)DBeaver安装

        1.去官网下载

        2.安装

        1)双击应用程序(出现安装向导)

2)点击下一步 ——>我接受

3)下一步 ——第一个(For anyone who uses this computer(all users))

4)下一步

5)选择安装位置

6)下一步 —— 安装

​(二) Dbeaver配置链接数据库

        1.创建连接(确认metastore开启、hiveserver2开启)

2.新建apache hive数据库

3.填写url地址

4.点击编辑驱动设置

5.点击确定,就可以连接到hive数据库

以上我们就完成了hive的安装以及连接到DBeaver!!!


 

一、Hive是干什么的?

Linux Hive是一个基于Hadoop的数据仓库工具,它可以将结构化的数据文件映射为一张数据表,并提供类SQL查询功能。它支持多种数据格式,包括CSV、TSV、Parquet等,并且可以通过HiveQL语言进行数据查询和分析。

  • 上次我们已经成功安装了mysql 下面跟着小编一起安装Hive吧!!!

二、安装Hive所具备的条件

  1. jdk安装
  2. hadoop安装以及集群的搭建
  3. mysql安装以及登录(上篇有详细配置哦)
  4. 最后安装Hive

三、安装Hive

(一) Hive的安装及环境变量配置

        1.上传软件包
  • 进入对应路径
cd /opt/softwares

  • 点击新建文件传输(出现新的标签,直接把安装包拖进来)

  • 查看结果

2.解压软件包(解压到对应文件目录)
 tar -xf apache-hive-3.1.2-bin.tar.gz -C /opt/modules/

  • 配置软连接
 ln -s apache-hive-3.1.2-bin/ hive

3.配置环境变量(方便后面去操作)
vi /etc/profile

  • 更新环境变量

4.避免jar包冲突
  • 去相应的路径
cd /opt/modules/hive/lib/
  • 更改名字 
 mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.bak

5.删除原来的jar包并上传新的jar包
  • 删除
rm -f guava-19.0.jar 

  • 上传(还是原来的上传方法:新建文件传输)

  • 查看结果

6.初始化元数据库
  • 对应的文件目录下

schematool -dbType derby -initSchema

  • 查看结果

(二)元数据配置

1.拷贝java.jar包

  • 拷贝到lib路径
cp mysql-connector-java-5.1.27-bin.jar /opt/modules/hive/lib

  • 查看结果

2.配置xml文件

  • 在对应路径新建xml文件
vi hive-site.xml

  • 编辑文件
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- jdbc 连接的 URL -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://bigdata01:3306/metastore?useSSL=false</value>
    </property>
    <!-- jdbc 连接的 Driver -->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <!-- jdbc 连接的 username -->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <!-- jdbc 连接的 password -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>
    <!-- Hive 元数据存储版本的验证 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    <!-- 元数据存储授权 -->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>
    <!-- Hive 默认在 HDFS 的工作目录 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/opt/modules/hive/warehouse</value>
    </property>
    <!-- 指定存储元数据要连接的地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://bigdata01:9083</value>
    </property>
    <!-- 指定 hiveserver2 连接的 host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>bigdata02</value>
    </property>
    <!-- 指定 hiveserver2 连接的端口号 -->
    <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
    </property>
    <property>
        <name>hive.cli.print.header</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.cli.current.db</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.server2.enable.doAs</name>
        <value>false</value>
    </property>
</configuration>
  • 查看结果

3.登陆mysql初始化hive元数据库

mysql -uroot -p123456

create database metastore;

show databases;

  • 退出
exit;

4.初始化元数据库

schematool -initSchema -dbType mysql -verbose

 1.出现问题: 

Table 'CTLGS' already exists (state=42S01,code=1050)

2.原因分析:

这里的问题应该是在连接的数据库中已经存在hive所需要的数据表,像metastore数据一样。

3.解决问题:

进入到要连接的数据库下面,查看是否有一个hive的database。如果有的话,直接删除掉hive数据库,然后再重新初始化hive就可以了。

  • 在次检查问题(发现这里有01 但是我配置的是bigdata02

  • 进入配置文件
cd /opt/modules/hive/conf/

  • 发现这里的主机名还未更改 

  • 更改后

  • 再次初始化
schematool -initSchema -dbType mysql -verbose

  • 查看结果

(三)Hive启动检测

1.编写启动脚本
cd /opt/modules/hive/bin
vi hiveservice.sh 

#!/bin/bash

HIVE__LOG_DIR=$HIVE_HOME/logs
if [ ! -d $HIVE_LOG_DIR ]; then
   mkdir -p $HIVE_LOG_DIR
fi

# 检查进程是否运行正常,参数1为进程名,参数2为进程端口
function check_process() {
   pid=$(ps -ef 2>/dev/null | grep -v grep | grep -i $1 | awk '{print $2}')
}

function hive_start() {
   metapid=$(check_process HiveMetastore 9083)
   cmd="nohup hive --service metastore > $HIVE_LOG_DIR/metastore.log 2>&1 &"
   if [ -z "$metapid" ]; then
      eval $cmd
   else
      echo "Metastore服务已启动"
   fi

   server2pid=$(check_process HiveServer2 10000)
   cmd="nohup hive --service hiveserver2 > $HIVE_LOG_DIR/hiveServer2.log 2>&1 &"
   if [ -z "$server2pid" ]; then
      eval $cmd
   else
      echo "HiveServer2服务已启动"
   fi
}

   else
      echo "Metastore服务未启动"
   fi

   server2pid=$(check_process HiveServer2 10000)
   if [ "$server2pid" ]; then
      kill $server2pid
   else
      echo "HiveServer2服务未启动"
   fi
}

case $1 in
"start")
   hive_start
   ;;
"stop")
   hive_stop
   ;;
"restart")
   hive_stop
   sleep 2
   hive_start
   ;;
"status")
   check_process HiveMetastore 9083 >/dev/null && echo "Metastore服务运行正常" || echo "Metastore服务运行异常"
   check_process HiveServer2 10000 >/dev/null && echo "HiveServer2服务运行正常" || echo "HiveServer2服务运行异常"
   ;;
*)
   echo "Invalid Args!"
   echo 'Usage: '$(basename $0)' start|stop|restart|status'
   ;;
esac

2. 赋予权限

3.配置hive日志路径
mv hive-log4j2.properties.template hive-log4j2.properties


  • 修改值路径
 vi hive-log4j2.properties

  • 将property.hive.log.dir的值修改:
property.hive.log.dir = /opt/modules/hive/logs

4.hive启动检测
  • 对应路径
cd /opt/modules/hive/bin
  • 脚本启动
hiveservice.sh start

1)出现问题:

        /opt/modules/hive/bin/hiveservice.sh: line 101: syntax error: unexpected end of file

2)原因分析:

        启动失败

3)解决问题:
  •         检查hadoop集群是否启动
jps

        

  • 启动hadoop集群
start-dfs.sh
start-yarn.sh

4)扩展:
  •  为什么我能够在根目录下执行呢?原本的启动集群只能在指定路径下:
cd /opt/modules/hadoop/bin/
  • 因为我在环境变量里面配置了路径
vi /etc/profile
:$HADOOP_HOME/sbin

  • 这样就可以在任意目录下启动集群了(像查询jdk版本号一样)
5)重新启动hive
hiveservice.sh start

  • 检查文件:指出第101行出问题了(因为里面根本没有行数,所以是复制错了,直接重新复制一遍)
  • 清空文件内容
echo >hiveservice.sh

  • 查看结果

  • 编写文件内容

  • 启动
hiveservice.sh start

./hiveserver2

  • 复制xc02会话,输入命令 
hive

 show databases;

四、连接DBeaver

(一)DBeaver安装

        1.去官网下载

        2.安装

        1)双击应用程序(出现安装向导)

2)点击下一步 ——>我接受

3)下一步 ——第一个(For anyone who uses this computer(all users))

4)下一步

5)选择安装位置

6)下一步 —— 安装

、(二) Dbeaver配置链接数据库

        1.创建连接(确认metastore开启、hiveserver2开启)

  • hiveserver2开启

2.新建apache hive数据库

  • 新建

  • 点击下一步(选择hive)

3.填写url地址

4.点击编辑驱动设置

  •         选择库

  • 删除以前的 上传现在的

  • 这里的jar包在集群里面,需要我们去下载
  • 找到hive目录下
cd /opt/modules/hive/jdbc

  • 点击新建文件传输(因为小编用不起rz sz)

  • get +文件名 (下载)

  • 查看文件

  • 上传jar包

5.点击确定,就可以连接到hive数据库

以上我们就完成了hive的安装以及连接到DBeaver!!!

### 回答1: 出现该报错是因为数据库中已经存在名为'ctlgs'的表,导致该操作无法执行。解决方法是要么删除'ctlgs'表,要么使用不同的表名,保证表名唯一。同时可能还需要查看和排除其他与该错误相关的问题,以确保Hive Metastore的正常运行。 ### 回答2: 该错误代码的意义是,Hive在运行元数据存储组件时,出现了一个名为'ctlgs'的表已经存在的错误,这将导致元数据存储的状态不一致。这个错误可能是因为在设置Hive存储组件时,使用了错误的配置或参数,并且在运行期间导致了冲突。 这个错误发生后,需要使用--verbose参数来获取详细的堆栈跟踪信息,以便查明错误发生的原因。通常,这个错误可能是由于元数据存储脚本执行错误,导致Hive元数据存储不能被正确初始化。或者可能是由于其他原因,例如版本不兼容性或存储位置受到限制。 为了解决这个问题,可以考虑使用以下步骤: 1. 检查在设置Hive存储组件时使用的所有配置和参数,确保它们正确无误,并且没有不一致的地方。 2. 检查Hive元数据存储脚本是否正确运行,查看是否存在任何可能导致错误的语法错误或其他问题。 3. 检查是否有版本不兼容性问题,例如Hive可能需要更新或升级到适应更高或更低的版本。 4. 检查存储位置的限制,查看是否有权限限制或者其他方面的问题导致存储组件无法正确访问到。 5. 同时,使用--verbose参数来获取详细的堆栈跟踪信息,以便更好地了解错误发生的原因,从而采取更有针对性的解决方案。 总之,这个错误是一个在Hive元数据存储的设置和初始化过程中可能出现的问题,解决这个错误需要审慎地检查配置和参数,检查存储脚本和版本兼容性,以及检查存储位置的限制。同时,必须对错误进行详细的分析和调试,以便更好地了解发生错误的原因,并在采取解决方案时做出更有针对性的决策。 ### 回答3: 这个错误是在使用Hive的过程中出现的,它告诉我们数据库中已经存在名为“ctlgs”的表,因此无法再创建该表,这可能是由于之前的操作出现了错误或重复执行了某些操作。 这个错误会导致Hive的元数据状态不一致,因此我们需要解决这个问题,使得Hive元数据可以正常使用。首先,我们可以通过查看详细的堆栈跟踪信息,了解导致这个错误的具体原因。 通常,这个错误的出现是由于Hive metastore服务的初始化失败。有些情况下,这可能是由于之前的初始化尝试失败或者数据库中已经存在相关的表等信息。在这种情况下,我们需要先确保数据库中不存在重复的表或元数据信息,然后再重新执行初始化脚本。 如果我们在执行初始化脚本时遇到了错误,可能是由于脚本中存在一些语法错误或者其他问题。在这种情况下,我们需要检查脚本的语法,并尝试修正错误,然后重新执行脚本。此外,我们还可以尝试使用verbose选项来查看详细的堆栈跟踪信息,以便更好地定位和解决问题。 总之,当我们遇到Hive元数据初始化失败时,需要首先了解导致错误的具体原因,然后尝试修正相关的问题,最终使得Hive元数据可以正常使用,保证我们的数据分析和处理工作正常进行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值