写在前面的话:
该系列博文是我学习《 Hive源码解析与开发实战》视频课程的一个笔记,或者说总结,暂时没有对视频中的操作去做验证,只是纯粹的学习记录。
有兴趣看该视频的博友可以留言,我会共享出来,相互交流学习 ^.^。
*********************************************************************************************************
1、Hadoop的生态系统:
2、日志分析系统:
基于Hadoop的日志分析系统:
3、Hive介绍:
4、Hive环境搭建:
hive.metastore.warehouse.dir 表示在hdfs上存储的一个路径
hive.querylog.location 表示操作日志,存放位置
首先解压到指定目录中去(这里以0.13为例,实际是用的0.9.0版本):
Hive默认使用一个内嵌的数据库Derby,这个数据库有个缺点就是单session,意思就是说在一个目录下启动hive,并创建一个表后,如果在另外的一个目录下,再启动时,
通过show tables 不能查看到存在该表。
因此我们可以通过配置,来使用myql作为hive存储元数据的数据库,这样就可以解决这个问题:不管在哪个目录下启动hive,所有的修改操作都可以看到。
做实验:
如果默认derby的话:
show tables后会产生下面两个文件:
切换目录后启动hive,会产生一个目录和文件,当show tables的时候,不能看到之前创建的test1表;
将Hive的元数据库配置为mysql的配置操作:
主要是修改hive根目录下conf目录下hive-site.xml(这个文件是从hive-default.xml.template拷贝重命名来的,默认是先加载这个文件,然后如果有hive-site.xml,再加载hive-site.xml,当然相应的配置,hive-site.xml会覆盖掉之前的默认配置):
默认配置是derby的,我们将该相应配置的四个属性修改为mysql的相应配置就可以了:
修改后:
主要修改url、驱动名字、mysql的用户名和密码。
修改后退出hive,重启启动hive,就可以生效了。
使用mysql后,就不会出现修改或者创建表,切换目录启动后查看不到的情况,也就是说当多个用户使用的时候大家的修改都是可以看到的,但如果是derby每个用户的修改,其他用户看不到。
5、Hive基本使用:
浏览器的方式启动访问:
通过JDBC的方式访问:
首先以第三种方式启动hive:
如果想后台运行 在启动命令后面加&符号。
启动后,写java代码进行访问:
总结记忆:
1、设置msql为hive的数据库:
Hive默认情况下使用derby这个内嵌的数据库,这个数据库有个特点:如果我们再某个目录下启动hive并创建一张表,然后退出hive,切换目录,然后启动hive,查看表时,不能查看到之前创建的表,也就是说derby的单session的,多个用户之间的相关表操作修改不能共享;为此,我们需要将hive存放元数据的数据库修改为mysql。
具体配置是在hive-site.xml中修改四个配置属性,主要是配置url、驱动名字以及mysql用户名和密码,默认这四个属性是设置为derby,因此可以将关于derby的这四个默认属性注释掉,然后重新写四个mysql的属性;
2、对hive进行访问和操作:
1> 通过命令行的方式;
2> 通过web的方式,在浏览器访问和浏览;
3> 启动HiveServer,通过代码进行访问操作hive;