hive配置

一、Hive的简介

1.1 出现的原因

facebook团队要管理和分析大量的结构化的日志文件,因为写mapreduce非常麻烦,所以该团队就开发出来一个框架,叫hive.

1.2 hive是什么

hive是一款运行在hadoop上的数据仓库管理工具,可以将具有结构化的数据文件映射成一张数据表,使用类似sql的方式来对这种文件进行读、写、管理(包括元数据)等。这种类sql的语言,称之为Hive SQL,简称HQL。 实际上hive底层是mapreduce或者是spark或者是tez.

如果是mapreduce,则是将hql翻译成对应的mapreduce程序。

1.3 Hive的优缺点

一、优点
   1. 学习成本低
   2. 扩展性好
   3. 适合做离线分析(OLAP)
   4. 容错性好(某一个节点宕机,hive依然可以完成)
   5. 延展性好(用户可以自定义hive函数)
   6. hive的元数据统一管理。
二、缺点:
	1. hive的表达能力有限(特别复杂的算法难以实现)
	3. hive的效率低(调优不方便,速度慢)

二、hive的框架原理(重点)

2.1 hive的框架结构

1. 用户接口层:  就是供用户链接hive的接口,有三类。
			- shell命令行接口
			- jdbc/odbc接口
			- webui接口
2. Thrift server:hive的可选组件(第三方组件),供编程语言链接hive时使用。
3. metaStore:元数据库
	用来存储hive的元数据的,元数据包括库名,表名,表字段,字段类型,表数据所在的目录等。
	注意:hive在工作时,会访问元数据库,可能是读取元数据,也可能是更改元数据。
4. Driver: hive的驱动
     - 解析器: 解析hql语法
     - 编译器: 将没有问题的hql翻译成mr程序
     - 优化器: 对翻译好的mr程序进行部分优化(比如去掉不必要的列等)
     - 执行器: 提交mr程序job。

2.2 hive的运行原理

1. 用户提交hql语句给Driver.
2. Driver的解析器校验hql,然后传给编译器,由编译器翻译成mr执行计划。
3. 编译器读取元数据库里的元数据
4. 编译器获取元数据后,再次完善mr执行计划,比如设置输入路径等。
5. 将完善后的mr执行计划交由driver。此时,整个解析和翻译过程结束。
6. driver将执行计划交给执行引擎
7. 执行引擎提交作业到yarn上,运行mr程序
8. 运算结果交由执行引擎。
9.执行引擎获取数据后,交给driver
10.driver将结果传递给用户。

2.3 hive和hadoop的关系

hive就像是在hadoop上的一个壳子。 hive要处理的数据存储在hdfs/hbase上。hive的计算基于mapreduce/spark/tez

三、hive的安装模式

3.1 内嵌模式的简介

hive的元数据存储在自带的derby数据库中,就是内嵌模式。缺点,只支持单session。

3.2 本地模式

3.2.1 简介
元数据库是关系型数据库mysql,hive的相关进程都在同一台机器上,与mysql在哪一台机器上无关。

注意:hive在启动客户端时,会内置的自动启动一个元数据服务项。
3.2.2 安装步骤
准备工作. 安装好mysql(任意一台机器即可)

**步骤1:**上传,解压,更名,配置环境变量

步骤2: 修改hive-env.sh

如果不存在,就用hive.env.sh.template复制一个

export HIVE_CONF_DIR=/usr/local/hive/conf
export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export HIVE_AUX_JARS_PATH=/usr/local/hive/lib

步骤3: 修改hive-site.xml

hive2.1.1中默认是没有hive-site.xml,可以把conf/hive-default.xml.template拷贝过来使用


<!--配置mysql的连接字符串-->
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://qianfeng03:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!--配置mysql的连接驱动-->
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
</property>
<!--配置登录mysql的用户-->
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
</property>
<!--配置登录mysql的密码,注意,注意,注意,要用自己的远程密码-->
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>@Mmforu45</value>
</property>

<!-- 该参数主要指定Hive的数据存储目录  -->
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
</property>

<!-- 该参数主要指定Hive的临时文件存储目录  -->
<property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
</property>

<!--     一些临时文件夹的配置   -->
<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/usr/local/hive/iotmp</value>
</property>
<property>
    <name>hive.downloaded.resources.dir</name>
    <value>/usr/local/hive/iotmp/${hive.session.id}_resources</value>
</property>
<property>
    <name>hive.querylog.location</name>
    <value>/usr/local/hive/iotmp/root</value>
</property>
<property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>/usr/local/hive/iotmp/root/operation_logs</value>
</property>

步骤4: 导入mysql的驱动包到lib目录下

步骤5:初始化元数据库

]# schematool -initSchema -dbType mysql

步骤6: 使用hive指令运行客户端即可

]# hive

3.3 远程模式

3.3.1 概念
hive的服务项进程必须单独启动,服务项有两个,一个是hiveserver2,一个是metastore。 启动哪一个都可以,注意启动hiveserver2时,其本质还是在内部启动了metastore
3.3.2 hive的服务端的配置
<!--配置mysql的连接字符串-->
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://qianfeng03:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!--配置mysql的连接驱动-->
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
</property>
<!--配置登录mysql的用户-->
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
</property>
<!--配置登录mysql的密码,注意,注意,注意,要用自己的远程密码-->
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>@Mmforu45</value>
</property>

<!-- 该参数主要指定Hive的数据存储目录  -->
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
</property>

<!-- 该参数主要指定Hive的临时文件存储目录  -->
<property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
</property>

<!--     一些临时文件夹的配置   -->
<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/usr/local/hive/iotmp</value>
</property>
<property>
    <name>hive.downloaded.resources.dir</name>
    <value>/usr/local/hive/iotmp/${hive.session.id}_resources</value>
</property>
<property>
    <name>hive.querylog.location</name>
    <value>/usr/local/hive/iotmp/root</value>
</property>
<property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>/usr/local/hive/iotmp/root/operation_logs</value>
</property>
3.3.3 hive的客户端配置
只需要在某台机器上安装了hive即可。

原理:客户端链接服务端,服务端连接mysql数据库

注意,注意,注意,必须配置hadoop的core-site.xml文件,添加以下配置

<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>
3.3.4 启动客户端连接服务项

1)启动服务项

启动hiveserver2:
	    方法1:
        	直接调用hiveserver2。会进入监听状态不退出。
        方法2:
            hive --service hiveserver2 & 进入后台启动
        方法3:
       		hive --service hiveserver2 2>&1 >/dev/null &; #信息送入黑洞。

启动metastore:
        方法1:
            - hive --service metastore &
        方法2:
            - hive --service metastore 2>&1 >/dev/null &; #信息送入黑洞。

2)使用beeline工具连接hiveserver2服务项

方式1:
   	step1. beeline 回车
   	step2. !connect jdbc:hive2://ip:10000 回车
   	step3. 输入用户名 回车
   	step4. 输入密码 回车
方法2(直连):
	1. beeline -u jdbc:hive2://ip:10000 -n 用户名

解析: 
	hive2,是hive的协议名称
	ip:  hiveserver2服务所在的主机IP。
	10000,是hiveserver2的端口号

3)使用hive指令连接metastore服务项

想要连接metastore服务的客户端必须配置如下属性和属性值

<property>
	<name>hive.metastore.uris</name> 
	<value>thrift://ip:9083</value>
</property>

解析:thrift:是协议名称
	 ip为metastore服务所在的主机ip地址
     9083是默认端口号

配置完,直接使用hive指令即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Spark SQL 中使用 Hive,您需要进行以下配置: 1. 在 Spark 配置中启用 Hive 支持。在 Spark 的配置文件中(如 spark-defaults.conf 或 spark-env.sh),添加以下配置: ```shell spark.sql.catalogImplementation=hive ``` 2. 确保您的 Spark 安装与 Hive 版本兼容。Spark 需要与 Hive 使用相同版本的 Metastore。 3. 将 Hive配置文件 hive-site.xml 复制到 Spark 的配置目录中。这将确保 Spark 使用正确的 Hive 配置。 4. 如果您的 Hive 安装使用了远程 Metastore,需要在 Spark 配置中设置 Metastore 的连接信息。在 Spark 的配置文件中添加以下配置: ```shell spark.hadoop.javax.jdo.option.ConnectionURL=jdbc:mysql://<metastore-host>:<metastore-port>/<database-name>?createDatabaseIfNotExist=true spark.hadoop.javax.jdo.option.ConnectionDriverName=com.mysql.jdbc.Driver spark.hadoop.javax.jdo.option.ConnectionUserName=<metastore-username> spark.hadoop.javax.jdo.option.ConnectionPassword=<metastore-password> ``` 将 `<metastore-host>`、`<metastore-port>`、`<database-name>`、`<metastore-username>` 和 `<metastore-password>` 替换为相应的值。 5. 如果您的 Hive 安装中使用了自定义的额外 JAR 文件,您需要将这些 JAR 文件添加到 Spark 的类路径中。在 Spark 的配置文件中添加以下配置: ```shell spark.driver.extraClassPath=<custom-jar-path1>:<custom-jar-path2>:... spark.executor.extraClassPath=<custom-jar-path1>:<custom-jar-path2>:... ``` 将 `<custom-jar-path1>`、`<custom-jar-path2>` 等替换为实际的 JAR 文件路径。 完成以上配置后,您就可以在 Spark SQL 中使用 Hive 的功能,包括使用 Hive 的表、执行 Hive 查询和使用 Hive UDF/UDAF 等。请确保 Spark 集群中所有的节点都进行了相同的配置

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值