点击蓝色“有关SQL”关注我哟
加个“星标”,天天与10000人一起快乐成长
图 | 榖依米
貌似名导们,都有三部曲。
朴赞郁有复仇三部曲,彼得杰克逊有霍比特三部曲。是时候《有关SQL》也该有个大数据三部曲了。
继上部《我的 Hadoop 之旅》,今天又完成这部《我的 Hive 之旅》.
同样,这部也属于收藏夹吃灰系列。看在写了辣么多字儿,险些把PP坐出ZC的份儿上,各位看官来个三连呗!
话不多说,上主题:
前奏环境:
可用的 Hadoop 集群
数据库环境,如 MySQL
Hive 软件
环境变量
Hive 软件
Hive 有 3 个大版本,Hive 1.x.y, Hive 2.x.y, 和Hive 3.x.y. 与本次实验相对应的是 Hive 3.1.2.
下载地址:https://mirrors.bfsu.edu.cn/apache/hive/hive-3.1.2/

带 bin 的是安装文件,而带 src 的是源码。
Hive 3.1.2 会支持 Hadoop 3.2.2 吗,JDK8 够用吗,MySQL 5.6 还能不能再战?等等这些问题,都可以看Hive官方文档解决!
Hive 官网:https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-InstallationandConfiguration
简单说明:
Java 建议 JDK 7 以上
Hadoop 建议 3 以上
Linux/Windows 首选,Mac 作为开发
环境变量
之前安装了 Hadoop 3.2.2,直接拿来用。不同是,这次要增加一个 /opt/Hive 文件夹
mkdir /opt/Hive
chown -R hadoopadmin /opt/Hive
设置环境变量:
HIVE_HOME=/opt/Hive/Hive3.1.2
PATH=$PATH:$HIVE_HOME/bin
export HIVE_HOME
export PATH
MySQL 选择
由于是 Hive 3 版本系列,作为首选元数据库的 MySQL 版本,需重新选择。合适的版本参考这里:https://cwiki.apache.org/confluence/display/Hive/AdminManual+Metastore+3.0+Administration
最低版本是 MySQL 5.6.17. 其他数据库也可用来作为元数据库存储
RDBMS | Minimum Version | javax.jdo.option.ConnectionURL | javax.jdo.option.ConnectionDriverName |
---|---|---|---|
MariaDB | 5.5 | jdbc:mysql://:/ | org.mariadb.jdbc.Driver |
MS SQL Server | 2008 R2 | jdbc:sqlserver://:;DatabaseName= | com.microsoft.sqlserver.jdbc.SQLServerDriver |
MySQL | 5.6.17 | jdbc:mysql://:/ | com.mysql.jdbc.Driver |
Oracle | 11g | jdbc:oracle:thin:@//:/xe | oracle.jdbc.OracleDriver |
Postgres | 9.1.13 | jdbc:postgresql://:/ | org.postgresql.Driver |
MySQL 的安装,就省去了。有无数文章提到怎么样安装!
比如我的这篇:2019 MySQL8 24小时快速入门(1)
本实验中,选用 MySQL8. 用户名:root/MySQLAdmin, 密码都是:LuckyNumber234.
Hive 配置
Hadoop 安装配置
Hadoop 的安装位置十分重要。根据这个位置,可以拿到 HDFS,YARN 的配置信息,进而得到 namenode 和 resource manager 的访问地址。
所以,在环境变量文件中,一定要设置正确 HADOOP_HOME.
另外,在 $HIVE_HOME/bin 下有个文件, hive-config.sh.
--hive.config.sh
# Allow alternate conf dir location.
HIVE_CONF_DIR="${HIVE_CONF_DIR:-$HIVE_HOME/conf}"
export HADOOP_HOME=/opt/Hadoop/hadoop-3.2.2
export HIVE_CONF_DIR=$HIVE_CONF_DIR
export HIVE_AUX_JARS_PATH=$HIVE_AUX_JARS_PATH
在这里也需指定 HADOOP_HOME 的安装路径
Hive 配置文件
Hive 的全部数据,都存储在 HDFS 上,所以要给 Hive 一个 HDFS 上的目录:
HDFS DFS -mkdir -p /user/hive/warehouse
HDFS DFS -chmod g+w /user/hive/warehouse
在 $HIVE_HOME/conf 下有个文件,hive-default.xml.template. 这是修改 Hive 配置的最重要参数文件,主要是配置 HDFS 上存放 Hive 数据的目录,以及 Hive MetaStore 的数据库访问信息
-- hive-site.xml
<property>
<name>system:java.io.tmpdir</name>
<value>/tmp/hive/java</value>
</property>
<property>
<name>system:user.name</name>
<value>${user.name}</value>
</property>
-- 以上两个属性,非常重要!底下会讲它
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.31.10/metastore?createDatabaseIfNotExist=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.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>MySQLAdmin</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>LuckyNumber234.</value>
<description>password to use against metastore database</description>
</property>
--如果修改了默认hdfs路径
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
初始化 metastore
各种配置文件完工后,需要初始化 Hive 的元数据库,即 metastore.
schematool -ini