&Hive产生背景
1.MapReduce编程的不方便性
2.传统RDBMS人员的需要
HDFS上的文件没有schema概念
&HIve概述
1.由Facebook开源,用于解决海量结构化日志的数据统计问题
2.构建在Hadoop之上的数据仓库
3.Hive提供的SQL查询语言:HQL
4.底层支持多种不同的执行引擎 MR/Tez/Spark
5.提供统一元数据管理,Hive数据是存放在HDFS,元数据信息(记录数据的数据)是存放在MySQL中
7.简单统一上手,为超大数据集设计的计算/扩展能力
8.HIve在Hadoop生态系统中的位置
Hive官网概述:
The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL. Structure can be projected onto data already in storage. A command line tool and JDBC driver are provided to connect users to Hive.
Apache Hive™数据仓库软件支持使用SQL读取、写入和管理驻留在分布式存储中的大型数据集。结构可以投影到已经存储的数据上。提供了一个命令行工具和JDBC驱动程序来将用户连接到Hive。
&Hive体系架构
client:脚本shell、thrift/jdbc(server/jdbc)、WebUI(HUE/Zeppelin)
元数据metastore:==> MySQL
ex:database:name、location、owner…
table:name、location、owner、column name/type …
&Hive部署架构
1.测试环境(单MySQL即可)
2.生产环境(MySQL 必须要主备)
如图:
&Hive与RDBMS的区别
1.都支持SQL
2.MySQl通常是构建在专用的机器上面成本高,Hive是构建在Hadoop上的一个数据仓库,Hadoop是可以构建在成千上万个节点之上的,并且可以构建在廉价的机器上的,不需要专用的机器,HIve处理数据量更大
&Hive部署
1.下载:archive.cloudera.com/cdh5/cdh/5/(要与Hadoop版本相一致)
1)下载
2)解压到~/app
3)添加HIVE_HOME到系统环境变量
4)修改配置
Hive 安装包解压后只有 hive-log4j.properties.template 模板文件,需要通过模板拷贝一份
1.hive-log4j.properties 文件。
mv hive-log4j.properties.template hive-log4j.properties
vi hive-log4j.properties
hive.log.dir=/home/hadoop/app/hive/logs #目录提前创建
2.hive-env.sh(配置Hadoop Home)
3.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://hadoop01:3306/hadoop_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>
- 拷贝MySQL驱动包到$HIVE_HOME/lib
- 前提是要准备安装一个MySQL数据库,yum install去安装一个MySQL数据库
## Mysql 安装##
1在线安装 MySQL
使用 yum 在线安装 mysql:yum install mysql-server
2 查看 mysql 服务状态
使用 service mysqld status 命令查看 mysql 状态
3 启动 mysql 服务
使用 service mysqld start 命令启动 mysql 服务
4 设置 mysql root 用户密码
Mysql 刚刚安装完成,默认 root 用户是没有密码的,登录 mysql 设置 root 用户密码。
第一次登陆输入以下命令:mysql -u root -p
Enter password: 默认没有密码,回车即可。
进入 mysql 后,输入如下命令设置 root 用户密码:
set password for root@localhost=password(‘root’);
第二次登陆输入以下命令:mysql -u root -p 密码为 root
5 创建 hive 账号
安装 hive 客户端,我们使用 mysql 元数据库,类似与 Hadoop 安装,需要创建新的用户。
这里比如创建 hive 用户
create user ‘hive’ identified by ‘hive’;
将 mysql 所有权限授予 hive 用户
grant all on . to ‘hive’@‘hadoop03’ identified by ‘hive’;
刷新信息
flush privileges;
查看 mysql 用户表 user
select host ,user,password from mysql.user;
更新用户信息(授权所有 ip 连接 mysql)
update mysql.user set Host=’%’ where User = ‘root’ and Host=‘localhost’
删除 MySQL 用户信息(删除本地连接)
delete from mysql.user where user=‘root’ and host=‘127.0.0.1’;
delete from mysql.user where host=‘localhost’;
6 创建 hive 数据库
使用 hive 用户登录 mysql
mysql -h hadoop03 -uhive -p (密码为 hive)
创建数据库 hive
mysql> create database hive;
查看所有数据库
mysql> show databases;
## Hive 服务启动与测试 ##
1 启动 HDFS 与 YARN 服务
sbin/start-dfs.sh
sbin/start-yarn.sh
2 启动 hive 服务
bin/hive
如果单独配置的 Metastore,得先启动 metastore 服务,然后再启动 hive.
bin/hive --service metastore
bin/hive
3 测试运行
4 创建表
通过 hive 服务创建表
CREATE TABLE stu(id INT,name STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’ ;
5 准备测试数据集
创建数据文件
vi /home/hadoop/app/hive/stu.txt
00001 zhangsan
00002 lisi
00003 wangwu
00004 zhaoliu
6 数据加载到 Hive 表
通过如下命令加载数据到 hive 表中
load data local inpath ‘/home/hadoop/app/hive/stu.txt’ into table stu;
7 表数据查询
通过标准的 sql 语句查询 hive 表数据
select * from stu;
##Hive 图像界面配置运行##
1 下载 hive 源码包
下载对应版本的 hive 源码包 hive-1.1.0-cdh5.10.0-src.tar.gz,上传至 hadoop03(规划节点)节点
的/home/hadoop/app 目录下。
2 解压
Hive 源码包解压命令:tar -zxvf hive-1.1.0-cdh5.10.0-src.tar.gz
3 打 war 包
进入 hive 源码解压目录对 hive 源码打 hive hwi war 包
cd hwi/web
jar cvf hive-hwi-1.0.0.war ./*
cp hive-hwi-1.0.0.war …/…/…/hive/lib/
4 修改 hive-site.xml 配置文件
vi hive-site.xml
<property>
<name>hive.hwi.war.file</name>
<value>lib/hive-hwi-1.0.0.war</value>
<description>This sets the path to the HWI war file, relative to ${HIVE_HOME}.
</description>
</property>
<property>
<name>hive.hwi.listen.host</name>
<value>0.0.0.0</value>
<description>This is the host address the Hive Web Interface will listen on</description>
</property>
<property>
<name>hive.hwi.listen.port</name>
<value>9999</value>
<description>This is the port the Hive Web Interface will listen on</description>
</property>
5 启动 hive web 模式
Hive Web 界面的启动命令:hive - -service hwi
#通过浏览器访问 Hive,默认端口为 9999。
http://hadoop01:9999/hwi/
来源:https://blog.csdn.net/kokopop007/article/details/99451430