linux上安装配置hive

注意:在看这边文章之前请先去看我  hadoop安装的文章(https://blog.csdn.net/u013232219/article/details/104429007

再进行下列操作

hive下载 & 配置
下载hive最新版:http://mirror.bit.edu.cn/apache/hive/
解压缩: tar -zxvf apache-hive-3.1.2-bin.tar.gz
配置hive:
$HIVE_HOME/bin/hive-config.sh

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export HADOOP_HOME=/home/hive/jrxwork/hadoop-3.1.3
export HIVE_HOME=/home/hive/jrxwork/apache-hive-3.1.2-bin
$HIVE_HOME/hive-env.sh

HADOOP_HOME=/home/hive/jrxwork/hadoop-3.1.3


$HIVE_HOME/hive-site.xml

<!--mysql相关配置 -->
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>Username to use against metastore database</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
</property>
<!--指定资源目录和日志目录,下面需要依次创建这些目录 -->
<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/home/hive/scratchdir</value>
    <description>Local scratch space for Hive jobs</description>
</property>
<property>
    <name>hive.downloaded.resources.dir</name>
    <value>/home/hive/resourcesdir</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
</property>
<property>
    <name>hive.querylog.location</name>
    <value>/home/hive/querylog</value>
    <description>Location of Hive run time structured log file</description>
</property>
<property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>/home/hive/operation_logs</value>
    <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>
创建相关目录
sudo mkdir -p /home/hive/scratchdir
sudo mkdir -p /home/hive/resourcesdir
sudo mkdir -p /home/hive/querylog
sudo mkdir -p /home/hive/operation_logs
配置环境变量
vim /etc/profile
--------------------------------内容---
#hive
export HIVE_HOME=/home/hadoop/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin
--------------------------------内容---
#使配置生效
source /etc/profile

mysql创建hive数据库并赋权
mysql -u root -p
create database hive;
use hive;
create table user(Host char(20),User char(10),Password char(20));
insert into user(Host,User,Password) values("localhost","hive","hive");
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'localhost' IDENTIFIED BY 'hive';
FLUSH PRIVILEGES;
将mysql驱动包拷贝到$HIVE/lib下
初始化mysql元数据: bin/schematool -dbType mysql -initSchema --verbose

发现有异常:

1) Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(Z Ljava/lang/String;Ljava/lang/Object;)

扫描二维码关注公众号,回复: 9867069 查看本文章


原因: 当前hive所依赖的guava包的版本和hadoop依赖的guava版本冲突了。

解决办法: 替换高版本的guava,更换成和hadoop一样的guava版本:
          hadoop里的guava位置share/hadoop/common/lib/guava-27.0-jre.jar

2)     Underlying cause: java.sql.SQLException : Unknown system variable 'query_cache_size'
    SQL Error code: 1193
    org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
        at org.apache.hadoop.hive.metastore.tools.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:94)
        at org.apache.hive.beeline.HiveSchemaTool.getConnectionToMetastore(HiveSchemaTool.java:169)
        at org.apache.hive.beeline.HiveSchemaTool.testConnectionToMetastore(HiveSchemaTool.java:475)
        at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:581)
        at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:567)
        at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:1517)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        
解决办法: 由于mysql驱动包的版本过低导致这个问题的发生意思是query cache在MySQL5.7.20就已经过时了,而在MySQL8.0之后就已经被移除了。
          我改成8以上才可以了。
          
启动

用这个命令纳入后台运行: nohup  hiveserver2  &
 


 

发布了27 篇原创文章 · 获赞 0 · 访问量 811

猜你喜欢

转载自blog.csdn.net/u013232219/article/details/104431080