1. 介绍

安装hive的前提是你已经成功安装hadoop。如果不会可以查看我的文章hadoop2.7.2+spark1.6.2环境搭建教程

2. 配置部署

注意: hive只要在namenode或者备用的namenode上配置运行即可,其他datanode无需配置server。但是可以启动client

2.1 配置环境变量

修改/etc/profile

# hive settingsexport HIVE_HOME=/root/Downloads/apache-hive-2.1.0-binexport PATH=$HIVE_HOME/bin:$PATH

改完生效一下,即source /etc/profile

2.2 在HDFS上创建相关目录

  $ $HADOOP_HOME/bin/hadoop fs -mkdir       /tmp  $ $HADOOP_HOME/bin/hadoop fs -mkdir       /hive  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /hive

2.3 修改hive-site.xml

在$HIVE_HOME/conf下执行以下操作:

cp hive-default.xml.template hive-site.xml

修改配置文件中如下选项:

<!-- 设置 hive仓库的HDFS上的位置 -->  <property>    <name>hive.metastore.warehouse.dir</name>    <value>/hive</value>    <description>location of default database for the warehouse</description>  </property>  <!-- 设置元数据存放的数据库地址、名字 -->  <property>    <name>javax.jdo.option.ConnectionURL</name>    <value>jdbc:mysql://10.45.10.31:3306/metastore_db?useSSL=false</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/dbName?ssl=true for postgres database.    </description>  </property><!--Driver class名字-->  <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>  <!--io相关的临时文件存放位置 -->  <property>    <name>hive.exec.local.scratchdir</name>    <value>/root/Downloads/apache-hive-2.1.0-bin/hive_temps</value>    <description>Local scratch space for Hive jobs</description>  </property>  <!--资源临时文件存放位置-->    <property>    <name>hive.downloaded.resources.dir</name>    <value>/root/Downloads/apache-hive-2.1.0-bin/hive_temps</value>    <description>Temporary local directory for added resources in the remote file system.</description>  </property>

2.4 修改 hive-log4j2.properties和hive-exec-log4j2.properties

这两个配置文件都有template,拷贝出来保持默认即可

cp hive-log4j2.properties.template hive-log4j2.propertiescp hive-exec-log4j2.properties.template hive-exec-log4j2.properties

2.5 mysql中创建相关内容

因为我们将hive元数据存放在mysql,因此在mysql先新建相关用户和数据库

create database hive_metadata;grant all on metastore_db.* to 'hive'@'%' identified by 'hive';grant all on metastore_db.* to 'hive'@'localhost' identified by 'hive';ALTER DATABASE hive_metadata CHARACTER SET latin1; flush privileges;­

2.6 使用schematool初始化

schematool 配置了元数据存放的位置,这里我们将元数据存储在mysql。

为了保证正确初始化,我们还需要把mysql的connector放到hive的lib目录下。

先到mysql官方下载java平台的mysql connector放到$HIVE_HOME/lib下面

执行如下命令:

$HIVE_HOME/bin/schematool -dbType mysql -initSchema

运行后在mysql数据库中查看:

3. 启动hive

HiveServer2是HiveServer改进版本,它提供给新的ThriftAPI来处理JDBC或者ODBC客户端,进行Kerberos身份验证,多个客户端并发,HS2还提供了新的CLI:BeeLine,是Hive 0.11引入的新的交互式CLI,基于SQLLine,可以作为Hive JDBC Client 端访问HievServer2,启动一个beeline就是维护了一个session.

执行如下命令:

$ $HIVE_HOME/bin/hiveserver2

访问可以使用beeline这种客户端。我们这里直接运行bin/hive来进入客户端