所有操作默认非root用户,本文中用 lz 用户。

版本:

软件 版本
ubuntu 18.04
openjdk 1.8.0_191
hadoop 2.7.7
spark 2.3.3_without
hbase 1.4.9
kafka 2.11-2.1.1
flink 1.6.4-scala_2.11
hive 2.3.4
(docker) 18.09.5

安装hive:

$ sudo tar -zxvf ~/下载/apache-hive-2.3.4-bin.tar.gz -C /usr/local  # 解压至/usr/local
$ cd /usr/local
$ sudo mv ./apache-hive-2.3.4-bin ./hive  # 重命名为hive
$ sudo chown -R lz ./hive  # 修改hive文件夹所有者为hive用户 避免后续操作权限问题

tar命令小知识:

-z  表示压缩包被gzip压缩过,先用gzip解压
-x  将文件从tar包中提取出来
-v  显示详细信息
-f  后跟要解压的文件路径
-C  后跟解压后的文件(夹)存放路径

下载jdbc包并复制至hive安装目录下的lib目录:

$ cp ~/下载/mysql-connector-java-5.1.47.jar /usr/local/hive/lib

配置环境变量:

$ vim ~/.bashrc

在文件开头添加:

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

使之生效:

$ source ~/.bashrc

因为推荐使用Mysql作为hive的元数据库(而非默认的derby),所以需要安装Mysql。

安装Mysql:

$ sudo apt-get update  #更新软件源
$ sudo apt-get install mysql-server  #安装mysql

启动Mysql服务:

$ service mysql start

进入Mysql shell 界面:

$ mysql -u root -p

若出现Access denied可参考Mysql出现Access denied for user root@localhost的解决办法

配置mysql使之允许hive接入:

mysql> grant all on *.* to hive@localhost identified by 'hive';  # 授权数据库所有表的所有权限给hive用户,@前的hive指hive用户,by后面的'hive'指hive-site.xml中配置的jdbc连接密码
mysql> flush privileges;  # 刷新mysql系统权限关系表

退出Mysql:

mysql> exit;

配置hive:

$ cd /usr/local/hive/conf
$ vim hive-site.xml

添加如下配置项:

<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/myhive?createDatabaseIfNotExist=true&amp;useSSL=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>hive</value>
    <description>username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>
</configuration>

配置项说明:

javax.jdo.option.ConnectionURL是连接mysql中hive元数据库的URL。如果mysql和hive在同一个节点,推荐使用localhost而非主机名,避免某些时候通信出错。mysql://是协议,localhost是主机名,3306是端口号myhive是hive的元数据库,?createDatabaseIfNotExist=true意为若元数据库不存在则创建,设置&amp;useSSL=true是因为高版本jdbc连接时需要显示指定是否使用SSL,否则会有警告。

javax.jdo.option.ConnectionDriverName是配置Mysql驱动。

javax.jdo.option.ConnectionUserName为连接Mysql的用户名。

javax.jdo.option.ConnectionPassword为连接Mysql的密码,此处和前面的grant all on *.* to hive@localhost identified by 'hive';中的'hive'语句对应。

初始化元数据库:

$ cd /usr/local/hive/bin
$ ./schematool -dbType mysql -initSchema

启动hive-on-MR:

$ hive

显示:

hive> 

退出hive:

hive> exit;