1)下载hive
HIVE只需在Master节点中安装和配置即可。
所以版本是hive-0.7.1,已安装的hadoop版本为hadoop-0.20.204.0,解压到master节点上的/usr/local/hadoop/contrib目录
解压
- [root@master:hadoop]$ tar zxvf hive-0.7.1.tar.gz [root@master:hadoop]$mv hive-0.7.1 contrib/hive
2)配置hive
1.修改bin/hive-config.sh,添加jdk支持
- export JAVA_HOME=/usr/local/jdk export HIVE_HOME=/usr/local/hadoop/contrib/hive export HADOOP_HOME=/usr/local/hadoop
2.在HDFS中创建目录,并且将其开放g+w模式
- [root@master:hadoop]$bin/hadoop fs –mkdir /tmp [root@master:hadoop]$bin/hadoop fs –mkdir /user/hive/warehouse [root@master:hadoop]$bin/hadoop fs –chmod g+w /tmp [root@master:hadoop]$bin/hadoop fs –chmod g+w /user/hive/warehouse
经过试验,以上创建目录的步骤是可以省略的,Hive会自动创建需要的目录 。
浏览器输入http://master:50070 进行查看,点击Browser the filesystem进入,点击user 会看到hive链接,点击进去就能看到数据表。
3. 修改conf/hive-default.xml,这个是hive的关键配置,所以一般不要直接修改,拷贝hive-default.xml为hive-site.xml文件,将修改的内容在这个里面配置。本人为mysql数据库存储hive 的元数据,所以做如下修改:
- <property>
- <name>javax.jdo.OPTION.ConnectionURL</name>
- <value>jdbc:mysql://localhost:3306/hivedb?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>hiveuser</value>
- <description>username TOUSE against metastore database</description>
- </property>
- <property>
- <name>javax.jdo.OPTION.ConnectionPassword</name>
- <value>hiveuser</value>
- <description>password TOUSE against metastore database</description>
- </property>
4.下载mysql连接驱动包,否则会报错:error creating transactional connection。本文下载的为mysql-connector-java-5.0.8-bin.jar文件,并放到$HIVE_HOME/lib目录下,这时HIVE已经全部配置完了。
3)运行hive
- [root@master:hadoop]$bin/hive
- Hive history file=/tmp/root/hive_job_log_root_201202181057_361521373.txt hive>
有时会报warning:please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
在Hive官方文档中重点提到了Hive的日志配置$HIVE_HOME/conf/hive-log4j.properties,虽然不是必要更改的配置文件,但合理的设置会对我们有一定的帮助,具体配置方法可见官方文档。
4)测试hive
1.创建数据表
- hive> create table tb( id int, name string);
- OK Time taken: 5.112 seconds
默认是使用输入格式(input format)为text ,分割符号使用^A(ctrl-a).
2.创建分区的数据表
- hive> CREATE table tb2 (foo int, bar string) partitioned by (ds string);
- OK Time taken: 31.243 seconds
包含2列和一个分区列(ds)。分区列是一个虚拟列。它不是数据自身的一部分,但是由它得到分区,详细数据加载到里面.
3.显示数据表
显示所有的数据表
- show tables;
只显示以's'结尾的数据表
- show tables '.*s';
查询数据
- select * from tb;
4.从本地加载数据
- hive> load data local inpath './files/tb.txt' overwrite into table tb;
这个文件位于hive的安装目录下 files/tb.txt
5.从hdfs加载数据
- load data inpath '/input/files/tb.txt' overwrite into table tb;
去掉LOCAL ,就是从HDFS加载
关键字OVERWRITE意味着,数据表已经存在的数据将被删除。省略OVERWRITE,数据文件将会添加到原有数据列表里
删除数据表:drop table tb;
5)Heap size设置
Hive默认-Xmx4096m
修改hive/bin/ext/util/ execHiveCmd.sh
HADOOP_HEAPSIZE=256
6)启动Hive Thrift Server
- hive --service hiveserver
默认使用10000端口,也可以使用HIVE_PORT来指定端口
- [mars@master hive]$ bin/hive --service hiveserver --help usage HIVE_PORT=xxxx ./hive --service hiveserver HIVE_PORT : Specify the server port
7)启动hwi
- bin/hive --service hwi
http://masterIp:9999/hwi即可访问网络接口
取消日志的方式:
- nohup bin/hive --service hwi > /dev/null 2> /dev/null &