Hive安装&初体验

来源:互联网 发布:js导出excel 数字格式 编辑:程序博客网 时间:2024/06/01 08:15

下载&解压

从这个地址下载Hive1.2.1 https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-1.2.1/apache-hive-1.2.1-bin.tar.gz

然后使用下面的命令解压到指定目录下面:

tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /root/apps/

然后使用下面的命令改一下名字:

mv apache-hive-1.2.1-bin hive-1.2.1

安装MySQL

MySQL用于存储Hive的元数据,不建议使用Derby作为Hive的元数据库,因为它的数据文件默认保存在运行目录下面,下次换一个目录启动就看不见之前的数据了。

我这边已经装好了,如果需要安装可以参考http://www.cnblogs.com/liuchangchun/p/4099003.html,记得配置远程登录。

修改配置文件

使用下面的命令来创建配置文件:

vim /root/apps/hive-1.2.1/conf/hive-site.xml

粘入如下内容:

<configuration>    <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>sorry</value>        <description>password to use against metastore database</description>    </property></configuration>

拷贝Jar包

没有mysql-connector-java.jar的可以去http://download.csdn.net/detail/u014436218/7217805下载。

将刚下载下来的mysql-connector-java-5.1.30-bin.jar拷贝到hive的lib目录下面去。

启动Hive

启动Hive之前需要先把Hadoop集群启动起来。然后使用下面的命令来启动Hive:

/root/apps/hive-1.2.1/bin/hive

出现如下的提示符即表示启动成功:

hive>

验证Hive运行正常

启动Hive以后输入下面的命令:

hive> show databases;

输出为:

OKdefaultTime taken: 1.029 seconds, Fetched: 1 row(s)

创建数据库

使用下面的命令来创建一个数据库:

create database test_db;

输出结果如下:

OKTime taken: 0.216 seconds

数据库的数据文件被存放在HDFS的/user/hive/warehouse/test_db.db下面

创建表

使用下面的命令来创建一个表:

use test_db;create table t_test(id int,name string);

输出结果如下:

OKTime taken: 0.237 seconds

表的数据文件被存放在HDFS的/user/hive/warehouse/test_db.db/t_test下面

插入数据

接下来,我们来导入一些数据到表里面。

准备下面的数据文件,sz.data。文件内容如下:

1,张三2,李四3,风凌4,三少5,月关6,abc

然后使用下面的命令把文件上传到hdfs上面:

hadoop fs -put sz.data /user/hive/warehouse/test_db.db/t_test/sz.data

然后使用下面的语句尝试进行一下查询:

select * from t_test;

输出的结果如下:

OKNULL    NULLNULL    NULLNULL    NULLNULL    NULLNULL    NULLNULL    NULLTime taken: 0.329 seconds, Fetched: 6 row(s)

数据没有被成功识别,这是因为没有指定数据的分隔符。

使用下面的命令清空表数据:

truncate table t_test;

这时表还存在,但是HDFS下面的数据已经没有了。

使用下面的命令来删除表:

drop table t_test;

使用下面的命令来重新创建表,指定数据的分隔符。

create table t_test(id int, name string)row format delimitedfields terminated by ',';

然后再拷贝一次数据。

hadoop fs -put sz.data /user/hive/warehouse/test_db.db/t_test/sz.data

重新执行查询:

hive> select * from t_test;

输出如下:

OK1       张三2       李四3       风凌4       三少5       月关6       abcTime taken: 0.146 seconds, Fetched: 6 row(s)

count查询

使用下面的命令来体验一下Hive利用MapReduce来运行查询:

select count(1) from t_test; 

能看到下面的运行提示:

Query ID = root_20170325234306_1aaf3dcf-e758-4bbd-9ae5-e649190d8417Total jobs = 1Launching Job 1 out of 1Number of reduce tasks determined at compile time: 1In order to change the average load for a reducer (in bytes):  set hive.exec.reducers.bytes.per.reducer=<number>In order to limit the maximum number of reducers:  set hive.exec.reducers.max=<number>In order to set a constant number of reducers:  set mapreduce.job.reduces=<number>Starting Job = job_1490454340487_0001, Tracking URL = http://amaster:8088/proxy/application_1490454340487_0001/Kill Command = /root/apps/hadoop-2.7.3/bin/hadoop job  -kill job_1490454340487_0001Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 12017-03-25 23:43:23,084 Stage-1 map = 0%,  reduce = 0%2017-03-25 23:43:36,869 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.71 sec2017-03-25 23:43:48,392 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 3.4 secMapReduce Total cumulative CPU time: 3 seconds 400 msecEnded Job = job_1490454340487_0001MapReduce Jobs Launched: Stage-Stage-1: Map: 1  Reduce: 1   Cumulative CPU: 3.4 sec   HDFS Read: 6526 HDFS Write: 2 SUCCESSTotal MapReduce CPU Time Spent: 3 seconds 400 msec

同时,在YARN集群里面也可以看到任务信息。

输出结果如下:

OK6Time taken: 44.51 seconds, Fetched: 1 row(s)

发现Hive的速度确实很慢,不适合用于在线业务支撑。

Hive的元数据

接下来,我们来看一下Hive保存在MySQL里面的元数据。

可以看到有很多表。其中DBS表记录了数据库的记录:

其他的表的作用可以自行探索。

0 0
原创粉丝点击