Hadoop@在Ubuntu系统安装配置Hive2
笔者:unirithe
日期:11/08/2021
参考资料:
运行环境
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的教程已完成.

浙公网安备 33010602011771号