hive的几种启动方式

1. 使用的本地metastore,直接通过hive命令启动。

hive-site.xml文件中配置使用本地mysql数据库存储metastore

<property>  
    <name>hive.metastore.local</name>  
    <value>true</value><!-- 元数据存储在本地 -->  
</property>   
<property>  
    <name>javax.jdo.option.ConnectionURL</name>  
    <value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>  
</property>  
<property>  
    <name>javax.jdo.option.ConnectionDriverName</name>  
    <value>com.mysql.jdbc.Driver</value><!-- jdbc驱动 -->  
</property>  
<property>  
     <name>javax.jdo.option.ConnectionUserName</name>  
     <value>root</value><!-- mysql账号 -->  
</property>  
<property>  
     <name>javax.jdo.option.ConnectionPassword</name>  
     <value>rootpassword</value><!-- mysql密码 -->  
</property>  

使用以下命令开启

$HIVE_HOME/bin/hive

hive命令默认是启动client服务,相当于以下命令

$HIVE_HOME/bin/hive --service cli

不需要启动server,使用本地的metastore,可以直接做一些简单的数据操作和测试。

2. 使用远程的metastore

metastore可以和hive客户端不在一个机器上。

  • 服务器1如1中配置,使用本地metastore

  • 服务器1启动metastore服务

$HIVE_HOME/bin/hive --service metastore

如上启动,会启动端口号默认9083的metastore服务,也可以通过-p指定端口号

$HIVE_HOME/bin/hive --service metastore -p 9083
  • 服务器2如下配置,使用远程metastore
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
       <name>hive.metastore.uris</name>
       <value>thrift://metastore_server_ip:9083</value><!-- 此处是服务器1的ip -->
    </property>
</configuration>
  • 服务器2直接启动cli即可
$HIVE_HOME/bin/hive

不需要启动server,使用远程的metastore

3. 启动hiveserver2,使其他服务可以通过thrift接入hive

  • hive-site.xml如1中配置

  • hive-site.xml中可以加上是否需要验证的配置,此处设为NONE,暂时不需要验证,测试用。

<property>
    <name>hive.server2.authentication</name>
    <value>NONE</value>
</property>
  • hadoop的core-site.xml文件中配置hadoop代理用户
<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

此处这样设置的意思是,root用户提交的任务可以在任意机器上以任意组的所有用户的身份执行。
如果不设置,后续连接时会报

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException):
User: root is not allowed to impersonate anonymous 

hadoop在安全校验时不允许root用户使用匿名身份访问hadoop。
但其实我的hadoop并没有设置Authorization,为什么必须设置root的代理用户,这里暂时还是个疑问。
设置完后,需要重启hadoop

$HADOOP_HOME/sbin/stop-dfs.sh
$HADOOP_HOME/sbin/start-dfs.sh
  • 启动hiveserver2
$HIVE_HOME/bin/hive --service hiveserver2
  • beeline工具测试使用jdbc方式连接
$HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000

hiveserver端口号默认是10000
使用beeline通过jdbc连接上之后就可以像client一样操作。

界面中可以看到Session/Query/Software等信息。(此网页只可查看,不可以操作hive数据仓库)

4. 启动hiveWebInterface,通过网页访问hive

hive提供网页GUI来访问Hive数据仓库
可以通过以下命令启动hwi,默认端口号9999

$HIVE_HOME/bin/hive --service hwi

从Hive 2.2.0开始不再支持hwi,故此处不再赘述。

5. (扩展)使用HCatalog访问hive

从Hive版本0.11.0开始,hive包含了HCatalog
HCatalog是基于Apache Hadoop之上的数据表和存储管理服务,支持跨数据处理工具,如Pig,Mapreduce,Streaming,Hive。
使用HCatalog,则hive的元数据也可以为其他基于Hadoop的工具所使用。无论用户用哪个数据处理工具,通过HCatalog,都可以操作同一个数据。

可以通过以下命令启动HCatalog

$HIVE_HOME/hcatalog/sbin/hcat_server.sh start

可以通过以下命令启动HCatalog的cli界面

$HIVE_HOME/hcatalog/bin/hcat

另外,HCatalog的WebHCat 也提供一套REST API接口访问hive数据
可以通过以下命令启动WebHCat

$HIVE_HOME/hcatalog/sbin/webhcat_server.sh start

API接口官网地址:https://cwiki.apache.org/confluence/display/Hive/WebHCat+Reference

  • 25
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答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 包的几种方式,根据不同的需求,选择合适的方式即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值