安装hive前 请安装hadoop 并保证HDFS集群和YARN集群正常运行
安装
解压apache-hive-1.2.2-bin.tar.gz
tar zxvf apache-hive-1.2.2-bin.tar.gz -C /opt/softwares
创建软链接
ln -sf /opt/softwares/hive-1.2.2-bin /opt/links/hive
配置环境变量
vi ~/.bashrc
####__HIVE_CONF__####
export HIVE_HOME=/opt/links/hive
export PATH=$PATH:$HIVE_HOME/bin
执行命令使配置生效
source /etc/profile
测试是否安装成功
hive
部署模式
Hive部署模式分为:
- 内嵌模式:使用自带的derby数据库管理元数据
- 本地模式:metastore服务部署在本地
- 远程模式:使用独立服务器上的metastore服务
内嵌模式
- 使用内嵌的Derby数据库来存储元数据
- 数据库和Metastore服务都内嵌在了Hive Server进程中
- 运行时会在部署目录生成一个derby文件和一个metastore_db目录
- 一次只能连接一个客户端连接
优点: 配置简单 解压hive安装,启动就行
缺点: 各自为政,无法共享元数据
本地模式
- 使用MySQL数据库存储元数据
- metastore服务和Hive服务运行在同一个进程当中
- 可以多个Hive client一起使用,并且可以共享元数据
- mysql的连接信息明文存储在客户端配置,不便于数据库连接信息保密和以后对元数据库进行更改
缺点: 该模式下,每当使用bin/hive或者hiveServer2的时候,都会在内部启动一个metastore嵌入式服务。因为每个客户端都自己发起连接,如果客户端过多,就会对mysql造成较大的压力,资源比较浪费。
远程模式
- 使用MySQL数据库存储元数据
- metastore服务从Hive服务里剥离出来部署,不在同一个进程里
- 支持多个客户端同时连接
- 客户端不需要知道MySQL的用户名和密码,只需要连接metastore服务
配置
以下为本地模式的配置方法,远程模式仅需在此基础上稍作修改
配置hive运行环境
cp conf/hive-env.sh.template conf/hive-env.sh
vi hive-env.sh
L48:HADOOP_HOME=/opt/links/hadoop
L51:export HIVE_CONF_DIR=/opt/links/hive/conf
配置hive-site.xml
<configuration>
<!--配置使用mysql存储元数据-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://ubuntu:9000/user/hive/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://ubuntu:8021/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
<!-- 支持事务的配置 -->
<property>
<name>hive.txn.manager</name>
<value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>
<property>
<name>hive.compactor.initiator.on</name>
<value>true</value>
</property>
<property>
<name>hive.support.concurrency</name>
<value>true</value>
</property>
<property>
<name>hive.compactor.worker.threads</name>
<value>2</value>
</property>
<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
</property>
<!--设置在Web页面中查看某个操作的执行过程-->
<property>
<name>hive.log.explain.output</name>
<value>true</value>
</property>
</configuration>
配置MySQL
- 将MySQL的驱动包放到Hive的lib目录下
- 在MySQL生成元数据
schematool -dbType mysql -initSchema
- 测MySQL中是否生成Hive的元数据
mysql -uroot -p
show databases; // hive的数据库
启动服务与登录
#启动Hive服务器:
hivemetastore nohup hive --service metastore > /dev/null 2>&1 &
hiveserver2 nohup hive --service hiveserver2 > /dev/null 2>&1 &
#beeline终端:
beeline -u jdbc:hive2://ubuntu:10000 --color=true --hiveconf hive.server2.logging.operation.level=NONE
#或者
beeline --color=true --hiveconf hive.server2.logging.operation.level=NONE
beeline> !connect jdbc:hive2://ubuntu:10000
Comments NOTHING