HIVE框架
1:可以干什么:
将SQL语句转换成MapReduce程序,并且提交到Yarn上运行,读取HDFS上的数据进行处理。
SQL语句:和MySQL数据库中SQL语句非常非常类似。
2:概念:SQL on Hadoop
建立在Hadoop之上提供以SQL方式分析数据的框架
最早的由facebook开源的框架
3:要学好hive,需要什么
1:需要一定的Java语言的基础
2:需要有一定的hadoop使用的基础,了解什么是HDFS,MapReduce,Yarn
3:具有一定的sql语言的基础,知道什么是DML(数据操作语言)、DDL(数据定义语言)
3:hive软件版本
0.13.1:经典稳定的版本(2104)
1.2.1 :较新的一个版本
2.X:2017发布,
底层推荐使用Spark或者TeZ框架分析数据,而不是MapReduce
下载地址:http://apache.org/dist/hive
4:安装Hive
环境准备:Linux系统,hadoop安装完成,Mysql安装完成
4.1:下载,上传,解压hive压缩包
4.2:修改配置文件
首先重命名文件:
mv hive-env.sh.template hive-env.sh
4.3:创建数据仓库
hive 的数据需要保存到HDFS,那么保存HDFS那个目录,是不是需要配置
不配置,因为它会去读默认路径,但是这些目录是空,需要去创建
首先启动hadoop相关进程,再进行以下操作:
4.4 hive的基本使用
hive的使用语句,大部分与sql语言类似,常用的sql语句在hive环境中也可以使用
开启hive:bin/hive
5:数据导入测试
测试数据:
-
hello
1
-
hoadoop
1
-
hadoop
1
-
hadoop
1
-
like
1
-
like
1
hive中建立表:
-
1:
CREATE
TABLE tb_word(
-
2: word
STRING,
-
3:
count
INT
-
4:)
-
5:
ROW
FORMAT
DELIMITED
FIELDS
TERMINATED
BY
'\t'
-
6:
LINES
TERMINATED
BY
'\n';
-
-
1:建立表名为tb_word的表
-
2:添加word字段 String类型
-
3:添加count字段 INT类型
-
5:导入的数据文件每一行以tab键分割,即‘\t’
-
6:每一行分割以回车分割
加载数据:
LOAD DATA LOCAL INPATH '数据文件路径' INTO TABLE tb_word;
测试用SQL语句实现wordcount单词计数:
7:使用MySql存储元数据
为什么使用MySql来存储hive的元数据
首先:元数据是什么
元数据可以简单的理解为存储数据关系的数据,像是书的目录一样
其次:为什么要使用mysql来存储元数据
hive中无论是创建的 数据库还是表 ,这些元数据metaStore需要存储
默认情况下存储在Derby数据库里面的,属于嵌入式数据,每次仅仅支持一个会话
所有为了支持多个会话的hive操作,推荐MySQL存储元素
7.1:配置配置文件,使用MySql数据库存储元数据
官方配置文档
https://cwiki.apache.org/confluence/display/Hive/AdminManual+Metastore+Administration
(1)创建配置文件
touch hive-site.xml
注意:在Linux中建立配置文件后,如果要使用远程连接工具来修改配置文件,那么在修改配置文件之前,一定要在Linuxo中打开新建的配置文件,随便输入几行文本信息,保存关闭后,再使用windows的远程连接工具修改配置文件!这么做的原因就是因为Linux中文档的换行与Windows中的换行代表的字符编码不一样,直接使用Windows中的换行符,Linux将无法识别并报错!
(2)修改配置
(3)添加mysql驱动,驱动包可以去maven仓库下载,mysql-connector-java-5.1.27-bin.jar,下载后上传到hive文件夹中的lib文件夹下
7.2:测试
首先要将hive下的metastore_db和derby.log删除
在多个窗口启动测试
如可以正常在多个窗口启动,即运行正常,配置成功