hive系列(一) 企业级安装及架构介绍

hive官方网站:Apache Hive TM

产生背景:

  1. 方便对文件及数据的元数据进行管理,提供统一的元数据管理方式
  2. 提供更加简单的方式来访问大规模的数据集,使用SQL语言进行数据分析

Hive产生:为了非java编程者对hdfs的数据进行MapReduce操作

介绍:
        Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sq查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
         Hive是建立在Hadoop.上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive 定义了简单的类SQL查询语言,称为HQL,它允许熟悉SQL的用户查询数据。

数据仓库和数据库的主要区别

1、数据库是面向事务的设计,数据仓库是面向主题设计的。

2、数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。

3、数据库设计是尽量避免冗余,数据仓库在设计是有意引入冗余。

4、数据库是为捕获数据而设计,数据仓库是为分析数据而设计

1. 安装 

hive安装也是依靠hadoop而创建的版本上也需要符合hadoop的版本

以下为hive的三种安装方式:

  1. 使用Hive自带的内存数据库Derby作为元数据存储
  2. 使用远程数据库mysql作为元数据存储
  3. 使用本地/远程元数据服务模式安装Hive

这里使用第三种方式:b版本为了和hadoop对应这里采用2.3.9

IPhive备注
node4

server服务端

负责和mysql通讯
node5slave
mysql节点

1. 基础环境配置及安装包部署下载

官方部署安装地址:AdminManual Metastore Administration - Apache Hive - Apache Software Foundation

下载2.3.9的安装包,一定配置hadoop和hive的环境变量,这里没有对hadoop进行配置,就是使用了默认的配置读取了hadoop的环境变量

wget https://downloads.apache.org/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz

#解压hive文件包
tar xvzf apache -hive- 2.3.9-bin.tar.gz

#把解压后的目 录移动到指定目录
mv apache-hive-2.3.9-bin /usr/1ocal/bigdata/apache-hive-2.3.9

# 在node4 和 node5
mkdir -p /home/hadoop/hive/hive_remote/warehouse
export PATH
export HIVE_HOME=/usr/local/bigdata/hive-2.3.9
export HADOOP_HOME=/usr/local/bigdata/hadoop-ha
export PATH=$PATH:$HIVE_HOME/bin:$HADOOP_HOME/bin

2. 修改配置文件node4 节点conf下的配置文件

# 拷贝编辑hive-default.xml.template 到 hive-site.xml

# 把光标后面的内容全部情况,只保留最后一行
:.,$-1d

# 文件内容如下


<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<configuration>
	<property>
		<name>hive.metastore.warehouse.dir</name>
		<value>/home/hadoop/hive/hive_remote/warehouse</value>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://127.0.0.1:3306/hive_remote?createDatabaseIfNotExist=true</value>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionDriverName</name>
		<value>com.mysql.jdbc.Driver</value>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionUserName</name>
       <!-- mysql使用的用户名-->
		<value>root</value>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionPassword</name>
        <!-- msyql 密码 -->
		<value>password</value>
	</property>
</configuration>








还要把mysql数据库连接的jar文件上传到lib目录下:mysql-connector-java-5.1.32.jar

  <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.32</version>
    </dependency>

mysql安装步骤:https://blog.csdn.net/qq_38130094/article/details/103529535?spm=1001.2014.3001.5501

node5:

<configuration>
        <property>
                <name>hive.metastore.warehouse.dir</name>
                <value>/home/hadoop/hive/hive_remote/warehouse</value>
        </property>
        <property>
                <name>hive.metastore.uris</name>
                <value>thrift://node04:9083</value>
        </property>
</configuration>

在node4节点上的bin目录下执行

schematool -dbType mysql -initSchema

这时mysql数据库会出现配置的数据库,和对应的数据结构,可以使用对应的用户登录mysql查看数据库来验证

启动hive:

#在node04上执行hive --service metastore,启动hive的元数据服务,是阻塞式窗口

hive --service metastore

# 在node05上执行hive,进入到hive的cli窗口
hive;

#查看默认数据库/ 默认的是default数据库
show databases;
show tables;
desc formatted tableName;

 

至此hive就可以使用了

二. Hive 高可用方式部署

基于hiveserver2的高可用

https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-ConnectionURLWhenZooKeeperServiceDiscoveryIsEnabled

192.168.3.201

    node1

192.168.3.202

     node2

192.168.3.204

     node4

192.168.3.205

     node5

Namenode11
Journalnode111
Datanode111
Zkfc11
zookeeper111
resourcemanager111
nodemanager111
Hiveserver211
beeline1

2.1 修改192.168.3.204 上的hive-site.xml文件

这次我么你在node4和node5进行hiveserver2的高可用配置

在配置文件hive-site.xml增加以下内容:

<property>
  <name>hive.server2.support.dynamic.service.discovery</name>
  <value>true</value>
</property>
<property>
  <name>hive.server2.zookeeper.namespace</name>
  <value>hiveserver2_zk</value>
</property>
<property>
  <name>hive.zookeeper.quorum</name>
  <value>node2:2181,node4:2181,node5:2181</value>
</property>
<property>
  <name>hive.zookeeper.client.port</name>
  <value>2181</value>
</property>
<property>
  <name>hive.server2.thrift.bind.host</name>
  <value>node2</value>
</property>
<property>
  <name>hive.server2.thrift.port</name>
  <value>10001</value> 
</property>

2.1 同时修改192.168.3.205 上的hive-site.xml文件

增加以下内容:

<property>
  <name>hive.server2.support.dynamic.service.discovery</name>
  <value>true</value>
</property>
<property>
  <name>hive.server2.zookeeper.namespace</name>
  <value>hiveserver2_zk</value>
</property>
<property>
  <name>hive.zookeeper.quorum</name>
  <value>node2:2181,node4:2181,node5:2181</value>
</property>
<property>
  <name>hive.zookeeper.client.port</name>
  <value>2181</value>
</property>
<property>
  <name>hive.server2.thrift.bind.host</name>
  <value>node5</value>
</property>
<property>
  <name>hive.server2.thrift.port</name>
  <value>10001</value> 
</property>

2.3 启动两台hive服务

nohup ./hive --service hiveserver2 >> ./hiveser2.log 2>&1 &

启动两台机器后:

 2.4 进行远程连接

beeline
!connect jdbc:hive2://node2,node4,node5/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk hadoop 123

 hiveserver2的高可用配置完成

3. hive 架构原理

  • 1.用户接口:Client:CLI(command-line interface)、JDBC/ODBC(jdbc访问hive)、WEBUI(浏览器访问hive)
  • 2.元数据:Metastore:元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
  • 默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore
  • 3.Hadoop:使用HDFS进行存储,使用MapReduce进行计算。

4.驱动器:Driver

(1)解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。

(2)编译器(Physical Plan):将AST编译生成逻辑执行计划。

(3)优化器(Query Optimizer):对逻辑执行计划进行优化。

(4)执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/Spark。

 4. Hive运行机制

        Hive 就是通过 CLI 、JDBC / ODBC 或者 HWI 接收相关的 Hive SQL 查询,并通过 Driver 组件进行编译,分析优化,最后变成可执行的 MapReduce

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值