下载链接:https://downloads.apache.org/hive/
1. 环境要求
- jdk,安装目录:/usr/local
- hadoop,安装目录:/usr/local
2. Hive安装模式
- 内嵌模式
使用Hive自带默认元数据库derby来进行存储,一般用于测试。
- 优点:使用简单,不需要配置
- 缺点:只支持单session
- 本地模式
使用mysql替换derby进行元数据的存储,hive的相关进程都是在同一台机器上,即本地模式。mysql因为是 独立的进程,所以mysql可以和hive在同一机器上,也可以在其他机器上。
通常使用关系型数据库进行元数据存储(mysql、oracle等执行带jdbc驱动的数据库)
- 优点:支持多session
需要安装MySQL数据库
- 远程模式
将hive中的相关进程比如hiveserver2或者metastore这样的进程单独开启,使用客户端工具或者命令行进行远程连接这样的服务,即远程模式。客户端可以在任何机器上,只要连接到这个server,就可以进行操作。客户端可以不需要密码。
3. 安装步骤
3.1 内嵌模式
- 解压并配置环境变量
解压
tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/local
cd /usr/local更名
mv apache-hive-2.1.1-bin/ hive
配置环境变量
vi /etc/profile
export HIVE_HOME=/usr/local/hive
export PATH=$HIVE_HOME/bin:$PATH让profile生效
source /etc/profile
- 配置hive-env.sh
进入HIVE_HOME/conf中配置hive-env.sh
export HIVE_CONF_DIR=/usr/local/hive/conf
export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export HIVE_AUX_JARS_PATH=/usr/local/hive/lib
如果没有hive-env.sh,复制hive.env.sh.template
cp hive.env.sh.template hive-env.sh
- 配置hive-site.xml
把hive-site.xml 中所有包含 ${system:Java.io.tmpdir}替换成/usr/local/hive/iotmp. 如果系统默认没有指定系统用户名,那么要把配置${system:user.name}替换成当前用户名root
如果没有,将conf/hive-default.xml.template拷贝过来使用
cp hive-default.xml.template hive-site.xml
- 启动hadoop
start-dfs.sh
start-yarn.sh
- 初始化Hive
进入HIVE_HOME/bin
schematool –initSchema –dbType derby
- 启动Hive
hive
3.2 本地模式
- 安装MySQL数据库(进行远程授权)
- 解压配置环境变量(Hive)
- 配置hive-env.sh
- 配置hive-site.xml
2,3,4和内嵌模式一样
找到下面四个属性修改对应的值
<!--配置mysql的连接字符串-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<!--配置mysql的连接驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<!--配置登录mysql的用户-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<!--配置登录mysql的密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123123</value>
<description>password to use against metastore database</description>
</property>
- 将mysql的驱动包 mysql-connector-java-5.1.28-bin.jar 上传到$HIVE_HOME/lib下(注意:驱动是jar结尾,不是tar结尾)
- 执行执行先要初始化数据库
schematool -initSchema -dbType mysql
- 启动Hive
3.3远程模式
- 修改hive-site.xml
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://laogu03:3306/hive?createDatabaseIfNotExist=true&characterEncoding=latin1</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>12345678</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/hive/iotmp/root</value>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/usr/local/hive/iotmp/root/operation_logs</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/local/hive/iotmp/root</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/hive/iotmp/${hive.session.id}_resources</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value/>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>false</value>
</property>
<property>
<name>hive.exec.mode.local.auto</name>
<value>false</value>
</property>
- 修改hadoop中的core-site.xml
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>