Hive hiveserver2 配置运行

本文详细介绍了在使用Hive进行数据查询时遇到的权限问题,并提供了相应的解决方案。包括如何通过修改配置文件来解决HDFS目录创建权限问题,以及在JDBC连接中遇到输入字符串错误时的解决方法。最后,通过示例展示了成功使用Hive进行数据连接和查询的过程。

1:运行

命令行模式:

hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10001

服务模式:

hiveserver2 start

[jifeng@feng01 conf]$ hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10001
Starting HiveServer2
15/03/05 16:59:33 WARN conf.HiveConf: DEPRECATED: hive.metastore.ds.retry.* no longer has any effect.  Use hive.hmshandler.retry.* instead


2:权限问题

java jdbc连接报错:

Exception in thread "main" java.sql.SQLException: Error while compiling statement: FAILED: RuntimeException Cannot make directory: hdfs://feng01:9000/tmp/hive-jifeng/hive_2015-03-05_17-04-43_349_5945847416346775092-3
	at org.apache.hive.jdbc.Utils.verifySuccess(Utils.java:121)
	at org.apache.hive.jdbc.Utils.verifySuccessWithInfo(Utils.java:109)
	at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:231)
	at org.apache.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:355)
	at demo.test.Pretest.main(Pretest.java:28)

服务端也看到错误
FAILED: RuntimeException Cannot make directory: hdfs://feng01:9000/tmp/hive-jifeng/hive_2015-03-05_17-04-43_349_5945847416346775092-3
无权限创建目录,修改为管理hadoop的用户和密码

修改后

3:For input string: "5000L"

JDBC连接报:

Exception in thread "main" java.sql.SQLException: For input string: "5000L"
	at org.apache.hive.jdbc.Utils.verifySuccess(Utils.java:121)
	at org.apache.hive.jdbc.Utils.verifySuccessWithInfo(Utils.java:109)
	at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:263)
	at org.apache.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:355)
	at demo.test.Pretest.main(Pretest.java:28)
修改配置:

把hive-site.xml

这个配置文件里hive.server2.long.polling.timeout这个参数是5000L,改成5000

[jifeng@feng01 conf]$ vi hive-site.xml 

  <name>hive.server2.long.polling.timeout</name>
  <value>5000</value>
  <description>Time in milliseconds that HiveServer2 will wait, before responding to asynchronous calls that
 use long polling</description>
</property>
4:JDBC 连接HIVE OK

package demo.test;

import java.sql.*;

public class Pretest {


		    public static void main( String args[] )
		        throws SQLException , ClassNotFoundException {
	    	    String jdbcdriver="org.apache.hive.jdbc.HiveDriver";

	    	    String jdbcurl="jdbc:hive2://feng01:10001";

	    	    String username="jifeng";
	    	    String password="jifeng";		
	    	    Class.forName(jdbcdriver);
	    	    Connection c = DriverManager.getConnection(jdbcurl,username,password); 
		        Statement st = c.createStatement();
		       // select * from firewall where idauto=16600918"));//
		        print( "num should be 1 " , st.executeQuery("select * from course"));
		        //( "select id,name,vip from users order by id limit 5" ) );
		        // TODO indexing
		    }
			 static void print( String name , ResultSet res )
				        throws SQLException {
				        System.out.println( name);
				        ResultSetMetaData meta=res.getMetaData();				        
		                //System.out.println( "\t"+res.getRow()+"条记录");
		                String	str="";
		                for(int i=1;i<=meta.getColumnCount();i++){
		                	str+=meta.getColumnName(i)+"   ";
		                	//System.out.println( meta.getColumnName(i)+"   ");
		                }
		                System.out.println("\t"+str);
		                str="";
				        while ( res.next() ){
				        	for(int i=1;i<=meta.getColumnCount();i++){	
				        		str+= res.getString(i)+"   ";				        	} 
				        	System.out.println("\t"+str);
				        	str="";
				        }
				    }	    
}
运行结果:
	course.id   course.c1   course.c2   course.c3   course.c4   
	1   英语   中文   法文   日文   
	2   中文   法文         
	3   中文   法文   日文      
	4   中文   法文   拉丁      
	5   中文   法文   德文      





### 如何配置 HiveHiveServer2 #### 1. 调整资源配置以提升性能 为了提高 HiveServer2 处理查询请求的效率,可以通过修改内存分配来实现。例如,在启动脚本中设置 `HADOOP_HEAPSIZE` 参数以及 JVM 堆大小选项: ```shell export HADOOP_HEAPSIZE=4096 export HADOOP_NAMENODE_OPTS="-Xms4096m -Xmx4096m" ``` 这些命令会将堆内存固定为 4GB,从而减少动态调整带来的开销[^1]。 #### 2. 安全加固措施 加强 HiveServer2 的安全性非常重要,尤其是在生产环境中。可以启用 Kerberos 认证机制,具体方法是在环境变量中定义如下内容: ```shell export HIVE_SERVER2_AUTHENTICATION=KERBEROS ``` 此操作能够有效限制未授权用户的访问行为并保护敏感数据。 #### 3. 修改核心配置文件 (`hive-site.xml`) 在 `$HIVE_HOME/conf/hive-site.xml` 中添加必要的属性以便于客户端正常连接到 HiveServer2 实例上。以下是几个常见的配置项及其作用说明: - 设置绑定地址和监听端口: ```xml <property> <name>hive.server2.thrift.bind.host</name> <value>192.168.1.10</value> </property> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> ``` 上述 XML 片段指定了服务运行的具体 IP 地址与通信端口号[^2]。 - 如果需要支持高可用架构,则可通过 Zookeeper 来管理多个节点间的协调工作。下面是一条典型的 Beeline CLI 连接字符串实例演示了如何利用 ZK 提供的服务发现功能: ```plaintext !connect jdbc:hive2://centos-1:2181,centos-2:2181,centos-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2?tez.queue.name=hive1&hive.server2.thrift.resultset.serialize.in.tasks=true ``` 当成功建立链接后,终端应该显示类似于这样的日志消息:“Connected to: Apache Hive (version 2.1.1)” 表明当前已接入目标数据库引擎版本号为 2.1.1 的服务器进程[^3]。 #### 4. 用户代理权限控制 为了让特定用户能够在不同机器之间切换身份完成作业提交任务,还需要额外声明允许哪些主体具备跨域操作的能力。这里给出了一组通用样例用于授予根账户(`root`)完全信任关系以及其他普通成员有限度内的许可范围扩展可能性: ```xml <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property> ``` 以上片段赋予了 hadoop 和 root 用户广泛的主机列表及组集合访问权限[^4]。 ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值