首先前提是安装好了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
•a
pache 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控制台:
建立hive帐号
-
CREATE USER 'hive' IDENTIFIED BY 'hive';
赋予权限
-
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;
用hive帐号测试远程登录
-
mysql -h localhost -u hive -p
3) 建立Hive专用的元数据库
4)在本地安装MySQL客户端
5)在Hive的conf目录下修改配置文件hive-site.xml(如果没有该文件,复制hive-default.xml并改名为hive-site.xml),配置文件修改如下,红色部分为修改内容
-
<<>property>
-
<<>name>javax.jdo.option.ConnectionURL<<>name>
-
<<>value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true<<>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>root<<>value>
-
<<>description>username to use against metastore database<<>description>
-
<<>property>
-
-
<<>property>
-
<<>name>javax.jdo.option.ConnectionPassword<<>name>
-
<<>value>root123<<>value>
-
<<>description>password to use against metastore database<<>description>
-
<<>property>
6)把MySQL的JDBC驱动包(我使用的是mysql-connector-java-5.1.16-bin.jar)复制到Hive的lib目录下。
7)启动Hive shell,执行
如果不报错,表明基于独立元数据库的Hive已经安装成功了。
查看一下元数据的效果。
在Hive上建立数据表
-
CREATE TABLE my(id INT,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
然后我们以刚刚建立的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
-
export ANT_LIB=$ANT_HOME/lib
然后打开http://ip:9999/hwi/就能看到Hive的web页面。
该文章转载自http://www.jcoom.com/article/71