| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Hive的hiveserver2和beeline的使用以及spark thritfserver的启动 -> 正文阅读 |
|
[大数据]Hive的hiveserver2和beeline的使用以及spark thritfserver的启动 |
Hive的hiveserver2和beeline的使用以及spark thritfserver的启动Hive 的hiveserver2介绍HiveServer2 (HS2) 是一项使客户端能够针对 Hive 执行查询的服务。 HiveServer2 是已弃用的 HiveServer1 的继任者。 HS2 支持多客户端并发和认证。它旨在为开放 API 客户端(如 JDBC 和 ODBC)提供更好的支持。 HS2 是作为复合服务运行的单个进程,其中包括基于 Thrift 的 Hive 服务(TCP 或 HTTP)和用于 Web UI 的 Jetty Web 服务器。 hiveserver2 的配置需要在
比如
因为使用了mysql数据库存储hive的元数据,所以需要从网上下载mysql的驱动包 从Maven Repository: mysql ? mysql-connector-java (mvnrepository.com)下载就行 8.0.23版本 下载地址https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.23/mysql-connector-java-8.0.23.jar 下载后拷贝到 接着启动mysql 接着启动hdfs 启动spark集群 启动spark-history 启动hiveserver2 也可以使用 可以使用 beeline连接hiveserver2当启动hiveserver2之后,就可以使用beeline进行连接了。 hiveserver2是服务端,而beeline是hive自带的一个客户端,除了使用beeline,还可以使用代码连接hiveserver2服务端。 使用beeline连接需要指定连接url 比如使用如下命令连接 其中 查询 和使用mysql非常类似 输入 可以看到beeline的命令都是以 配置hiveserver2的界面可以在
然后重新启动hiveserver2 需要先杀掉原来启动的hiveserver2,然后重新启动 接着就能访问hive的界面了 启动一个beeline连接,使用用户名hadoop01 在启动beeline连接hiveserver2的时候,可以像jdbc的连接url一样,指定database 比如 而且在连接url中指定database后,连接了就会自动切换到指定的database上的。 查看界面 还可以启动更多的beeline,在同一个机器上也可以的 在同一个机器上启动两个beeline,使用 每个beeline上查询,然后查看界面 spark thriftserver的配置使用spark-submit和spark-sql,每次执行一个sql,实际上都会产生一个spark application用于执行spark任务,如果执行的比较多的sql,就会频繁的创建spark application,这样就会在一定程度上耗费资源。为了实现spark application的复用,spark基本上把hive的hiveserver2照搬了过来,产生了 spark thriftserver,在使用thriftserver的时候,就能够复用spark application。 不过生产环境中每个查询因为数据量巨大,而且基本处于独立的查询操作,所以是不会使用thriftserver和hiveserver2的,这在开发中可能用的比较多。 简单点说,spark thriftserver和hiveserver2是一样的。 只需要把 然后启动spark thriftserver即可 在spark的官网文档中(spark-sql模块下)说明spark-thriftserver的脚本 通过上面这句话,就基本上可以猜测出来启动thriftserver需要哪些参数了,当然也可以通过help查看 所以可以使用如下命令启动thriftserver
启动后需要手动查看日志 启动出现了异常,提示地址已经被使用了,说白了就是端口冲突,因为hiveserver2还是启动,hiveserver2绑定了10000端口,而spark thriftserver启动也需要绑定10000端口,就冲突了。 所以修改spark thriftserver的端口为10001 当然thriftserver的界面集成到了spark的界面中了,这里的8084应该是无效的 重新启动 启动日志无报错后刷新spark集群的界面 进入application的界面后会多出来两个tab 访问8084界面无响应,说明在 beeline 连接spark thriftserver使用beeline连接spark thriftserver和使用beeline连接hiveserver2完全相同 使用 thriftserver和spark-sql对比thriftserver和spark-sql都能直接执行sql语句,区别在于多个beeline连接同一个thriftserver,共用一个application,而启动多个spark-sql就会启动多个application 比如首先在beeline连接的thriftserver中执行两次sql 刷新spark界面,并没有增加完成的application 停止thriftserver,因为thriftserver占用了全部集群中的两个核心(实际是我分配的核心太少了),thriftserver会自动占用每个driver的一个核心,我配置每个worker只启动一个driver,每个driver只有一个核心,所以thriftserver就占用了全部的核心。 接着启动spar-sql,占用一个核心 使用 可惜的是,即使指定了 接着执行一个sql 执行发现,好像和预期的不一样,也是所有的sql使用同一个application 在启动一个spark-sql 此时查看spark界面,发现是两个application 证明了每个spark-sql实例对应一个application(没有分配到资源请忽略) 接着启动thriftserver 接着启动一个beeline 启动了两个beeline,连接同一个thriftserver,但是却只有一个application 这就是spark-sql与thriftserver最大的区别 spark sql 程序连接thriftserver使用spark-submit和spark-sql,每次执行一个sql,实际上都会产生一个spark application用于执行spark任务,如果执行的比较多的sql,就会频繁的创建spark application,这样就会在一定程度上耗费资源。为了实现spark application的复用,spark基本上把hive的hiveserver2照搬了过来,产生了 spark thriftserver,在使用thriftserver的时候,就能够复用spark application。 不过生产环境中每个查询因为数据量巨大,而且基本处于独立的查询操作,所以是不会使用thriftserver和hiveserver2的,这在开发中可能用的比较多。 要使用thriftserver就需要在依赖中加入hive-jdbc的依赖(前面说了,spark的thriftserver就是照搬hiveserver2的) Maven Repository: org.apache.hive ? hive-jdbc ? 3.1.2 (mvnrepository.com) 直接增加会因为无法下载 在实际测试中,这个确实比较恶心,网上有一种解决方案是自己下载依赖,然后使用maven本地安装,然后在加载依赖,经过测试,没用。 我自己的解决方案是不管他,报红就使用排除
然后在根目录下使用maven命令下载依赖 接着就可以开始编码了
执行结果如下 也可以在thriftserver的监控界面查看执行的sql |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:56:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |