Hive简介以及安装
Hive 简介
Hive 由 Facebook 开源用于解决海量结构化日志的数据统计
Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类 SQL 查询的功能
Hive 是构建在 Hadoop 之上的数据仓库
使用HQL作为查询接口
使用 HDFS 存储
使用 MapReduce 进行计算,本质是把 HQL 转化为 MapReduce 程序
灵活性和扩展性比较好,支持 UDF,自定义存储格式等
比较适合离线数据处理
Hive 架构图
驱动器:Driver,包含:解析器,编译器,优化器,执行器
解析器:将 SQL 字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如 antlr;对 AST 进行语法分析,比如表是否存在,字段是否存在,SQL 语义是否有误,(比如 select 中被判定为聚合的字段在 group by 中是否有出现)
编译器:将 AST 编译生成逻辑执行计划
优化器:对逻辑执行计划进行优化
执行器:把逻辑执行计划转换成可运行的物理计划。对于 Hive 来说,就是 MapReduce。
Hive 优点与使用场景
(1)操作接口采用类 SQL 语法,提供快速开发的能力(简单容易上手)
(2)避免了去写 MapReduce,减少开发人员的学习成本
(3)统一的元数据管理,可与 Impala/Spark 共享元数据
(4)易扩展(HDFS + MapReduce,可以扩展集群规模,支持自定义函数)
(5)数据的离线处理,比如日志分析,海量结构化数据离线分析
Hive 的安装和使用
(1)下载
从cdh下载页下载
http://archive.cloudera.com/cdh5/cdh/5/
hive-1.1.0-cdh5.11.1.tar.gz
下载好后上传至服务器的/home/hadoop/software,并解压至/home/hadoop/app目录下
mv hive-1.1.0-cdh5.11.1.tar.gz hive
(2)配置
配置hive-env.sh(在hive主目录下的conf文件夹下)
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/home/hadoop/app/hadoop
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/home/hadoop/app/hive/conf
配置hive-site.xml
由于hive中的元数据(即所有的数据库信息、表信息、及表字段信息)需要存储在关系型数据库中,而hive内置了derby数据库,但是使用这个数据库的缺点是,
hive提供的hiveserver2只能一个用户访问,所以需要配置mysql,使元数据存储在mysql上
(3)安装mysql
安装mysql很容易,使用yum安装即可
首先卸载已经有的mysql
sudo rpa -qa|grep mysql
sudo yum remove …
sudo rm -rf /etc/my.conf
安装:
sudo yum install mysql mysql-server mysql-devel -y
安装完成后,设置为跟随机器启动chkconfig –list |grep mysql
chkconfig mysqld on
启动mysql服务
service mysqld start
设置mysql密码
(一开始安装好后,密码为空直接进去即可)
mysql -uroot -p
进去命令行之后,设置密码
SET PASSWORD=PASSWORD(“123456”)
设置所有用户都可以用root用户连接进来use mysql;select user,host,password from user;update user set host=’%’ where user=’root’ and host=’localhost’;即可
(4)配置hive的元数据服务 hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop001:3306/metastore_new?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>123456</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hadoop001</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop001:9083</value>
</property>
</configuration>
(5)下载mysql驱动包到hive的lib目录下
(6)bin/hive
即可打开命令行
上一篇: SpringCloud之一统天下-微服务网关Zuul
下一篇: hive简介与安装