linux下安装hive

来源:互联网 发布:flowing软件 编辑:程序博客网 时间:2024/05/03 12:45
首先前提是安装好了jre和hadoop,并且保证hadoop可以正常启动。


一、安装hive

http://www.apache.org/dyn/closer.cgi/hive/中下载你所需的版本。

笔者hadoop是0.20,hive选hive-0.10.0/

tar -xf hive-x.y.z.tar.gz(本次安装为hive-0.10.0.tar.gz)
将解压后的hive-0.10.0文件放在系统的/home/opt/中。
配置环境变量:
在/etc/profile中添加:

export HIVE_HOME=/opt/hive-0.10.0

export PATH=$HIVE_HOME/bin:$PATH

修改hive-0.10.0目录下/conf/hive-env.sh.template中的HADOOP_HOME为实际的Hadoop安装目录:/home/opt/hadoop-0.20.205.0。
在HDFS中创建/tmp和/user/hive/warehouse并设置权限:
#hadoop fs -mkdir /tmp
#hadoop fs -mkdir /user/hive/warehouse
#hadoop fs -chmod g+w /tmp
#hadoop fs -chmod g+w /user/hive/warehouse

将conf/hive-default.xml.template复制两份,分别命名为hive-default.xml(用于保留默认配置)和hive-site.xml(用于个性化配置,可覆盖默认配置),
hive-site.xml主要配置项如下:
hive.metastore.warehouse.dir:数据存放目录
hive.exec.scratchdir:临时文件目录

hive.querylog.location: hive query logs存放目录,每个session一个文件



二、启动hive:
$ hive(第一次启动报错了,修改hive-site.xml文件中对应的description等结束标识就可以了)
hive> show tables;
OK
Time taken: 3.496 seconds
执行成功。
(可根据https://cwiki.apache.org/confluence/display/Hive/GettingStarted中的指引使用hive自带的数据来建表进行测试)
依据https://cwiki.apache.org /confluence/display/Hive/GettingStarted中的方法建表并进行查询,使用select * from pokes查询成功,但只查询表中某一项时却报错(若查询成功说明你的mapreduce没有问题,可跳过下列的报错分析):


三、安装mysql

•apache Derby是一个完全用java编写的数据库,所以可以跨平台,但需要在JVM中运行
•Derby是一个Open source的产品,基于Apache License 2.0分发
•即将元数据存储在Derby数据库中,也是Hive默认的安装方式
但是这样安装的元数据保持在内嵌的数据库Derby中,只能允许一个会话连接,如果要支持多用户多会话,则需要一个独立的元数据库,目前比较流行的是使用MySQL,下面进行配置。
1)安装MySQL服务器并启动MySQL服务http://wadefall.iteye.com/admin/blogs/1209545
2)为Hive建立相应的MySQL帐号,并赋予足够的权限
进入MySQL控制台:
  1. mysql -uroot -p  

建立hive帐号
  1. CREATE USER 'hive' IDENTIFIED BY 'hive';  

赋予权限
  1. GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;  

用hive帐号测试远程登录
  1. mysql -h localhost -u hive -p  

3) 建立Hive专用的元数据库
  1. create database hive  

4)在本地安装MySQL客户端

5)在Hive的conf目录下修改配置文件hive-site.xml(如果没有该文件,复制hive-default.xml并改名为hive-site.xml),配置文件修改如下,红色部分为修改内容
  1. <<>property>  

  2.  <<>name>javax.jdo.option.ConnectionURL<<>name>  

  3.  <<>value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true<<>value>  

  4.  <<>description>JDBC connect string for a JDBC metastore<<>description>  

  5. <<>property>  

  6.  

  7. <<>property>  

  8.  <<>name>javax.jdo.option.ConnectionDriverName<<>name>  

  9.  <<>value>com.mysql.jdbc.Driver<<>value>  

  10.  <<>description>Driver class name for a JDBC metastore<<>description>  

  11. <<>property>  

  12.  

  13. <<>property>  

  14.  <<>name>javax.jdo.option.ConnectionUserName<<>name>  

  15.  <<>value>root<<>value>  

  16.  <<>description>username to use against metastore database<<>description>  

  17. <<>property>  

  18.  

  19. <<>property>  

  20.  <<>name>javax.jdo.option.ConnectionPassword<<>name>  

  21.  <<>value>root123<<>value>  

  22.  <<>description>password to use against metastore database<<>description>  

  23. <<>property>  

6)把MySQL的JDBC驱动包(我使用的是mysql-connector-java-5.1.16-bin.jar)复制到Hive的lib目录下。
7)启动Hive shell,执行
  1. show tables;  


如果不报错,表明基于独立元数据库的Hive已经安装成功了。

查看一下元数据的效果。
在Hive上建立数据表
  1. CREATE TABLE my(id INT,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t';  

  1. show tables;  

  1. select name from my;  

然后我们以刚刚建立的hive帐号登录MySQL查看元数据信息。
引用
mysql> use hive
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;
+-----------------+
| Tables_in_hive  |
+-----------------+
| BUCKETING_COLS  |
| COLUMNS         |
| DATABASE_PARAMS |
| DBS             |
| PARTITION_KEYS  |
| SDS             |
| SD_PARAMS       |
| SEQUENCE_TABLE  |
| SERDES          |
| SERDE_PARAMS    |
| SORT_COLS       |
| TABLE_PARAMS    |
| TBLS            |
+-----------------+
13 rows in set (0.00 sec)

mysql> select * from TBLS;
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+
| TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER  | RETENTION | SD_ID | TBL_NAME | TBL_TYPE      | VIEW_EXPANDED_TEXT | VIEW_ORIGINAL_TEXT |
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+
|      1 |  1319445990 |     1 |                0 | hadoop |         0 |     1 | my       | MANAGED_TABLE | NULL               | NULL               |
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+
1 row in set (0.00 sec)

在TBLS中可以看到Hive表的元数据。



四、Hive web service,Hive web接口,启动方法:
https://cwiki.apache.org/confluence/display/Hive/HiveWebInterface

  1. export ANT_LIB=$ANT_HOME/lib  

  1. hive --service hwi  

然后打开http://ip:9999/hwi/就能看到Hive的web页面。

该文章转载自http://www.jcoom.com/article/71
原创粉丝点击