Neal's Space
  • Introduction
  • Algorithm
    • 数学基础
    • Normal
      • 一致性哈希分布
      • A star 寻路
      • 蓄水池抽样 Reservoir Sampling
    • Machine Learning
      • k-近邻算法
      • k-平均演算法
      • kd-Tree算法
      • TF-IDF 特征加权
      • 机器学习模型评价
      • 数据的归一化和标准化
      • 线性回归 - "模型之母"
      • 逻辑回归 - "出场率最高算法"
      • 决策树
  • Programming Language
    • Java
      • Lombok
      • 多数据源分页查询拼接订单
      • 集群 分布式 微服务
      • 反射
      • JAVA类加载器
      • JVM内存
      • Garbage Collection(JVM的垃圾回收机制)
      • Synchronized
      • Java跨域访问
    • Scala
      • Scala使用
  • MySQL
    • MySQL事务
    • MySQL插入多条数据时遇到的问题
    • MySQL经典50题
  • Linux
    • Linux
      • Vim
      • Ubuntu换源
      • Linux内存
    • Docker
      • Docker
      • Docker容器
      • Docker镜像
      • Docker创建本地镜像
  • Data
    • DataWarehouse
      • Sqoop
      • 多维计算
    • Hadoop
      • Hadoop
        • Docker运行Hadoop
      • Hdfs
        • HDFS块丢失过多导致进入安全模式
        • NameNode内存解析
        • HDFS的Router-Based Federation
    • Hive
      • Hive安装配置
      • Hive使用DDL
      • Hive引擎Tez
      • Sqoop与Hive出现的问题
      • Hive与Hook
    • Flume
    • Hbase
      • Hbase安装配置
      • Hbase的Bloom Filters
    • Spark
      • Spark基础
      • Spark SQL
      • Spark Streaming
      • Spark On Yarn
      • Tuning Spark 数据序列化和内存调整
      • Tuning Spark Job
    • Kafka
      • Kafka文件存储
      • 偏移量提交 与 分区再平衡
    • Flink
      • Flink遇到的坑
Powered by GitBook
On this page
  • Hive组成
  • Hive的安装部署
  • 安装:
  • 连接Hive
  • 使用hive命令
  • 使用beeline
  • 使用JDBC连接

Was this helpful?

  1. Data
  2. Hive

Hive安装配置

PreviousHiveNextHive使用DDL

Last updated 5 years ago

Was this helpful?

Hive是一个数据仓库工具,基于Hadoop,可以通过类sql的方式来对数据提供读、写及管理的功能。比直接用mapreduce开发效率高,提供了快速开发的能力。

特点

可扩展 延展性 容错性

Hive组成

  • 客户端:CLI、JDBC、WebUI

  • Thrift Server:Thrift协议RPC通信服务

  • metastore:元数据存储(库/表的定义等

  • Driver:解析器,将hql抽象成表达式树

  • Compiler:编译hql语句,生成一个有向无环的执行计划,hive在mr引擎上就是编译成mapreduce的job

  • Optimizer:将执行计划进行优化,减少不必要的列、使用分区、使用索引等操作,优化job。

  • Executor:将优化后的执行计划提交给Hadoop上的yarn,执行job

Hive的安装部署

  • Hive是基于Hadoop的,最好选用跟Hadoop合适的版本进行安装。

  • Hive的存储基于hdfs/hbase,默认的计算引擎基于mapreduce(hive2.x以上版本不推荐使用mr引擎)

安装:

去官网下载合适版本的安装包

解压后配置环境变量,

# echo 'export HIVE_HOME=/home/apache-hive-2.3.6' >> /etc/profile
# echo 'export PATH=$PATH:$HIVE_HOME/bin' >> /etc/profile
# source /etc/profile

一、本地模式

使用默认的derby进行存储,用于测试,不需要配置,但是只支持单session。

配置 hive-env.sh的JAVA_HOME

启动Hive

元数据会在启动hive命令的目录下生成

二、远程模式

通常使用关系型数据库来进行元数据存储(mysql、oracle等

支持多session,但需要安装关系型数据库,并需要配置

进行配置:

hive-site.xml

<configuration>

<!--连接数据库地址,名称 -->  
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://hdfs02:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</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>123456</value>
</property>

<!--Hive作业的HDFS根目录位置 --> 
<property>
    <name>hive.exec.scratchdir</name>
    <value>/user/hive/tmp</value>
</property>
<!--Hive作业的HDFS根目录创建写权限 --> 
<property>
    <name>hive.scratch.dir.permission</name>
    <value>777</value>
</property>
<!--hive的元数据服务-->
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://hdfs03:9083</value>
</property>
<!--hdfs上hive元数据存放位置 --> 
<property>  
    <name>hive.metastore.warehouse.dir</name>  
    <value>/user/hive/warehouse</value>   
</property>

<property>
    <name>hive.metastore.local</name>
    <value>true</value>
</property>
<property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
</property>
<property>
    <name>datanucleus.schema.autoCreateAll</name>
    <value>true</value>
</property>

<property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
</property>
<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>hdfs03</value>
</property>
<property>
    <name>hive.server2.webui.host</name>
    <value>hdfs03</value>
</property>
<property>
    <name>hive.server2.webui.port</name>
    <value>10001</value>
</property>

<!--客户端显示当前查询表的头信息 --> 
 <property>
  <name>hive.cli.print.header</name>
  <value>true</value>
</property>
<!--客户端显示当前数据库名称信息 --> 
<property>
  <name>hive.cli.print.current.db</name>
  <value>true</value>
</property> 
<property>
   <name>hive.server2.enable.doAs</name>
   <value>false</value>
</property>
</configuration>

将mysql的JDBC驱动包放在$HIVE_HOME/lib目录下

启动hive,初始化元数据 schematool -dbType mysql -initSchema

启动服务 nohup hiveserver2 > hiveserver2.log 2>&1 &

连接Hive

使用hive命令

略

使用beeline

  1. 开启metastore服务

  2. 开启hiveserver2服务

  3. 进入 beeline

  4. 使用 !connect jdbc:hive2://hdfs03:10000 命令进入hive

没有配置权限的情况,用户名和密码可以直接敲回车跳过,或者任意输入

beeline退出使用 !exit 命令

使用JDBC连接

  • 配置jdbc使用java代码可用maven导包

  • 图形化工具连接 需手动配置hive的jdbc依赖

配置JDBC Driver

本文使用DataGrid,也可以使用Idea Ultimate版本自带的database工具连接。使用方法一样。

DataGrip打开Data Sources and Drivers

创建一个新的 Apache Hive Driver

配置合适版本的驱动包

由于 hive-jdbc 不是包含所有依赖的包(这里是 HA 的 HiveServer, 需要有 ZK 的依赖, 也可以直接连接 HiveServer), 所以需要导入 Driver 的全部 jar, 如下:

commons-httpclient-3.0.1.jar commons-logging-1.2.jar curator-client-2.7.1.jar curator-framework-2.7.1.jar hadoop-auth-2.9.2.jar hadoop-common-2.9.2.jar hive-common-2.3.6.jar hive-exec-2.3.6.jar hive-jdbc-2.3.6.jar hive-metastore-2.3.6.jar hive-service-2.3.6.jar httpclient-4.4.jar httpcore-4.4.jar slf4j-api-1.7.25.jar zookeeper-3.4.6.jar

这里的文件有部分是hive的lib中找,有部分是从hadoop的库(${HADOOP_HOME}\/share\/hadoop/common/lib)中找 我的Hive版本是2.3.6,Hadoop的版本是2.9.2。

配置连接Hive

和连接其他数据库类似, 配置好连接名, JDBC URL, 用户, 密码 即可

URL可以有两种形式:

  • jdbc:hive2://<hiveserver_host>:<port>: 直接连接某个 HiveServer

  • jdbc:hive2://<zookeeper_server1>:<port>,<zookeeper_server2>:<port>;zooKeeperNamespace=<hiveserver_namespace>: 通过 Zookeeper 连接 HiveServer(需要多几个依赖)

打开连接即可使用了。

如果网络不顺畅可以尝试

https://hive.apache.org/downloads.html
清华大学开源镜像站 - /apache/hive