Hive安装

发布于 2022-01-25  150 次阅读


安装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