- hive简介
- thrift协议
- hive本地访问运行
- JDBC访问
https://developer.aliyun.com/article/100911
1 特点:
一次写入,多次读出;
处理海量数据;
hdfs存储,mr处理;
对实时性要求低;
…
2 基本组成
用户接口:包括 CLI、JDBC/ODBC、WebGUI。
元数据存储:通常是存储在关系数据库如 mysql , derby中。
解释器、编译器、优化器、执行器。
3 各组件的基本功能
用户接口主要由三个:CLI、JDBC/ODBC和WebGUI。其中,CLI为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive。
元数据存储:Hive将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
解释器、编译器、优化器完成:HQL 查询语句(与sql查询类似)从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS 中,并在随后有 MapReduce 调用执行。
thrift协议Thrift是一种接口描述语言和二进制通讯协议。原由Facebook于2007年开发,2008年正式提交Apache基金会托管,成为Apache下的开源项目。
Thrift负责hive的查询服务,Thtift是构建跨平台的rpc框架,主要由四层组成:server,Transport,Protocol和处理器。
hive默认元数据metastore是在derby上存储的,但是有局限性:
1 占用线程,只能开启一个hive客户端,不能与其他客户端共享数据;
2 在derby上看元数据会很麻烦;
初始化derby元数据库: 元数据简介
bin/schematool -dbType derby -initSchema
本地启动hive访问
bin/hive
由于derby的缺点,于是我们把元数据放到mysql上保存,这样就可以开启多个客户端的hive;
初始化元数据到mysql:
bin/schematool -initSchema -dbType mysql -verboseJDBC访问
https://blog.csdn.net/u010738184/article/details/80534147
作为hive的客户端接口之一,提供了hive的客户端接口。
① jdbc访问mysql的配置(hive-site.xml)
javax.jdo.option.ConnectionURL jdbc:mysql://hadoop102:3306/metastore?useSSL=false javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver javax.jdo.option.ConnectionUserName root
hiveserver2 作用:hiveserver2官方文档(hiveserver1已经被丢弃,现在使用的是hiveserver2)
- 为hive提供了一种允许客户端远程访问的服务。
- 基于thrift协议,支持跨平台,跨编程语言对hive访问;
- 允许远程访问hive;
- 依赖于元数据,所以在使用之前要先启动元数据,再启动hiveserver2;
②客户端通过jdbc访问hiveserver2的配置(hive-site.xml的相关配置)
hive.server2.thrift.bind.host hadoop102 hive.server2.thrift.port 10000
启动顺序:hive依赖于hdfs存储数据,所以先启动hdfs集群
# 由于hiveserver2依赖于元数据,所以先启动元数据--第一次记得初始化 bin/hive --service metastore
# 启动hiveserver2 bin/hive --service hiveserver2
jdbc连接到配置的hiveserver2地址与端口号/见下,启动beeline客户端
bin/beeline -u jdbc:hive2://hadoop102:10000 -n $username
如果beeline启动失败,查看hadoop的core-site.xml配置并添加,重启集群
hadoop.proxyuser.shan.hosts * hadoop.proxyuser.shan.groups *
结果呈现:
由于metastore启动和hiveserver2启动都不能关闭,而且还需要手动顺序启动;所以我们不妨写一个shell脚本让他们自动启动,且均在后台运行:
shell脚本学习



