念念不忘
必会回响

在Windows11上使用WSL安装Hive

接上一篇《在Windows11上使用WSL安装Hadoop伪分布式》本篇记录下安装Hive的过程。

一、环境

  • Hadoop服务
  • JDK1.8
  • Hive3.1.2
  • MySQL8.0

二、 下载Hive

wget https://dlcdn.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

三、部署Hive

1. 解压

创建一个hive的文件夹

mkdir ~/hive

tar -xvzf apache-hive-3.1.2-bin.tar.gz -C ~/hive

2. 配置环境变量

vim ~/.zshrc

修改为如下内容:

export HADOOP_HOME=~/hadoop/hadoop-3.3.2
export HIVE_HOME=/home/charles/hive/apache-hive-3.1.2-bin
export PATH=$PATH:$HADOOP_HOME/bin:$HIVE_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

使环境变量生效

source ~/.zshrc

3. 在HDFS中创建文件夹

hdfs dfs -mkdir /tmp 
hdfs dfs -mkdir -p /user/hive/warehouse 
hdfs dfs -chmod g+w /tmp 
hdfs dfs -chmod g+w /user/hive/warehouse

或者,直接运行以下命令:

$HIVE_HOME/bin/init-hive-dfs.sh

4. 在mysql中创建数据库

create database hive

然后下载mysql驱动到hive的lib目录

cd $HIVE_HOME/lib
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.22/mysql-connector-java-8.0.22.jar

5. 配置Hive

拷贝一份模板文件,改名为hive-site.xml

cp $HIVE_HOME/conf/hive-default.xml.template $HIVE_HOME/conf/hive-site.xml

修改如下几个属性信息:

javax.jdo.option.ConnectionDriverName: com.mysql.jdbc.Driver 或 com.mysql.cj.jdbc.Driver 取决于 MySQL JDBC 驱动程序的版本。
javax.jdo.option.ConnectionURL: jdbc:mysql://localhost:3306/hive
javax.jdo.option.ConnectionUserName: root
javax.jdo.option.ConnectionPassword: 123456
hive.metastore.uris: thrift://127.0.0.1:9083
Hive.metastore.db.type: mysql
hive.metastore.event.db.notification.api.auth: false

新增一个属性

<property>
    <name>system:java.io.tmpdir</name>
    <value>/usr/local/hive/tmp</value>
</property>

创建该目录

sudo mkdir -p /usr/local/hive/tmp

# charles 是我自己的用户名和组,这里改成你自己的
sudo chown charles:charles -R /usr/local/hive

不配置这个可能会出现如下错误:

Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
        at org.apache.hadoop.fs.Path.initialize(Path.java:263)
        at org.apache.hadoop.fs.Path.<init>(Path.java:221)
        at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:710)
        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:627)
        at org.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java:591)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:747)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:683)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:323)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:236)
Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
        at java.net.URI.checkPath(URI.java:1823)
        at java.net.URI.<init>(URI.java:745)
        at org.apache.hadoop.fs.Path.initialize(Path.java:260)
        ... 12 more

其余的配置项可以删除,也可以保留,无所谓。

6. 初始化Hive的元数据结构

$HIVE_HOME/bin/schematool -dbType mysql -initSchema

7. 配置身份认证

修改hadoop的core-site.xml文件,新增如下内容

<property>
      <name>hadoop.proxyuser.charles.hosts</name>
      <value>*</value>
</property>
<property>
      <name>hadoop.proxyuser.charles.groups</name>
      <value>*</value>
</property>

注意:hadoop.proxyuser.用户名。

7. 启动hive服务

如果只是使用终端,只需要启动metastore服务即可

$HIVE_HOME/bin/hive --service metastore &

如果需要外部程序通过JDBC访问,还需要启动hiveserver2

$HIVE_HOME/bin/hive --service metastore &

启动完成后,可以通过jps查看,有两个runjar,过一会儿打开页面也可以看到

赞(6) 打赏
未经允许不得转载:堆上小栈 » 在Windows11上使用WSL安装Hive

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册