- Command-line shell: sql 在命令行去写,提交到hive引擎上,常用的客户端
- Thrift/JDBC: thrift是一个协议,相当于hive启程一个服务,可以通过jdbc的方式,往thrift提交你的查询,你都sql —意思就是(server/jdbc)
- WebUI(HUE/Zeppelin) 可以可视化展示
- metastore ==>存在mysql的
database:name、location地址、owner谁创建的… 源数据i信息
table: name、location、owner、column name/type…… 源数据i信息
sql语句就是不能在普通的字符串而已,如何让字符串让hive引擎识别呢
会把sql编译成一个语法术(sql Parser 编译解析),QueryOptimizer做很多的优化,找到一个最优的执行计划,Physical Plan 生成物理计划,在这个过程中有序列化和反序列化,UDF(就是用户自己定义的函数),物理计划会生成一个执行计划Execution,在Execution下面会生成MapReduce
客户端过来以后,他会通过Driver部分,把sql最终翻译成MapReduce,把我们作业提交到HadoopStorage(HDFS,HBase)之上就可以了
管理过程当中会可能设计表,和库,hive基于表操作的,这些表和数据库都是作为源数据库信息放在Metastore,Metastore存放在Mysql