试着安装了一下hive,在这里记录一下过程
你们都知道hive是用来简化map-reduce过程的,可是真正使用的时候却跟想象中有差距java
单机版安装过程以下:
首先确保已经安装好了hadoop, hdfs能够正常使用
下载hive:http://apache.stu.edu.tw/hive/
确保下载的是安装包而不是源码包
而后解压安装包
配置环境变量/etc/profile:mysql
export HIVE_HOME=/datapool/fengkai/hive/ export PATH=$PATH:$HIVE_HOME/bin export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib
配置hive-env.sh,添加hadoop_home:sql
HADOOP_HOME=/path/hadoop
配置hive-site.xml:数据库
首先要在mysql数据库里面建立hive数据库, 用来存储hive的元数据 至于数据库是安装在本机仍是其余机器是均可以的 而后配置相关的内容: <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://mysqlhost: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.ConnectionPassword</name> <value>password</value> <description>password to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>username</value> <description>Username to use against metastore database</description> </property>
这些都是在hive中须要对数据库进行的配置
其中还有一处须要处理,就是一些system path的处理
在默认的hive-site.xml的默认配置中有这样的配置:apache
<property> <name>hive.exec.local.scratchdir</name> <value>${system:java.io.tmpdir}/${system:user.name}</value> <description>Local scratch space for Hive jobs</description> </property>
这里的${system:java.io.tmpdir}/${system:user.name}是须要本身修改的,否则启动服务的时候会出错
都配好以后,直接运行hive就能够进入到hive的交互界面了
hive建表语句:数据结构
create table test (id int, name string) row format delimited fields terminated by ',' stored as textfile 跟数据库建表语句很像, 其中上面的语句中指出了导入文件的时候须要用','作间隔, 也能够指定其余间隔符
hive导入数据和查询:oop
lc.txt 1,hello 2,cxy hive> load data local inpath '/localpath/lc.txt' hive> select * from test; OK 1 hello 2 cxy 可见就能够正常查询和统计了
最后写一点总结,其实hive在导入数据的时候也是须要先将数据结构化成指定的格式再导入
而后使用hive统计的时候可以看到hive是把语句转化成了map-reduce的语句格式使用的
使用hive确实可以方便统计的时候不用写mapreduce程序,不过仍是须要一步预处理的过程spa