Alex 的 Hadoop 菜鸟教程: 第10课 Hive 安装和使用教程

本文是Alex的Hadoop菜鸟教程第10课,主要讲解Hive的安装和使用。通过实例介绍了Hive如何安装配置,包括三种Hive metastore服务模式,特别是使用MySQL作为metastore数据库的步骤。还详细阐述了Hive的启动、测试、建表语句及查询语法等基本操作,适合初学者入门。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原帖地址: http://blog.csdn.net/nsrainbow/article/details/41748863 最新课程请关注原作者博客

声明

  • 本文基于Centos 6.x + CDH 5.x

Hive是什么

Hive 提供了一个让大家可以使用sql去查询数据的途径。让大家可以在hadoop上写sql语句。但是最好不要拿Hive进行实时的查询。因为Hive的实现原理是把sql语句转化为多个Map Reduce任务所以Hive非常慢,官方文档说Hive 适用于高延时性的场景而且很费资源。

举个简单的例子,可以像这样去查询

hive> select * from h_employee;
OK
1	1	peter
2	2	paul
Time taken: 9.289 seconds, Fetched: 2 row(s)

这个h_employee不一定是一个数据库表,有可能只是一个针对csv文件的元数据映射。

Hive 安装

相比起很多教程先介绍概念,我喜欢先动手装上,然后用例子来介绍概念。我们先来安装一下Hive

先确认是否已经安装了对应的yum源,如果没有照这个教程里面写的安装cdh的yum源http://blog.csdn.net/nsrainbow/article/details/36629339


hive 基本包

yum install hive -y

hive metastore

yum install hive-metastore

hive服务端

yum install hive-server2 -y

如果要跟hbase通讯就安装 hive-hbase

yum install hive-hbase -y

Hive metastore 服务

3种模式

hive metastore(元数据) 服务用来存储 Hive 表的元数据和分区。下面会介绍metastore的概念,现在先搞定安装再说。hive 存储 metastore有3种模式
内置存储模式
内置存储

用的是derby作为数据库,但是这个derby很挫啊,一个纯java的数据库,同时只能有一个会话,存粹测试玩玩。所以我们说下第二种模式
本地存储模式

在这种模式下,hive metastore 服务跟HiveServer进程共用一个进程,但是会另起一个线程来运行元数据数据库,这个线程有可能在另外一个机器上。内置的metastore服务跟metastore数据库之间通过JDBC交互。比上一个方案更进一步了,但是还是不够好,因为hive metastore跟HiveServer还共用一个进程呢,于是来介绍下CDH强烈推荐的第三种模式

远程模式



在这种模式下,Hive metastore 服务运行在独立的jvm进程里面。 HiveServer2, HCatalog, Cloudera Impala™, 和其他进程通过 Thrift 的网络 API (在 hive.metastore.uris 属性里面配置)来跟它通讯。metastore 服务跟存储 metastore 的数据库之间通过JDBC (用 javax.jdo.option.ConnectionURL 属性配置)通讯. 数据库 , HiveServer 进程,和 metastore 服务可以运行在同一个机子上,但是如果把 HiveServer进程运行在另一台机器上会更高的可用性(就是不要把鸡蛋放在一个篮子里啦)和扩展性。

使用mysql作为metastore数据库

我们选择mysql作为metastore的数据库
安装mysql
如果你的机器上已经安装过mysql可以跳过这一步
yum install mysql-server
启动服务
service mysqld start
添加到自启动
chkconfig mysqld on
初始化mysql的一些参数,比如root用户的密码等
$ sudo /usr/bin/mysql_secure_installation
[...]
Enter current password for root (enter for none):
OK, successfully used password, moving on...
[...]
Set root password? [Y/n] y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
[...]
Disallow root login remotely? [Y/n] N
[...]
Remove test database and access to it [Y/n] Y
[...]
Reload privilege tables now? [Y/n] Y
All done!


安装mysql JDBC驱动
$ sudo yum install mysql-connector-java
$ ln -s /usr/share/java/mysql-connector-java.jar /usr/lib/hive/lib/mysql-connector-java.jar

第二步是把驱动建立一个软链到hive的lib库里面,让hive可以加载

创建metastore需要的用户和库
创建metastore库
$ mysql -u root -p
Enter password:
mysql> CREATE DATABASE metastore;
mysql> USE metastore;
mysql> SOURCE /usr/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-0.13.0.mysql.sql;
创建hive用户
官方给的例子是
mysql> CREATE USER 'hive'@'metastorehost' IDENTIFIED BY 'mypassword';
...
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'hive'@'metastorehost';
mysql> GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'metastorehost';
mysql> FLUSH PRIVILEGES;

这边metastorehost换成你metastore的机器的host名字,mypassword换成你想设定的密码
在本例子中是这样
mysql> CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'hive'@'%';
mysql> GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'%';
mysql> FLUSH PRIVILEGES;
mysql> quit;

配置hive

编辑 /usr/lib/hive/conf/hive-site.xml
  • 假设你安装m
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值