Hadoop@在Ubuntu系统安装配置Hive2

笔者:unirithe

日期:11/08/2021

参考资料:

Hive2.x.x官方文档

运行环境

Ubuntu 20.04,Hadoop3.1.3、Hive2.3.9

安装Hive2

以 2.3.9 版本为例,直接使用清华大学镜像站下载速度稍微给力些

sudo wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz

sudo tar -zxvf apache-hive-2.3.9-bin.tar.gz -C ./

sudo mv apache-hive-2.3.9-bin hive

赋予权限

sudo chown -R 用户名 hive

配置Hive2

首先配置环境变量

vim ~/.bashrc

添加内容

export HIVE_HOME=你的HIVE文件目录
export PATH=$PATH:$HIVE_HOME/bin:

使其生效

source ~/.bashrc

配置Hive连接的Hadoop路径 conf/hive-env.sh

在首行加入:

export HADOOP_HOME=Hadoop目录

配置文件为hive文件目录下的conf/hive-site.xml

cd conf
sudo cp hive-default.xml.template hive-site.xml

配置hive-site.xml

配置 hive-site.xml

查找对应属性

设置JDBC的连接URL

:/ConnectionURL

查找的结果为:

  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
    <description>
      JDBC connect string for a JDBC metastore.
      To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
      For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
    </description>
  </property>

修改后,内容如下:

  <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>

设置JDBC的DriverName

:/ConnectionDriverName

修改前:

 <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>org.apache.derby.jdbc.EmbeddedDriver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>

只需修改value属性, 修改后:

<value>com.mysql.jdbc.Driver</value>

设置JDBC的用户名和密码

设置Mysql连接的账号和密码

:/ConnectionUserName

修改 value的属性为mysql连接的root,修改后:

<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    <description>Username to use against metastore database</description>
  </property>
:/ConnectionPassword

修改value属性的值为自己mysql的密码

安装 JDBC驱动jar包

以mysql8.0.27版本为例,其他版本的jar包可在这儿>>传送门<<下载

cd hive/lib
sudo wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.27/mysql-connector-java-8.0.27.jar

启动测试

cd hadoop/sbin
./start-all.sh

hive

两个可能异常及处理

jar包版本冲突

异常一:

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

出现原因: hive 的 guava包版本和 hadoop的guava版本不一致

查询两个文件目录下的 guava*开头的jar包版本

cd hadoop/share/hadoop/common/lib
find ./ -name guava*.jar

Hadoop3.1.3版本的结果为:./guava-27.0-jre.jar

cd hive/lib
find ./ -name guava*.jar

Hive 2.3.9 版本的结果为 ./guava-14.0.1.jar

则将高版本移动到低版本中

sudo mv hadoop/share/hadoop/coomon/lib/guava-27.0-jre.jar hive/lib

sudo rm -rf hive/lib/guava-14.0.1.java

未配置默认的临时目录

异常二:

Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: \({system:java.io.tmpdir%7D/\)%7Bsystem:user.name%7D

若之前未配置system:java.io.tmpdir ,运行时自然找不到对应的位置。

现在将该默认目录直接改成具体的目录 /usr/local/hive/log

修改./conf/hive-site.xml 配置文件,将${system:java.io.tmpdir} 替换为hive的临时目录

使用vim编辑器的全局替换

:%s/{system:java.io.tmpdir}/$HIVE_HOME\/iotmp/g

至此,安装配置Hive以及连接Hadoop、Mysql的教程已完成.

posted @ 2021-11-09 07:07  Unirithe  阅读(224)  评论(0)    收藏  举报