第一部门:功能介绍
1.hive是Apache的顶级项目
2.hive是将SQL语句转换成MapReduce程序,并且提交到Yarn上运行,读取HDFS上的数据进行处理
3.hive的功能实现依赖HDFS、MapReduce、Yarn还有MySQL数据库(DML:数据操作语言、DDL:数据定义语言)
第二部分:安装Hive
1.准备工作
1.1确保Hadoop相关进程启动
hdfs:namenode、datanode
yarn:resourcemanager、nodemanager
jobhistory:historyserver
1.2MySql服务器启动
开启MySql服务:sudo service mysqld start
开机启动:chkconfig mysqld on
2.上传、解压、重命名
上传:用filezilla把apache-hive-1.2.1-bin上传到linux
解压
重命名(为了使用方便舒服)
3.hive的目录结构
bin:hive客户端命令
conf:配置文件
examples:案例
lib:库
4.修改配置(conf目录下)
修改hive-env.sh.template
说明:自身配置目录及hadoop目录
5.创建数据仓库
hive的数据需要保存到HDFS,但不需要配置HDFS目录,因为它会读取默认路径,但是这些目录是空,需要区创建
操作:hadoop文件下
说明:创建目录及赋予其他组写的权限
强调:hive所有表都存在warehouse目录下
6.hive的基本使用
启动交互式命令:bin/hive(hive文件目录下)
第三部分:简单应用
1.准备数据(单词+tab+1)
2.上传到linux(这里我将他上传到/opt/datas)
3.创建数据库&表
直接使用default数据表
创建表
--Hive创建表
CREATE TABLE tb_word(
word STRING,
count INT
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n';
4.加载数据到数据库
LOAD DATA LOCAL INPATH ‘/opt/datas/word.txt’ INTO TABLE tb_word;
5.测试
--测试
SELECT
word,count(word) count
FROM
tb_word
GROUP BY
word;
第四部分:MySql储存元数据
1.现象(这么做的原因)
bin/hive这个交互性命令行不能同时开多个,开第二个就报错了
2.原因
hive创建的数据库或者表,他们的元数据metaStore需要存储。默认是存储到Derby数据库里面的,属于嵌入式数据,每次只支持一个会话
3.解决
使用支持多个会话的数据,推荐MySQL储存元数据
4.配置
4.1文档
https://cwiki.apache.org/confluence/display/Hive/AdminManual+Metastore+Administration
4.2创建配置文件(hive文件目录下的conf里面)
touch hive-site.xml
4.3修改配置(hive-site.xml)
xml文件支持
说明:xml文件支持下面配置该图的内容,包含用户名,密码,驱动,元数据,主机名
4.4添加驱动
将mysql-connector-java-5.1.27-bin.jar上传到hive的lib里
4.5测试
4.5.1:将之前启动的bin/hive生成的metastore_db和derby.log删除
4.5.2:再次启动 bin/hive
4.5.3:效果:a):可以启动多个bin/hive交互性命令行
b):mysql 数据库中可以看到 那个 数据库