当前位置:   article > 正文

Hive3.1.3详细安装配置教程及安装时问题解决_hive3 安装部署

hive3 安装部署

目录

0.前置

安装mysql-server

下载wget命令sudo apt-get install wget

cd到你想要安装hive的文件夹,例如我这里是cd /usr/local

下载安装hive3.1.3

下载完成后看到如下界面:​编辑解压hive

将文件夹名改为hive

修改文件权限(注意这里的hadoop是当前用户名,格式应为用户名:用户名)

配置环境变量

在该文件最前面一行添加如下内容:

运行命令使其生效:

修改/usr/local/hive/conf下的hive-site.xml,将hive-default.xml.template重命名为hive-default.xml

使用vim编辑器新建一个配置文件hive-site.xml

下载mysql-connector-java-5.1.40到/usr/local

解压

将mysql-connector-java-5.1.40-bin.jar拷贝到/usr/local/hive/lib目录下

启动并登陆MySQL Shell

新建Hive数据库

配置MySQL允许Hive接入(mysql用户hive,密码hive)

升级元数据

启动Hive,注意启动Hive之前需要先启动集群


0.前置

安装mysql-server
sudo apt-get install mysql-server

输入Y,中途会要求输入数据库账户密码等,如果没有要求设置数据库密码,请执行以下命令

  1. service mysql start
  2. mysql -u root -p

登录mysql后,修改密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

刷新权限

FLUSH PRIVILEGES;

重新登陆

exit;

  1. 下载wget命令sudo apt-get install wget

    sudo apt-get install wget
  2. cd到你想要安装hive的文件夹,例如我这里是cd /usr/local

    cd /usr/local
  3. 下载安装hive3.1.3

    sudo wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
    下载完成后看到如下界面解压hive
    sudo tar -zxvf apache-hive-3.1.3-bin.tar.gz
    将文件夹名改为hive
    sudo mv apache-hive-3.1.3-bin hive
    修改文件权限(注意这里的hadoop是当前用户名,格式应为用户名:用户名)
    sudo chown -R hadoop:hadoop hive
  4. 配置环境变量

    vim ~/.bashrc
    在该文件最前面一行添加如下内容:
    1. export HIVE_HOME=/usr/local/hive #hive文件夹的路径
    2. export PATH=$PATH:$HIVE_HOME/bin
    3. export HADOOP_HOME=/usr/local/hadoop #hadoop文件夹的路径
    运行命令使其生效:
    source ~/.bashrc
  5. 修改/usr/local/hive/conf下的hive-site.xml,将hive-default.xml.template重命名为hive-default.xml

    1. cd /usr/local/hive/conf #进入/hive/conf文件夹
    2. mv hive-default.xml.template hive-default.xml
    使用vim编辑器新建一个配置文件hive-site.xml
    vim hive-site.xml

    在hive-site.xml中添加如下配置信息:

    hive三种配置方式区别

    Hive中metastore(元数据存储)的三种方式

    a)内嵌Derby方式

    b)Local方式

    c)Remote方式

    1.本地模式derby

    这种方式是最简单的存储方式,只需要在hive-site.xml做如下配置便可

    1. <?xml version="1.0"?>  
    2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
    3.   
    4. <configuration>  
    5.   
    6. <property>  
    7.   <name>javax.jdo.option.ConnectionURL</name>  
    8.   <value>jdbc:derby:;databaseName=metastore_db;create=true</value>  
    9. </property>  
    10.    
    11. <property>  
    12.   <name>javax.jdo.option.ConnectionDriverName</name>  
    13.   <value>org.apache.derby.jdbc.EmbeddedDriver</value>  
    14. </property>  
    15.    
    16. <property>  
    17.   <name>hive.metastore.local</name>  
    18.   <value>true</value>  
    19. </property>  
    20.    
    21. <property>  
    22.   <name>hive.metastore.warehouse.dir</name>  
    23.   <value>/usr/local/hive/warehouse</value>  
    24. </property>  
    25.    
    26.   
    27. </configuration>  


    注:使用derby存储方式时,运行hive会在当前目录生成一个derby文件和一个metastore_db目录。这种存储方式的弊端是在同一个目录下同时只能有一个hive客户端能使用数据库,否则会提示如下错误

    [html] view plaincopyprint?

    hive> show tables;  

    FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Failed to start database 'metastore_db', see the next exception for details.  

    NestedThrowables:  

    java.sql.SQLException: Failed to start database 'metastore_db', see the next exception for details.  

    FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask  

    hive> show tables;

    FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Failed to start database 'metastore_db', see the next exception for details.

    NestedThrowables:

    java.sql.SQLException: Failed to start database 'metastore_db', see the next exception for details.

    FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

    2.单用户模式mysql

    这种存储方式需要在本地运行一个mysql服务器,并作如下配置(下面两种使用mysql的方式,需要将mysql的jar包拷贝到$HIVE_HOME/lib目录下(前面已安装mysql)。

    1. <?xml version="1.0"?>  
    2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
    3.   
    4. <configuration>  
    5. <property>  
    6.   <name>hive.metastore.warehouse.dir</name>  
    7.   <value>/usr/local/hive_remote/warehouse</value>  
    8. </property>  
    9.    
    10. <property>  
    11.   <name>hive.metastore.local</name>  
    12.   <value>true</value>  
    13. </property>  
    14.    
    15. <property>  
    16.   <name>javax.jdo.option.ConnectionURL</name>  
    17.   <value>jdbc:mysql://localhost/hive_remote?createDatabaseIfNotExist=true</value>  
    18. </property>  
    19.    
    20. <property>  
    21.   <name>javax.jdo.option.ConnectionDriverName</name>  
    22.   <value>com.mysql.jdbc.Driver</value>  
    23. </property>  
    24.    
    25. <property>  
    26.   <name>javax.jdo.option.ConnectionUserName</name>  
    27.   <value>hive</value>  
    28. </property>  
    29.    
    30. <property>  
    31.   <name>javax.jdo.option.ConnectionPassword</name>  
    32.   <value>password</value>  
    33. </property>  
    34. </configuration>  

    [ERROR] Terminal initialization failed; falling back to unsupported

    java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

    at jline.TerminalFactory.create(TerminalFactory.java:101)

    错误的原因: Hadoop jline版本和hive的jline不一致

    3.多用户模式
    1.Remote一体

    这种存储方式需要在远端服务器运行一个mysql服务器,并且需要在Hive服务器启动meta服务。

    这里用mysql的测试服务器,ip位192.168.1.214,新建hive_remote数据库,字符集位latine1

    1. <?xml version="1.0"?>  
    2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
    3.    
    4. <configuration>  
    5.   
    6. <property>  
    7.   <name>hive.metastore.warehouse.dir</name>  
    8.   <value>/usr/local/hive/warehouse</value>  
    9. </property>  
    10.    
    11. <property>  
    12.   <name>javax.jdo.option.ConnectionURL</name>  
    13.   <value>jdbc:mysql://192.168.57.6:3306/hive?createDatabaseIfNotExist=true</value>  
    14. </property>  
    15.    
    16. <property>  
    17.   <name>javax.jdo.option.ConnectionDriverName</name>  
    18.   <value>com.mysql.jdbc.Driver</value>  
    19. </property>  
    20.    
    21. <property>  
    22.   <name>javax.jdo.option.ConnectionUserName</name>  
    23.   <value>hive</value>  
    24. </property>  
    25.    
    26. <property>  
    27.   <name>javax.jdo.option.ConnectionPassword</name>  
    28.   <value>password</value>  
    29. </property>  
    30.   
    31. <property>  
    32.   <name>hive.metastore.local</name>  
    33.   <value>false</value>  
    34. </property>  
    35.   
    36. <property>  
    37.   <name>hive.metastore.uris</name>  
    38.   <value>thrift://192.168.1.188:9083</value>  
    39. </property>  
    40.   
    41. </configuration>

      

    注:这里把hive的服务端和客户端都放在同一台服务器上了。服务端和客户端可以拆开,

    2.Remote分开

    将hive-site.xml配置文件拆为如下两部分

             1)、服务端配置文件

    1. <?xml version="1.0"?>  
    2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
    3.    
    4. <configuration>  
    5.   
    6. <property>  
    7.   <name>hive.metastore.warehouse.dir</name>  
    8.   <value>/usr/local/hive/warehouse</value>  
    9. </property>  
    10.    
    11. <property>  
    12.   <name>javax.jdo.option.ConnectionURL</name>  
    13.   <value>jdbc:mysql://192.168.57.6:3306/hive?createDatabaseIfNotExist=true</value>  
    14. </property>  
    15.    
    16. <property>  
    17.   <name>javax.jdo.option.ConnectionDriverName</name>  
    18.   <value>com.mysql.jdbc.Driver</value>  
    19. </property>  
    20.    
    21. <property>  
    22.   <name>javax.jdo.option.ConnectionUserName</name>  
    23.   <value>root</value>  
    24. </property>  
    25.    
    26. <property>  
    27.   <name>javax.jdo.option.ConnectionPassword</name>  
    28.   <value>123456</value>  
    29. </property>  
    30. </configuration>  

             2)、客户端配置文件

    1. <?xml version="1.0"?>  
    2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
    3.    
    4. <configuration>  
    5.   
    6. <property>  
    7.   <name>hive.metastore.warehouse.dir</name>  
    8.   <value>/usr/local/hive/warehouse</value>  
    9. </property>  
    10.    
    11. <property>  
    12.   <name>hive.metastore.local</name>  
    13.   <value>false</value>  
    14. </property>  
    15.   
    16. <property>  
    17.   <name>hive.metastore.uris</name>  
    18.   <value>thrift://192.168.57.5:9083</value>  
    19. </property>  
    20.   
    21. </configuration>  

    客户端启动的时候要注意:

    [ERROR] Terminal initialization failed; falling back to unsupported

    java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

    at jline.TerminalFactory.create(TerminalFactory.java:101)

    错误的原因: Hadoop jline版本和hive的jline不一致

  6. 下载mysql-connector-java-5.1.40到/usr/local

    1. cd /usr/local
    2. sudo wget https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-5.1.40.tar.gz
    解压
    sudo tar -zxvf mysql-connector-java-5.1.40.tar.gz
    将mysql-connector-java-5.1.40-bin.jar拷贝到/usr/local/hive/lib目录下
    cp /usr/local/mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar  /usr/local/hive/lib

  7. 启动并登陆MySQL Shell

    1. service mysql start
    2. mysql -u root -p
  8. 新建Hive数据库

    create database hive;
  9. 配置MySQL允许Hive接入(mysql用户hive,密码hive)

    1. grant all on *.* to hive@localhost identified by 'hive';
    2. flush privileges;
    3. exit;
  10. 升级元数据

    1. cd /usr/local/hive
    2. ./bin/schematool -initSchema -dbType mysql

    可能会出现错误 Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V原因是hive/lib中的guava包版本与/hadoop/share/hadoop/common/lib中的guava包版本不匹配,将hadoop中的guava包替换到hive中,执行以下命令 

    1. cp /usr/local/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /usr/local/hive/lib
    2. rm -rf /usr/local/hive/lib/guava-19.0.jar

    重新执行命令升级元数据

    1. cd /usr/local/hive
    2. ./bin/schematool -initSchema -dbType mysql

    输出一段文字的最后出现如下字样即升级完成

  11. 启动Hive,注意启动Hive之前需要先启动集群

    hive

    如果有过多警告信息,如图可在hive/conf下新建log4j.properties日志的配置文件

    1. cd /usr/local/hive/conf
    2. vim /usr/local/hive/conf/log4j.properties

    添加以下内容

    1. log4j.rootLogger=ERROR, CA
    2. log4j.appender.CA=org.apache.log4j.ConsoleAppender
    3. log4j.appender.CA.layout=org.apache.log4j.PatternLayout
    4. log4j.appender.CA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

     重启hive即可

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/687713
推荐阅读
相关标签
  

闽ICP备14008679号