解压编译出来的hive安装包
cd /usr/local/
tar -xf /tmp/apache-hive-1.1.0-cdh5.7.1-bin.tar.gz
ln -s apache-hive-1.1.0-cdh5.7.1-bin hive
chown hadoop: apache-hive-1.1.0-cdh5.7.1-bin -R
chown hadoop: hive -R
echo 'export HIVE_HOME=/usr/local/hive'>>/etc/profile
echo 'export PATH=$HIVE_HOME/bin:$PATH'>>/etc/profile
配置mysql连接文件
su - hadoop
cd /usr/local/hive
cd conf
cp -av hive-env.sh{.template,}
echo 'HADOOP_HOME=/usr/local/hadoop'>>hive-env.sh
vi hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop001:3306/_hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
</configuration>
# 配置文件中使用主机名hadoop001
# 因此要保证/etc/hosts文件中有正确的解析
# 配置文件hive-site.xml使用了java的mysql驱动包
# 而编译的hive安装包中没有该驱动包
# 需要手动上传
cd /tmp
unzip mysql-connector-java-5.1.45.zip
cd mysql-connector-java-5.1.45
cp mysql-connector-java-5.1.45-bin.jar /usr/local/hive/lib/
配置日志
cd /usr/local/hive/conf/
cp -av hive-log4j.properties{.template,}
sed -i 's#^hive.log.dir=.*#hive.log.dir=/usr/local/hive/log#g' hive-log4j.properties
4. 命令测试
(这里有坑,我用的是别人的文档,而且参考两份,在my.cnf中需要配置文件。并且,这里会有权限问题,需要加可读权限。也就是将mysql中的date文件添加组和权限给hadoop用户。)
hive
show databases;
exit;
# 能够正常进入命令行不报错
# 能够查看到defalut库
# 代表配置成功
echo show databases|mysql -uroot -proot# 发现库自动创建,表示配置无误
5. 建表测试
hive
create table helloworld(id int,name string) row format delimited fields terminated by '\t';
show databases;
use default;
show tables;
desc helloworld;
select * from helloworld;
exit;
# 使用建表语句创建了一个表
# 可以查看default库的表,找到该表
# 同时可以在mysql库中查询到该表的信息
mysql -uroot -pvincent -Dvincent_hive
select * from TBLS \G
exit;
# 表名大小写是敏感的
hdfs dfs -ls /user/hive/warehouse
# 查看hdfs的目录信息,发现已经创建了该表的目录
# 编辑一个文件,上传到该目录下,再次在hive中使用SQL就能查询出来信息了
echo -e "1\tzhangsan\n2\tlisi\n3\twangwu">>/tmp/helloworld.txt
hive
load data local inpath '/tmp/helloworld.txt' into table helloworld;
select * from helloworld;
select id from helloworld;
select count(1) from helloworld;
exit;
# 在hive中使用load命令,将本地的一个文本文件上传到hdfs的helloworld表对应的目录下
# 使用 select count(1) 聚集函数,会生成MR任务
# 可以在 http://192.168.1.10:8088/cluster/apps 查看到