hive服务启动的几种方式

hive的两种后台服务,到底是干什么的

hive是hadoop的客户端,所以第一步是启动hadoop集群。

希望大家可以关注下公众号,会定期分享自己从业经历、技术积累及踩坑经验,支持一下,鞠躬感谢~
在这里插入图片描述


hive连元数据有两种方式连接。

第一种是直连,就是直接去mysql的metastore库里去连接。

另一种通过服务去连接,hive有个服务叫metastore,还有一个服务叫hiveserver2。hive去启动metastore服务,然后服务去连接mysql,找到元数据。

怎么控制hive连接元数据的方式呢?

就看hive-site.xml配置文件里是否有hive.metastore.uris 这行相关的配置命令。如果有,就是用metastore服务去连接。

如果没有这个配置命令,但是有下面的关于jdbc的配置命令,那就是通过直连mysql的方式。

<!-- jdbc连接的URL -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
</property>

    <!-- jdbc连接的Driver-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
</property>

	<!-- jdbc连接的username-->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>

    <!-- jdbc连接的password -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>

可以直接执行命令[atguigu@hadoop103 hive]$ bin/hive,然后进行一系列查询数据的操作,结果正常展示。

  1. 使用metastore服务连接mysql服务
<!-- 指定存储元数据要连接的地址 -->
<property>
		<name>**hive.metastore.uris**</name>
		<value>thrift://hadoop102:9083</value>
</property>

如果hive-site.xml文件中配置里有以上命令。在shell命令行中,输入hive,然后show databases,就会报错。

这是因为我没有启动metastore这个服务。

输入如下命令,就前台启动了metastore 服务(只有这个服务一直存在,才能保证hive一直能够连接到mysql的元数据)。

[atguigu@hadoop202 hive]$ hive --service metastore 
2020-04-24 16:58:08: Starting Hive Metastore Server  
注意: 启动后窗口不能再操作,需打开一个新的shell窗口做别的操作

这样在重新试一试show databases命令,正常显示结果。

hive比较特殊,它既是自己的客户端,又是服务端。

在公司里,很可能有不止一个hive客户端,比如,mysql在100机器上,而机器102 103 104上都有hive客户端,而mysql ip地址只对102机器暴露,103、104机器访问不了mysql。这样103就只能通过metastore这种方式来连接mysql的元数据。就是在102 上启动metastore服务,然后用103来连接102。103 104 上有hive相关文件,同时hive-site.xml文件中只配置**hive.metastore.uris**相关命令就行了。

在102上启动metastore服务,命令hive --service metastore ,然后103上使用命令[atguigu@hadoop103 hive]$ bin/hive,然后进行一系列查询数据的操作,正常展示。

  1. hiveserver2服务 hive客户端连接客户端

hive是hadoop的客户端,同时hive本身也有客户端。

两种启动方式。

[atguigu@hadoop202 hive]$ hive --service hiveserver2

另一种方式:

[atguigu@hadoop102 bin]$ pwd
/opt/module/hive/bin

[atguigu@hadoop102 bin]$ cat hiveserver2 
#!/usr/bin/env bash

# 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.

bin=`dirname "$0"`
bin=`cd "$bin"; pwd`

. "$bin"/hive --service hiveserver2 "$@"

可以看到,系统自带脚本hiveserver2 的命令最后一行就是启动命令。

这个hiveserver2 服务启动以后,就能通过hive的客户端来连接hive了。

单独启动hiveserver2服务,比较费窗口,就是那个窗口不能进行任何的命令输入。

可以用下面的写法,后台方式启动:

[atguigu@hadoop102 bin]$ nohup hiveserver2 &
[1] 3565
[atguigu@hadoop102 bin]$ nohup: 忽略输入并把输出追加到"nohup.out"

nohup: 放在命令开头,表示不挂起,也就是关闭终端进程也继续保持运行状态

&: 放在命令结尾,表示后台运行

然后多回车几下,就可以继续输入命令了。

但是这样的话,进程比较多,万一有两个RunJar进程,怎么关闭自己想关闭的RunJar进程呢?

[atguigu@hadoop102 bin]$ jpsall
=============== hadoop102 ===============
2003 JobHistoryServer
1413 NameNode
1834 NodeManager
3565 RunJar
1534 DataNode
=============== hadoop103 ===============
1572 NodeManager
1429 ResourceManager
1239 DataNode
=============== hadoop104 ===============
1335 SecondaryNameNode
1451 NodeManager
1244 DataNode
[atguigu@hadoop102 bin]$

可以用脚本

jpsall - l 如果不行,就用jpsall - m,根据详细显示信息,进行kill -9 进程号

[atguigu@hadoop102 bin]$ **jpsall -m**
=============== hadoop102 ===============
2003 JobHistoryServer
1413 NameNode
1834 NodeManager
**3565 RunJar /opt/module/hive/lib/hive-service-3.1.2.jar org.apache.hive.service.server.HiveServer2**
1534 DataNode
=============== hadoop103 ===============
1572 NodeManager
1429 ResourceManager
1239 DataNode
=============== hadoop104 ===============
1335 SecondaryNameNode
1451 NodeManager
1244 DataNode
[atguigu@hadoop102 bin]$
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Hive 是一个基于 Hadoop 的数据仓库系统,能够处理大规模的结构化数据。在 Hive 中使用自定义函数或者存储过程时,常常需要通过加载 jar 包来实现。以下三种方式是常用的 Hive 加载 jar 包的方式。 1. 添加 Hive AUX JARS 在 hive-site.xml 或者 hive-config.sh 中,通过配置 hive.aux.jars.path=xxxx 指定 jar 包存储的路径,最终将 jar 包添加到 Hadoop 的 ClassPath 中。当 Hive 运行需要加载 jar 包的任务时,就会从 ClassPath 中加载 jar 包,避免手动指定 JAR 文件。 2. ADD JAR 命令 使用 ADD JAR 命令将 jar 包添加到 Hive 会话中,可以通过全路径、本地路径或 Hadoop HDFS 路径来指定。例如 ADD JAR hdfs:///example/hive/hive-test.jar; 3. 使用命令行参数 启动 Hive 命令时,可以通过指定 –hiveconf hive.aux.jars.path=xxxx 指定 JAR 文件的路径,启动 Hive 命令同时就会将 JAR 文件加入到 ClassPath 中。 总之,在使用 Hive时,要根据实际情况选择合适的方式加载 JAR 包,避免出现错误。 ### 回答2: 在Hive中加载jar包有多种方式,以下列举其中三种: 1. 添加hive自定义类路径 在hive-site.xml文件中,将Hive的自定义类路径hive.aux.jars.path设置成需要加载的jar包所在路径,即可将jar包加入Hive的classpath中,方便调用自定义函数等操作。示例: <property> <name>hive.aux.jars.path</name> <value>/path/to/jar1:/path/to/jar2</value> </property> 2. 使用ADD JAR命令 在Hive的交互式终端或执行脚本时,使用ADD JAR命令将需要加载的jar包添加到Hive的classpath中。该命令会将jar包复制到Hive的临时文件夹中,可以通过system:java.io.tmpdir查看该路径。示例: ADD JAR /path/to/jar1; ADD JAR /path/to/jar2; 3. 在创建自定义函数时指定jar包路径 在创建自定义函数时,可以将需要加载的jar包路径直接指定到函数的CLASSPATH选项中。示例: CREATE TEMPORARY FUNCTION my_func AS 'com.package.MyFunc' USING JAR '/path/to/jar1'; 以上三种方式中,第一种和第二种可以将jar包持久地添加到Hive的classpath中,方便后续多个脚本或交互式终端使用;第三种方式则适用于只在当前会话使用自定义函数的情况。 ### 回答3: Hive 是一个基于 Hadoop 的数据仓库工具,它可以将结构化的数据以 SQL 的方式进行查询和分析。在 Hive 中,用户可以使用自定义的 UDF(用户定义函数),以扩展 Hive 的功能。 说到加载 Jar 包,Hive 有以下几种方式: 1. ADD JAR:通过 ADD JAR 命令将本地路径的 Jar 包加载到 Hive 中。 例如: ADD JAR /usr/local/hive/UDF/hive-udf.jar; 2. ADD ARCHIVE:通过 ADD ARCHIVE 命令将一个包含多个 Jar 包的 tar.gz 归档文件加载到 Hive 中。 例如: ADD ARCHIVE /usr/local/hive/UDF/hive-udf.tar.gz; 3. 在 Hive 配置文件中添加 Jar 包路径:在 Hive 的配置文件中,添加 Jar 包所在的路径,如下: hive.aux.jars.path=file:///usr/local/hive/UDF/hive-udf.jar 4. 使用命令行选项 "-hiveconf":在启动 Hive 前,使用 -hiveconf 命令行选项指定 Jar 包路径。 例如: $ hive -hiveconf hive.aux.jars.path=file:///usr/local/hive/UDF/hive-udf.jar 以上是 Hive 加载 Jar 包的几种方式,根据不同的需求,选择合适的方式即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值