hive编译安装与元数据更改

1.前言

在装好hadoop的基础之上,我们就可以安装hive了,hive是个数据仓库,它提供一种类似SQL的叫HiveQL简称HQL的查询语言,同时当逻辑在HQL中不方便或效率很低时,hive还支持嵌入传统的自定义的mapper和reducer。

Hive官方图像如下:


2.下载

网址为https://github.com/apache/hive

我使用的是hive0.10.0下载地址为https://github.com/apache/hive/tree/branch-0.10

大家可以用git下载或者点右边的下载zip

3.编译

我用的hive-branch-0.10,进入该文件夹后运行ant package即可,可能会报缺工具的错误,按照上面提示,缺什么安装什么就是,centos命令式yum install ???

我把hive放在/opt/下

编译成功后得到的/opt/hive-branch-0.10/build/dist就是可以执行的hive编译后文件

4.安装

4.1配置环境变量

切换到hadoop用户

vi ~/.bashrc

加上这些:

export HIVE_HOME=/opt/hive-branch-0.10/build/dist
export PATH=$PATH:$HADOOP_HOME/bin:$HIVE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$HIVE_HOME/lib:$jAVA_HOME/lib/tools.jar

然后. ~/.bashrc

4.2运行

别忘记把hadoop的服务启动起来先

然后测试一下是否能运行

[hadoop@arionvm1 conf]$ hive
Logging initialized using configuration in file:/opt/hive-branch-0.10/build/dist/conf/hive-log4j.properties
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201405151631_1098734951.txt

hive> show tables;

如果能运行会显示OK

在本地创建一个文件iphone,内容为

1 thangool
2 thank
3 thanks
4 good
5 google

我们用这个数据测试一下其他操作

hive> create table iphone (id int,owner string) row format delimited fields terminated by ' ';

hive> load data local inpath 'iphone' into table iphone;

hive> select * from iphone; 
然后输入exit;或者quit;退出

5.修改元数据

5.1mysql部分

如果读者能成功跑完,就会发现在当前目录下多了derby.log和metastore_db文件夹

hive默认使用derby存储元数据,这种方式如果换个目录运行就找不到原来的元数据了,会新建一个,并且不支持多个hive用户一起读取元数据,所以我们下一步就是要将元数据换为在mysql中存储。

首先安装mysql,在root用户下

yum -y install mysql

然后设置密码(默认无密码)

/usr/bin/mysqladmin -u root password '123456'
mysql -uroot -p123456

进入mysql命令行之后输入

insert into mysql.user(Host,User,Password) values (‘localhost’,’hadoop’,password(‘hadoop’));
create database hive;
grant all privileges on hive.* to hadoop@localhost identified by ‘hadoop’;
flush privileges;

然后把mysql-connector-java-5.1.27-bin.jar(可能你的和我的版本不同,这没有关系)放入hive的lib文件夹中,至于这个文件在哪,大家可以用find命令找一下,实在不行就从网上下一个。

5.2.hive部分

cp hive-default.xml.template hive-site.xml

在原来的模板中就有几处错误,就括号没有匹配,还有注释有点问题,运行hive,看报哪一行有错,用set nu翻到那一行,进行更改,直到可以运行hive为止。

然后找到相应位置作修改

<property>
 <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://arionvm1:3306/hive</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hadoop</value>
  <description>username to use against metastore database</description>
</property>

<property>
 <name>javax.jdo.option.ConnectionPassword</name>
 <value>hadoop</value>
</property>
其中URL要改下,我写的是arionvm1


<property>
  <name>hive.stats.dbclass</name>
  <value>jdbc:mysql</value>
  <description>The default database that stores temporary hive statistics.</description>
</property>

<property>
  <name>hive.stats.jdbcdriver</name>
  <value>com.mysql.jdbc.Driver</value>
  <description>The JDBC driver for the database that stores temporary hive statistics.</description>
</property>

<property>
  <name>hive.stats.dbconnectionstring</name>
  <value>jdbc:mysql://arionvm1:3306/hive</value>
  <description>The default connection string for the database that stores temporary hive statistics.</description>
</property>
我还改了以上三处,看到有人没改,我试过,如果没改的话执行某些语句不会生成derby文件,也就是说完全用的是mysql,可是如果执行某些特定语句的话还是会生成derby文件,也就是还与derby有关,所以这三处也建议改一下。

这篇文章一部分是我由记忆写出来的,如果有错误欢迎留言,我运行下看看到底哪里出了问题,有什么疑问也欢迎提出。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值