`
ymq267
  • 浏览: 130314 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

hive 安装部署和Java客户端

阅读更多
(转自)http://blog.csdn.net/zhongguozhichuang/article/details/52702476

主要对Hive 安装配置进行介绍。

二、Hive 运行模式

与 Hadoop 类似,Hive 也有 3 种运行模式:

1. 内嵌模式

将元数据保存在本地内嵌的 Derby 数据库中,这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显,因为一个内嵌的 Derby 数据库每次只能访问一个数据文件,这也就意味着它不支持多会话连接。

2. 本地模式

这种模式是将元数据保存在本地独立的数据库中(一般是 MySQL),这用就可以支持多会话和多用户连接了。

3. 远程模式

此模式应用于 Hive 客户端较多的情况。把 MySQL 数据库独立出来,将元数据保存在远端独立的 MySQL 服务中,避免了在每个客户端都安装 MySQL 服务从而造成冗余浪费的情况。


三、下载安装 Hive

上节课程我们已经了解到,Hive 是基于 Hadoop 文件系统之上的数据仓库。因此,安装Hive之前必须确保 Hadoop 已经成功安装。(本次实验环境,已经为大家安装好了 Hadoop.)

本次实验,使用Hive V1.1.0版本。Hive V1.1.0 可以在 Hadoop V1.0.0 以上环境中工作。终端下输入命令来下载:

$ wget http://labfile.oss.aliyuncs.com/apache-hive-1.1.0-bin.tar.gz


下载完成后解压:

$ tar zxvf apache-hive-1.1.0-bin.tar.gz
解压出来的文件名很长,在终端下输入很麻烦,为了后面实验的方便,建议修改为较短文件名,例如:

$ mv apache-hive-1.1.0-bin hive
四、配置系统环境变量

修改 /etc/profile 文件,使用 sudo vim /etc/profile 来修改:

# Hive environment
export HIVE_HOME=/usr/local/hadoop/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH
五、内嵌模式

(1)修改 Hive 配置文件

$HIVE_HOME/conf 对应的是 Hive 的配置文件路径,类似于之前学习的HBase, 该路径下的 hive-site.xml 是 Hive 工程的配置文件。默认情况下,该文件并不存在,我们需要拷贝它的模版来实现:

$ cp hive-default.xml.template hive-site.xml
hive-site.xml 的主要配置有:



hive.metastore.warehouse.dir
该参数指定了 Hive 的数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下。
hive.exec.scratchdir
该参数指定了 Hive 的数据临时文件目录,默认位置为 HDFS 上面的 /tmp/hive 路径下。
同时我们还要修改 Hive 目录下 /conf/hive-env.sh 文件(请根据自己的实际路径修改),该文件默认也不存在,同样是拷贝它的模版来修改:

export HADOOP_HEAPSIZE=1024

# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/usr/local/hadoop

# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/usr/local/hadoop/hive/conf

# Folder containing extra ibraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=/usr/local/hadoop/hive/lib

(2)创建必要目录

前面我们看到 hive-site.xml 文件中有两个重要的路径,切换到 hadoop 用户下查看 HDFS 是否有这些路径:

$ hadoop dfs -ls /



没有发现上面提到的路径,因此我们需要自己新建这些目录,并且给它们赋予用户写(W)权限。

$ hadoop dfs -mkdir /user/hive/warehouse
$ hadoop dfs -mkdir /tmp/hive
$ hadoop dfs -chmod 777 /user/hive/warehouse
$ hadoop dfs -chmod 777 /tmp/hive
如果你遇到 no such file or directory 类似的错误,就一步一步新建目录,例如:

$ hadoop dfs -mkdir /tmp
$ hadoop dfs -mkdir /tmp/hive
检查是否新建成功 hadoop dfs -ls / 以及 hadoop dfs -ls /user/hive/ :


(3)修改 io.tmpdir 路径

同时,要修改 hive-site.xml 中所有包含 ${system:Java.io.tmpdir} 字段的 value 即路径(vim下 / 表示搜索,后面跟你的关键词,比如搜索 hello,则为 /hello , 再回车即可),你可以自己新建一个目录来替换它,例如 /home/hive/iotmp . 同样注意修改写权限。如果不修改这个,你很可能会出现如下错误


(4)运行 Hive

./hive



报错



.解决方法:/schematool -initSchema -dbType derby

报错



解决方法:rm -rf metastore_db/ 在初始化

前面我们已经提到过,内嵌模式使用默认配置和 Derby 数据库,所以无需其它特别修改,先 ./start-all.sh 启动 Hadoop, 然后直接运行 hive:

报错



解决方法:

create table test_table(id INT, username string);
show tables;

六、远程模式

1.下载Hive

http://apache.mirrors.ionfish.org/hive/

配置

vim hive-site.xml

<?xml version="1.0"?>
<configuration>
	
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://{ip:port}/{databases}</value>        => mysql服务的ip和端口号
	</property>
	<property>
		<name>javax.jdo.option.ConnectionDriveName</name>
		<value>com.mysql.jdbc.Driver</value>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionUserName</name>
		<value>{username}</value>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionPassword</name>
		<value>{password}</value>
	</property>
	<property>
		<name>hive.metastore.warehouse.dir</name>
		<value>/hive/warehouse</value>                      =>hive的仓库目录,需要在HDFS上创建,并修改权限
	</property>
	
	
</configuration>
...


2.启动metastore

[hadoop@hftclclw0001 bin]$ pwd
/home/hadoop/apache-hive-1.2.1-bin/bin

[hadoop@hftclclw0001 bin]$ ./hive --service metastore &

[hadoop@hftclclw0001 bin]$ ps ax|grep metastore
...
...

在debug模式下开启metastore :
执行hive --service metastore -hiveconf hive.root.logger=DEBUG,console


3.启动HiveServer2

[hadoop@hftclclw0001 bin]$ pwd
/home/hadoop/apache-hive-1.2.1-bin/bin

[hadoop@hftclclw0001 bin]$ ./hive --service hiveserver2 &

[hadoop@hftclclw0001 bin]$ ps ax|grep HiveServer2
...
.
4.启动客户端
./hive -- service cli



5.启动shell 或是 beeline

beeline -u jdbc:hive2://master:10000


七、Java客户端


1.默认用户名和密码为空

2.默认端口10000,如果连不上须关闭防火墙



vim /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 10000 -j ACCEPT
service iptables restart

错误

org.apache.hive.service.cli.HiveSQLException: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate anonymous
at org.apache.hive.jdbc.Utils.verifySuccess(Utils.java:264)
at org.apache.hive.jdbc.Utils.verifySuccess(Utils.java:255)
at org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:593)
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:172)
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:107)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.car.test.HiveJdbcCli.getConn(HiveJdbcCli.java:156)
at com.car.test.HiveJdbcCli.main(HiveJdbcCli.java:35)

解决方法:


修改hadoop 配置文件 etc/hadoop/core-site.xml,加入如下配置项

<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

重启hadoop
测试:./beeline -u 'jdbc:hive2://localhost:10000/userdb' -n username(替换为上述的用户名部分)


错误

java.sql.SQLException: org.apache.thrift.transport.TTransportException: SASL authentication not complete
at org.apache.hive.jdbc.HiveStatement.closeClientOperation(HiveStatement.java:211)
at org.apache.hive.jdbc.HiveStatement.close(HiveStatement.java:228)
at com.car.test.HiveJdbcCli.main(HiveJdbcCli.java:74)
Caused by: org.apache.thrift.transport.TTransportException: SASL authentication not complete


解决办法:

This is because the thrift server is expecting to authenticate via SASL when you open your transport connection. Hive Server 2 defaults to using SASL - unfortunately, PHP lacks a version of TSaslClientTransport (which is used as a wrapper around another TTransport object) which handles the SASL negotiation when you open your transport connection.

The easiest solution for now is to set the following property in your hive-site.xml

<property><name>hive.server2.authentication</name><value>NOSASL</value></property>
分享到:
评论

相关推荐

    04-Hive安装部署及运维使用.pdf

    Hive的安装部署涉及对Hive组件的配置和高可用部署。Hive组件包括HiveServer2,它支持通过Thrift API进行远程访问。为了保证HiveServer2的高可用性,通常需要设置多个实例并配合负载均衡器。 此外,在Hive的使用中,...

    hbase:实验一-Hive3安装与部署.pdf

    - **Beeline**:它是Hive的Java客户端,支持HiveServer2协议,提供更高效的SQL执行体验。 - **Spark**:Spark是一个快速、通用且可扩展的数据处理框架,可以作为Hive的执行引擎,提高查询性能。 在实验过程中,注意...

    Hive安装与配置

    - 支持多种部署模式,如嵌入式和客户端/服务器模式。 - 提供了完整的SQL支持。 ##### 2. 安装步骤 - **解压Hive**: ```bash tar zxvf hive-0.8.1.tar /home/test/Desktop ``` - **建立软链接**: ```bash ...

    Hive安装配套资源.zip

    例如,你可以在这里设置`HADOOP_HOME`(指向你的Hadoop安装目录)、`JAVA_HOME`(指向Java的安装路径)、`HIVE_CONF_DIR`(指向Hive配置文件所在的目录)等。此外,还可以配置Hive的内存使用情况,如`HADOOP_HEAP...

    8.Hadoop入门进阶课程_第8周_Hive介绍和安装部署.pdf

    根据提供的文件信息,以下是有关Hadoop入门进阶课程中Hive介绍和安装部署的知识点: 1. Hive介绍: - Hive是Facebook开发的数据仓库工具,运行于Hadoop集群之上。 - 提供类SQL的HQL(Hive Query Language)查询...

    Hive安装所需软件文件压缩包(包括Hive,Mysql以及依赖包).rar

    在Hive的安装过程中,涉及到的主要软件包括Hive本身、MySQL连接器以及MySQL服务器和客户端。下面将详细介绍这些组件及其作用。 1. Hive Hive是Apache Software Foundation开发的一个数据仓库工具,它允许用户使用...

    hive_medo_java_hive_

    Java是Hive的主要编程语言,用于编写Hive的UDF(User Defined Functions)和自定义处理逻辑。 本文将深入探讨Hive在实际应用中的案例,以及如何结合Java来增强Hive的功能。 1. **Hive数据仓库架构**: Hive构建在...

    hive-1.1.0-cdh5.14.2.tar.gz和mysql-connector-java-5.1.38.jar连接包

    在实际操作中,用户需要安装和配置Hadoop、CDH环境,然后解压并安装Hive,配置好元数据存储指向MySQL,最后将`mysql-connector-java-5.1.38.jar`添加到Hive的类路径中,这样就能使用Hive与MySQL进行交互,实现高效的...

    Hive安装包、安装文档

    这个压缩包包含了Hive的安装包以及相关的安装文档,这意味着我们可以在这个资源中找到构建和操作Hive所需的所有基本元素。 首先,我们看到有`mysql-connector-java-5.1.17.jar`文件,这是MySQL的Java连接器,用于在...

    jdbc hive相关jar包

    12. **多版本并发控制**: 如果Hive部署在多用户环境中,理解Hive的MVCC(多版本并发控制)机制将有助于优化并发性能。 13. **安全性**: Hive JDBC支持认证和授权,例如Kerberos、LDAP等,确保只有授权用户能访问...

    hive驱动包hive-jdbc-uber-2.6.5.0-292.jar(用户客户端连接使用)

    **Hive JDBC驱动**是Apache Hive提供的一种Java数据库连接(JDBC)驱动,遵循Java的JDBC规范,使得Java应用程序可以如同操作关系型数据库一样操作Hive。这个驱动允许用户通过编写SQL语句或者使用类似JDBC的API来连接...

    hive安装包Linux包

    Hive是Apache软件基金会开发的一个数据仓库工具,它允许用户使用SQL-like查询语言(HQL)来处理存储在Hadoop分布式文件系统...了解Hive的基本概念、安装步骤以及集群部署的注意事项,是高效利用Hive处理大数据的基础。

    java大数据案例_6Hive、Kettle

    #### 安装部署Hive **知识点概述:** 本案例涉及的关键技术包括Hive的安装与配置、Hive的基本操作以及Hive与MapReduce的集成使用。Hive是一种数据仓库工具,可以方便地对存储在Hadoop中的大量数据集进行数据提取、...

    hadoop中使用的hive包

    在Hadoop和Hive的场景中,jar包不仅包含编译后的Java类,还可能包括配置文件、资源文件等,以支持Hive的完整功能。 在压缩包子文件的文件名称列表中,虽然没有具体列出每个文件,但可以假设这里包含了一系列与Hive...

    大数据系列-Hive入门与实战.pptx

    * JDBC 客户端:封装了 Thrift,java 应用程序,可以通过指定的主机和端口连接到在另一个进程中运行的 Hive 服务器 * ODBC 客户端:ODBC 驱动允许支持 ODBC 协议的应用程序连接到 Hive * WUI 接口:是通过浏览器访问...

    Hive2Hive-master.rar

    在Java中,Socket类和ServerSocket类分别用于客户端和服务端的通信建立。 2. **Hive数据同步需求**: 在大数据环境中,数据的实时同步是非常关键的。例如,当一个Hive集群中的数据发生变化时,可能需要将这些变化...

    hive-jdbc-uber-2.6.5.0-292.jar

    Hive JDBC允许Java应用作为客户端,与远程Hive服务端建立连接,执行SQL语句,包括创建表、加载数据、执行查询等操作。它提供了标准的JDBC接口,使得开发者可以使用熟悉的SQL语法与Hive进行交互,极大地简化了Hadoop...

    Java连接Hadoop hive数据库jar包合集

    Java连接Hadoop Hive数据库涉及到多个技术栈的交互,包括Java编程、Hadoop分布式文件系统(HDFS)、Hive数据仓库服务以及相关库的配置。在提供的压缩包文件中,我们看到一系列与这些技术相关的jar包,它们是实现Java...

    大数据安全-kerberos技术-hive安装包,hive版本:apache-hive-3.1.3-bin.tar.gz

    5. **客户端配置**:在需要连接Hive的客户端机器上,也需要进行Kerberos配置,包括安装Kerberos客户端,设置环境变量,如`KRB5_CONFIG`和`JAVA_OPTS`,以及将服务密钥tab文件添加到客户端的Kerberos配置中。...

    Apache-Hive-Cookbook

    综上所述,《Apache-Hive-Cookbook》这本书涵盖了从部署配置 Hive 到使用其客户端和服务的各个方面,同时还深入介绍了如何理解和利用 Hive 的数据模型。对于希望深入了解和高效使用 Hive 的开发者来说,这些知识点...

Global site tag (gtag.js) - Google Analytics