概念
hive是建立在hadoop上的,当然,你如果只搭建hive也没用什么错。说简单一点,hadoop中的mapreduce调用如果面向DBA的时候,那么问题也就显现了,因为不是每个DBA都能明白mapreduce的工作原理,如果为了管理数据而需要学习一门新的技术,从现实生活中来说,公司又需要花钱请更有技术的人来了。
开个玩笑,hadoop是为了存储数据和计算而推广的技术,而和数据挂钩的也就属于数据库的领域了,所以hadoop和DBA挂钩也就是情理之中的事情,在这个基础之上,我们就需要为了DBA创作适合的技术。
hive正是实现了这个,hive是要类SQL语句(HiveQL)来实现对hadoop下的数据管理。hive属于数据仓库的范畴,那么,数据库和数据仓库到底有什么区别了,这里简单说明一下:数据库侧重于OLTP(在线事务处理),数据仓库侧重OLAP(在线分析处理);也就是说,例如mysql类的数据库更侧重于短时间内的数据处理,反之。
无hive:使用者.....->mapreduce...->hadoop数据(可能需要会mapreduce)
有hive:使用者...->HQL(SQL)->hive...->mapreduce...->hadoop数据(只需要会SQL语句)
下载安装
- 下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/
这里以2.3.4为例 - 解压
tar -xvf apache-hive-2.3.4-bin.tar -C ~/software/Hadoop/
- 配置环境变脸~/.bash_profile
#hive
HIVE_HOME=/Users/qinxy/software/Hadoop/apache-hive-2.3.4-bin
PATH=$PATH:$HIVE_HOME/bin
export HIVE_HOME PATH
- 验证是否安装成功
hive --version
5.修改配置文件
cd 到目录hiveHome/conf
【1】修改hive-site.xml文件
cp hive-default.xml.template hive-site.xml
主要修改mysql数据库连接的配置
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true
</value>
<description>
JDBC connect string for a JDBC metastore.
To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
</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>root</value>
<description>password to use against metastore database
</description>
</property>
【2】按照自己需求,修改hive-env.sh文件
cp hive-env.sh.template hive-env.sh
【3】将MySQL的驱动添加到hive安装目录的lib下
【4】初始化mysql连接
schematool -dbType mysql -initSchema
【5】启动
hive
显示如下图,则成功
如果报错,如下图,则修改hive-site.xml文件
修改hive-site.xml文件,将目录可以修改为自己定义的目录
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
<description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/<username> is created, with ${hive.scratch.dir.permission}.</description>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/tmp/hive/local</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/tmp/hive/resources</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
【6】使用
Hive DDL命令见:https://wenku.baidu.com/view/cc9bb515793e0912a21614791711cc7930b77872.html