ThriftServer接口介绍

简介

ThriftServer是Hive中的HiveServer2的另外一个实现,它底层使用了Spark SQL来处理SQL语句,从而比Hive拥有更高的性能。

ThriftServer是一个JDBC接口,用户可以通过JDBC连接ThriftServer来访问SparkSQL的数据。ThriftServer在启动的时候,会启动一个SparkSQL的应用程序,而通过JDBC连接进来的客户端共同分享这个sparkSQL应用程序的资源,也就是说不同的用户之间可以共享数据。ThriftServer启动时还会开启一个侦听器,等待JDBC客户端的连接和提交查询。所以,在配置ThriftServer的时候,至少要配置ThriftServer的主机名和端口,如果要使用Hive数据的话,还要提供Hive Metastore的URIs。

ThriftServer默认在安装节点上的10000端口起一个JDBC服务,可以通过Beeline或者JDBC客户端代码来连接它,从而执行SQL命令。

如果您需要了解ThriftServer的其他信息,请参见Spark官网:http://spark.apache.org/docs/1.5.1/sql-programming-guide.html#distributed-sql-engine

Beeline

开源社区提供的Beeline连接方式,请参见:https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients

JDBC客户端代码

通过JDBC客户端代码连接ThriftServer,来访问SparkSQL的数据。

增强特性

对比开源社区,MRS还提供了两个增强特性,ThriftServer HA方案和设置ThriftServer连接的超时时间。

  • ThriftServer HA方案,当ThriftServer主节点发生故障时,备节点能够主动切换为主节点,为集群提供服务。Beeline和JDBC客户端代码两种连接方式的操作相同。

    连接HA模式下的ThriftServer,连接字符串和非HA模式下的区别在于需要将ip:port替换为ha-cluster,使用到的其他参数见表1。

    表1 客户端参数列表

    参数名称

    含义

    默认值

    spark.thriftserver.ha.enabled

    是否启用HA模式,设置为true表示启用。如果启用了HA,需要在连接字符串中将host:port修改为“ha-cluster”。否则会自动退出HA模式。

    false

    spark.thriftserver.zookeeper.dir

    ThriftServer在ZooKeeper上存储元数据的路径,同服务端的同名参数,且需要和服务端配置一致。在此目录下存储命名为“active_thriftserver”的子目录,用于存储Hive ThriftServer的IP和端口号。

    /thriftserver

    spark.deploy.zookeeper.url

    ZooKeeper的URL路径,同服务端的同名参数,且需要和服务端配置一致。

    -

    spark.thriftserver.retry.times

    尝试连接服务端的最大次数。如果设置为负数或零,客户端将不会重新尝试连接服务端。

    5

    spark.thriftserver.retry.wait.time

    重连服务端时的尝试时间间隔,单位秒。

    10

    表1中的参数应配置在客户端classpath下的“hive-site.xml”文件中,例:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <configuration>
        <property>
            <name>spark.thriftserver.ha.enabled</name>
            <value>true</value>
        </property>
    </configuration>

    “spark.deploy.zookeeper.url”参数也可以通过在连接字符串中的“zk.quorum”代替,例:

    !connect jdbc:hive2://ha-cluster/default;zk.quorum=spark25:2181,spark
    26:2181,spark27:2181
  • 设置客户端与ThriftServer连接的超时时间。
    • Beeline

      在网络拥塞的情况下,这个特性可以避免beeline由于无限等待服务端的返回而挂起。使用方式如下:

      启动beeline时,在后面追加“--socketTimeOut=n”,其中“n”表示等待服务返回的超时时长,单位为秒,默认为“0”(表示永不超时)。建议根据业务场景,设置为业务所能容忍的最大等待时长。

    • JDBC客户端代码

      在网络拥塞的情况下,这个特性可以避免客户端由于无限等待服务端的返回而挂起。使用方式如下:

      在执行“DriverManager.getConnection”方法获取JDBC连接前,添加“DriverManager.setLoginTimeout(n)”方法来设置超时时长,其中n表示等待服务返回的超时时长,单位为秒,类型为Int,默认为“0”(表示永不超时)。建议根据业务场景,设置为业务所能容忍的最大等待时长。

(0)

相关推荐

  • 大数据开发技术之Spark SQL的多种使用方法

    Spark SQL支持多种数据源,如JDBC.HDFS.HBase.它的内部组件,如SQL的语法解析器.分析器等支持重定义进行扩展,能更好的满足不同的业务场景.与Spark Core无缝集成,提供了D ...

  • 大数据平台常用工具集介绍

    提起大数据,不得不提由IBM提出的关于大数据的5V特点:Volume(大量).Velocity(高速).Variety(多样).Value(低价值密度).Veracity(真实性),而对于大数据领域的 ...

  • 「Spark」Spark SQL Thrift Server运行方式

    Spark SQL可以使用JDBC/ODBC或命令行接口充当分布式查询引擎.这种模式,用户或者应用程序可以直接与Spark SQL交互,以运行SQL查询,无需编写任何代码. Spark SQL提供两种 ...

  • 电脑音频接口介绍,知道这几个音频接口,就再也不会插错音频线了

    电脑每隔一段时间就需要清理灰尘,这个时候我们就需要把音频线等外接线取下来.但是声卡上有好几个插孔,我们有时候会忘记了,在哪个插口上插的呢?只要你掌握了下面的音频线插接方法和原则,就不会担心插错了. 主 ...

  • 一文了解MIPI 协议中的RFFE接口介绍

    MIPI协议中的RFFE接口是射频工程师最常见的接口. 目前最新的版本为RFFE V3.0,以及各个版本的演进: 一张图了解RFFE可以应用的领域: 主要应用在移动终端手机,平板等设备上. RFFE全 ...

  • SDIO接口介绍

    SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备.SDIO1.0标准定义了两种类型的SDIO卡:1.全速的SDIO卡,传输率可以超 ...

  • 【干货】可能是最全的主板接口介绍

    来源:http://mb.zol.com.cn/602/6028967_all.html 作者:郎孟华 警告!!本文约6000字,需耗时15分钟! 要想学会装机,首先要了解主板,主板是承载机箱内所有硬 ...

  • 可能是最全的主板接口介绍

    来源:http://mb.zol.com.cn/602/6028967_all.html 作者:郎孟华 警告!!本文约6000字,需耗时15分钟! 要想学会装机,首先要了解主板,主板是承载机箱内所有硬 ...

  • 平板电视各种常用接口介绍

    输入端子是液晶电视接收信号的接口,全面的接收端子可以让液晶电视方便地和其他设备连接. 1.标准视频输入(RCA): 也称AV 接口,通常都是成对的白色的音频接口和黄色的视频接口,它通常采用RCA(俗称 ...

  • 一文了解MIPI 协议中的SPMI接口介绍

    MIPI联盟规格书不少接口的协议, 今天就看一下SPMI,了解PMIC电源管理芯片的人都知道,现在很多主芯片和PMIC都使用此接口进行通信,这里就简单介绍一下此接口. 首先SPMI全称System P ...

  • 服务器电脑主板科普:各种接口介绍,如何选?

    主板上的接口你都认识么? 主板上的接口有哪些,各位喜欢DIY的小伙伴们都认识么,今天我们一起来看看主板上的接口有哪些: 上面是SUPERMICRO的一款服务器主板,上面的主板常见的接口有sata接口, ...

  • 音频线材接口介绍

    音频线材接口介绍 你认得下面线材接头吗? 买音响最常遇到除了要买甚麽种类的喇叭跟扩大机之外,初入门者常常有个烦恼的问题:『怎麽有这麽多不同的线材接头种类?有甚麽不一样的功用吗?哪一种比较好呢?』,这时 ...