这部分只讲怎么部署和管理,至于怎么使用这3者进行数据分析,在另外的课程
一、hive
1. what is hive
数据分析人员一般不会使用mr
hive is an apache project originally develed at facebook
适用于非结构化数据的分析
2. how hive works
元数据存在第三方数据库,schema + location
3. hive tables
一个表对应一个hdfs目录,包含这么目录下的所有文件
分为managed和external,external的意义在于数据可能不仅仅被hive使用,可能impala也在用,所以不能用managed
4. 跟RDBMS区别
不追求即时
默认不支持update和delete,可以配置支持
5. architecture
{1} hive metastore server是用来远程管理hive 元数据的服务,即时元数据mysql不在本地,也可以访问到元数据。总共有57张表。
{2} hiveserver2,和1一样都是thrift服务,用来把客户端提交的请求转为mr。HMS和H2一般放在工具节点。
beeline是通过jdbc,hive-shell不是通过jdbc。
beeline -u jdbc:hive2:hiveserver2主机:10000 -n 指定用户
training用户是专门用来学习的,权限很高。如果不指定也没用kerberos,就是匿名用户,权限很低
{3} gateway,就是hive的客户端
{4} zk,用来解决并发问题,引入了锁机制。比如drop一个表时,进行查询,会导致查询不完整。hive依赖zk。
6. hive的部署
{1} 3种部署模式
impala也是通过jdbc访问HMS元数据
二、impala
1. src
apache项目
{1} 和hive联系
sql没有hive的强大,有些函数不支持,更接近关系型数据库的sql
比hive快10到50倍,数据量越大差距越小
和hive共享元数据,impala会自动连接hive的metastore服务,像是双头龙,身体共享,大脑独立。
2. impala shell
3. 架构
{1} 会在每个impalad节点上缓存元数据
{2} 会把结果流式返回给central coordinator node
{3} state store和catalog server分别只需要1个,一般放在管理或工具节点,且放在同一个
state store管理的是impalad的状态
比如连接到d1的impalad,提交了查询,d1的impalad要去state store查找总共有多少impalad可用,然后分发任务
catalog server
用来管理元数据的修改