如何搭建 Hive 环境

发布于: 2020 年 07 月 12 日
如何搭建Hive 环境

Hive 是一个 Hadoop 平台的上的数据仓库工具,可以将结构化的的数据映射成一张表,并提供了类似 SQL 的查询的功能。

HIve 没有集群的概念,只需要将 Hive 部署在 Hadoop 平台上就可以使用。

本文来介绍一种搭建 Hive 环境的方式。

搭建 Hive 所需的软件和环境:

  • 搭建了 Hadoop 集群的环境

  • Hive-1.2.2

搭建 Hadoop 集群可以参照我之前的文章,本文继续在之前的环境中进行,具体的机器名称及 IP 以自己的实际环境为准。

软件安装

将 Hive 安装包解压到目标目录下:

$ tar -zxvf apache-hive-1.2.2-bin.tar.gz -C /opt/module/

然后将 hive 目录重命名:

$ mv apache-hive-1.2.2-bin/ hive-1.2.2

软件配置

需要配置 hive 的环境参数:

$ cd hive-1.2.2
$ cp conf/hive-env.sh.template conf/hive-env.sh

配置 hadoop 的位置:

$ vi conf/hive-env.sh
export HADOOP_HOME=/opt/module/hadoop-2.9.2
export HIVE_CONF_DIR=/opt/module/hive/conf

在启动 hive 之前,需要先启动 hdfs 和 yarn:

$ sbin/start-dfs.sh
$ sbin/start-yarn.sh

在 hdfs 上创建 hive 的根目录,并赋予权限:

$ bin/hadoop fs -mkdir /tmp
$ bin/hadoop fs -mkdir -p /user/hive/warehouse
$ bin/hadoop fs -chmod g+w /tmp
$ bin/hadoop fs -chmod g+w /user/hive/warehouse

然后就可以启动 hive了:

$ bin/hive

hive 到这里就可用了,但是 hive 在开始使用之后,会将创建的表的元数据存储在自带的本地数据库中,这样不安全,所以一般都会将这些数据单独存储到 MySQL中。

metastore 配置

在这里我介绍一种安装 MySQL 的方式,但这不是唯一的方式,可以根据自己的情况自行选择安装方式。

安装 mysql

$ wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
$ yum -y install mysql57-community-release-el7-10.noarch.rpm
$ yum -y install mysql-community-server

mysql 设置

$ systemctl start mysqld.service

获取 MySQL 密码

$ grep "password" /var/log/mysqld.log
2020-07-08T14:43:58.666069Z 1 [Note] A temporary password is generated for root@localhost: SySy,a<j5cBw

然后就可以登录 MySQL:

$ mysql -uroot -p"SySy,a<j5cBw"

修改密码,后续就可以使用 root进行登录了:

$ ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

Hive 连接 MySQL

Hive 连接MySQL 需要添加一个 mysql 的 connector,拷贝到 hive 的 lib 目录下:

$ cp mysql-connector-java-5.1.49-bin.jar /opt/module/hive-1.2.2/lib/

然后创建一个 hive-site.xml的配置文件:

$ touch conf/hive-site.xml
$ vi conf/hive-site.xml

在配置文件中填充以下内容,就是连接 MySQL 所需的配置:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/metastore?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>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
</configuration>

然后重新启动 hive:

$ bin/hive

正常启动后可以发现 mysql 中多了一个 metastore 的数据库,这个数据库存储着 hive 的中数据表的元数据。

文 / Rayjun

本文首发于公众号 Rayjun

一起聊聊

发布于: 2020 年 07 月 12 日 阅读数: 9
用户头像

Rayjun

关注

程序员,王小波死忠粉 2017.10.17 加入

非著名程序员,还在学习如何写代码,公众号同名

评论

发布
暂无评论
如何搭建Hive 环境