Hive安装部署

 目录

1:官网下载安装包 Index of /dist/hive 。

2:解压缩安装包

3:修改 hive配置。

        a- 指定hive的元数据 存储位置

        b- 指定元数据库的驱动程序(以 mysql为元数据库为例)

        c- 指定元数据库的 用户名和密码

         d- 指定数据在HDFS上的存储路径

         e- 设置方便操作,查看的属性。 在 命令行 中显示 数据库名和数据的表头

        f-  设置小规模数据时,使用本地模式,提高效率。本机练习时常用        

 4:将对应的mysql驱动程序拷贝到 hive-2.3.7/lib 下。

5:配置环境变量 。

6:初始化 元数据库

7:启动 hive,验证是否部署成功

二: 生产环境的元数据管理

1- 在全部的节点上解压安装hive。

2- 启动hive metastore服务

3- 修改hive 客户端的 hdfs-site.xml。

4- 启动hive客户端

 5- 高可用测试


前提: 安装了 hadoop(提供数据的存储HDFS) 和 mysql (作为hive的元数据库)。

 hadoop的安装文档: hadoop安装部署(学习)

mysql新建了hive的用户。 用户名为 hive , 密码为 "12345678"

软件node1node2node3
hadoop
hive
mysql

1:官网下载安装包 Index of /dist/hive

         以hive-2.3.7为例

2:解压缩安装包

         以 安装目录为 /opt/cluster/servers 为例,

# 解压到hive 到 /opt/cluster/servers/

tar zxvf apache-hive-2.3.7-bin.tar.gz -C /opt/cluster/servers/

# 重命名

mv /opt/cluster/servers/apache-hive-2.3.7-bin /opt/cluster/servers/hive-2.3.7

3:修改 hive配置。

        可以拷贝 conf下的 hive-default.template.xml。也可以新建配置文件。
        以新建 hive-site.xml为例。新建文件后,新增内容.


        a- 指定hive的元数据 存储位置

        b- 指定元数据库的驱动程序(以 mysql为元数据库为例)

        c- 指定元数据库的 用户名和密码

         d- 指定数据在HDFS上的存储路径

         e- 设置方便操作,查看的属性。 在 命令行 中显示 数据库名和数据的表头

        f-  设置小规模数据时,使用本地模式,提高效率。本机练习时常用
        

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- hive元数据的存储位置 -->
	<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://node3:3306/hivemetadata?createDatabaseIfNotExist=true&amp;useSSL=false</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>12345678</value>
		<description>password to use against metastore database</description>
	</property>

	<!-- 数据默认的存储位置(HDFS) -->
    <property>
    	<name>hive.metastore.warehouse.dir</name>
	    <value>/user/hive/warehouse</value>
	</property>

    <!-- 在命令行中,显示当前操作的数据库 -->
	<property>
		<name>hive.cli.print.current.db</name>
		<value>true</value>
	</property>

	<!-- 在命令行中,显示数据的表头 -->
	<property>
		<name>hive.cli.print.header</name>
		<value>true</value>
	</property>

	<!-- 操作小规模数据时,使用本地模式,提高效率 -->
	<property>
		<name>hive.exec.mode.local.auto</name>
		<value>true</value>
	</property>
</configuration>

注意jdbc的连接串,如果没有 useSSL=false 会有大量警告

在xml文件中 &amp 表示 &

 4:将对应的mysql驱动程序拷贝到 hive-2.3.7/lib 下。


        注意驱动程序版本要对应
        我的mysql是 5.7.24, 驱动程序版本是 5.1.46, mysql-connector-java-5.1.46.jar

5:配置环境变量 。

        配置hive的环境变量。方便后续的使用。

vi /etc/profile

# 在 /etc/profile 文件中增加环境变量

export HIVE_HOME=/opt/cluster/servers/hive-2.3.7
export PATH=$PATH:$HIVE_HOME/bin

# 执行并生效
source /etc/profile

6:初始化 元数据库

schematool -dbType mysql -initSchema

7:启动 hive,验证是否部署成功

# 启动hive服务之前,请先启动hdfs、yarn的服务

[root@node123 ~]$ hive
hive> show functions;

二: 生产环境的元数据管理
 

        上面的配置,在hdfs-site.xml中暴露了元数据库(mysql)的连接信息(地址,驱动,用户名和密码)。所以在生产环境一般不采用这种方式。而是在上层暴露一个服务metastore,这个服务协议thift要兼容多语言(java,python等),多驱动(mysql,oracle等),为外部访问Hive元数据提供入口,通过它来屏蔽了 数据库访问的地址,驱动,用户名和密码

        第一种的元数据管理模式(元数据存在mysql,hdfs-site.xml中配置元数据库的连接信息),一般叫本地模式。每个hive 服务 都内嵌一个metastore(metastore是管理元数据的服务)。

      生产环境一般采用的是远程模式,单独起一个metastore服务,通过它统一对外面提供元数据访问入口。它自己去元数据库mysql拿元数据。

           生产环境中元数据管理的远程模式配置,以3个节点为例,服务配置如下,配置2个hive metastore,可以作为HA,提高可用性

节点hive metastorehive client
node1
node2
node3

1- 在全部的节点上解压安装hive。

        参考之前解压安装的步骤,并配置hive的环境变量 

2- 在hive metastore的节点上配置mysql信息。

    在这里就是 node1 和 node3 。编辑 hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- hive元数据的存储位置 -->
	<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://node3:3306/hivemetadata?createDatabaseIfNotExist=true&amp;useSSL=false</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>12345678</value>
		<description>password to use against metastore database</description>
	</property>

	<!-- 数据默认的存储位置(HDFS) -->
    <property>
    	<name>hive.metastore.warehouse.dir</name>
	    <value>/user/hive/warehouse</value>
	</property>

    <!-- 在命令行中,显示当前操作的数据库 -->
	<property>
		<name>hive.cli.print.current.db</name>
		<value>true</value>
	</property>

	<!-- 在命令行中,显示数据的表头 -->
	<property>
		<name>hive.cli.print.header</name>
		<value>true</value>
	</property>

	<!-- 操作小规模数据时,使用本地模式,提高效率 -->
	<property>
		<name>hive.exec.mode.local.auto</name>
		<value>true</value>
	</property>
</configuration>

3- 在hive节点上,放入 mysql的驱动,并初始化元数据库

     拷贝 mysql的驱动到 $HIVE_HOME/lib 下,注意要和mysql的版本对应上

      初始化元数据库,在node1 和3 执行命令

schematool -dbType mysql -initSchema

4- 启动hive metastore服务并检查启动结果

        在 node1 和 node3 中执行

nohup hive --service metastore &

     metastore的默认服务端口是9083, 我这里使用的是lsof命令,其他的网络检查端口也可以。

lsof -i:9083

5- 修改hive 客户端的 hdfs-site.xml。

    告知客户端metastore的地址,不需要配置元数据库(mysql)的连接信息。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>  
  <!-- 配置hive metastore 服务地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://node1:9083,thrift://node2:9083</value>
    </property>

    <!-- 数据默认的存储位置(HDFS) -->
    <property>
    	<name>hive.metastore.warehouse.dir</name>
	    <value>/user/hive/warehouse</value>
	</property>

    <!-- 在命令行中,显示当前操作的数据库 -->
	<property>
		<name>hive.cli.print.current.db</name>
		<value>true</value>
	</property>

	<!-- 在命令行中,显示数据的表头 -->
	<property>
		<name>hive.cli.print.header</name>
		<value>true</value>
	</property>

	<!-- 操作小规模数据时,使用本地模式,提高效率 -->
	<property>
		<name>hive.exec.mode.local.auto</name>
		<value>true</value>
	</property>
</configuration> 

6- 启动hive客户端

        在node2 执行

hive

 7- 高可用测试

        7.1-进入hive客户端,随便执行命令。比如show databases

show databases;

        7.2- 查看目前连接在哪个节点的metastore

        分别在 node1,node3上执行

# metastore默认的服务端口是 9083
lsof -i:9083

       在 链接的节点上会有两条信息

        7.3- 杀死已连接的 metastore进程

         到对应的节点  kill 9 <pid>

kill 9 <pid>

        7.4- 再执行show databases;还是能正常执行命令。且链接到另外一个节点上

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值