首页 理论教育 详解Thrift Server启动过程

详解Thrift Server启动过程

时间:2023-07-02 理论教育 版权反馈
【摘要】:Thrift Server启动的时候,其实是启动了一个Spark SQL的应用程序,同时开启一个侦听器,等待JDBC客户端的连接和提交查询。接下来详细讲解Thrift Sever的启动过程。为了让大家深刻理解Thrift Server的启动过程,我们这里“挖一个坑”:先把HDFS和Spark集群启动起来,但是此时先不启动Hive Metastore服务。

详解Thrift Server启动过程

Thrift Server启动的时候,其实是启动了一个Spark SQL的应用程序,同时开启一个侦听器,等待JDBC客户端的连接和提交查询。所以在配置Thrift Server的时候,可以在配置文件中配置Thrift Server的主机名和端口,如果要使用Hive数据的话,还要提供Hive Metastore的uris。通常,可以在conf/hive-site.xml中定义以下几项配置,也可以使用环境变量进行配置(环境变量的优先级高于hive-site.xml)。

我们查看一下本示例的hive-site.xml配置:

978-7-111-59197-9-Chapter07-10.jpg

在当前hive-site.xml中只配置了Hive Metastore的uris的信息,其他配置采用默认配置。

接下来详细讲解Thrift Sever的启动过程。为了让大家深刻理解Thrift Server的启动过程,我们这里“挖一个坑”:

先把HDFS和Spark集群启动起来,但是此时先不启动Hive Metastore服务。为了稍后方便通过Spark Web控制台来查看Job的运行日志,此时需要把HistoryServer启动起来。

●在Hadoop目录下启动start-dfs.sh和start-yarn.sh,执行命令:

root@Master:/usr/local/hadoop/hadoop-2.7.1/sbin#./start-all.sh

●在Spark目录下执行命令:

root@Master:/usr/local/spark/spark-1.6.3-bin-hadoop2.6/sbin#./start-all.sh

●在Spark目录下启动HistoryServer:

root@Master:/usr/local/spark/spark-1.6.3-bin-hadoop2.6/sbin#./start-history-server.sh

●通过jps查看启动的进程,至少包含下面的进程:

978-7-111-59197-9-Chapter07-11.jpg

此时我们特意没有开启Hive Metastore元数据服务

1.尝试启动Thrift Server

为了启动Thrift Server,请在Spark目录运行下面的命令:

978-7-111-59197-9-Chapter07-12.jpg

在命令终端上将会显示提示:正在启动HiveThriftServer2,并记录到对应的日志文件。

此时,我们可以通过VIM编辑器来打开该日志文件,命令如下:

978-7-111-59197-9-Chapter07-13.jpg

可以发现日志中有异常信息。在74行处(以实际为准),可以看见有异常信息:

978-7-111-59197-9-Chapter07-14.jpg

通过上面的日志信息,可以发现因为Hive的Metastore服务没有启动,所以导致访问Metastore失败。此处就是为了让大家要注意分析日志文件信息,Spark的很多日志文件信息,包括通过Web控制台都可以用来理解Spark的内部运行机制。

2.正常启动Thrift Server(以默认传输通道模式:binary模式)

1)首先,正常启动Hive Metastore服务,命令如下:

root@Master:/usr/local/spark/spark-1.6.3-bin-hadoop2.6#hive--service metastore&

或者也可以采用添加输出日志文件的方式启动:

hive--servicemetastore>Metastore.log 2>&1&

此时,通过ps命令查看Hive Metastore进程:

978-7-111-59197-9-Chapter07-15.jpg

可以发现HiveMetaStore服务已经正确启动。

Metastore是Hive元数据的集中存放地元数据包括表的名字表的列和分区及其属性等通常存储在关系数据库如MySQLDerby中

2)此时再次运行start-thriftserver.sh,执行命令如下:

root@Master:/usr/local/spark/spark-1.6.3-bin-hadoop2.6#./sbin/start-thriftserver.sh--

master spark://master:7077

打开spark-root-org.apache.spark.sql.hive.thriftserver.HiveThriftServer2-1-Master.out日志文件,没有发现异常信息。我们仔细阅读日志文件内容,尤其是下面这段日志内容很关键:(www.xing528.com)

978-7-111-59197-9-Chapter07-16.jpg

通过上面这段日志信息,我们可以获知:启动Spark SQL Thrift Server,其实就是调用SparkSubmit向服务器集群提交一个class为HiveThriftServer2的普通Spark应用程序。

当然,我们直接使用Linux的ps命令也可以查看Thrift Server具体的运行信息,如下所示:

978-7-111-59197-9-Chapter07-17.jpg

Thrift Server其实就是一个class为HiveThriftServer2的Spark应用程序

3.HTTP传输通道模式启动Thrift Server

Thrift Server的传输通道模式可以是Binary或者HTTP,通过HTTP传输通道,Spark SQL Thrift Server也支持发送Thrift RPC消息,这种方式在客户端和服务器之间支持代理中介是特别有用的(例如:负载均衡和安全原因)。

使用下面的配置以支持HTTP模式,如表7-1所示。

7-1 使用HTTP模式的参数表

978-7-111-59197-9-Chapter07-18.jpg

以上参数可以在JDBC Connection URLs系统参数中传入或者直接配置在Hive配置信息文件hive-site.xml中。

1)先停止刚才已经启动的Thrift Sever:

978-7-111-59197-9-Chapter07-19.jpg

2)指定以HTTP模式再次运行start-thriftserver.sh,执行命令如下:

978-7-111-59197-9-Chapter07-20.jpg

此时HTTP端口没有指定,默认值为10001,正如表7-1所示。

现在我们再次使用ps命令查看Thrift Server具体的运行信息,如下所示:

978-7-111-59197-9-Chapter07-21.jpg

978-7-111-59197-9-Chapter07-22.jpg

3)此时用netstat命令可以查看10001端口已经处于侦听状态:

978-7-111-59197-9-Chapter07-23.jpg

当Thrift Server以HTTP模式启动后,就可以被beeling或者JDBC客户端程序通过HTTP通道模式来进行连接操作了。

4.查看ThriftServer命令参数

运行下面的命令:

root@Master:/usr/local/spark/spark-1.6.3-bin-hadoop2.6/sbin#./start-thriftserver.sh--help

通过使用--help参数,可以列出ThriftServer的命令参数,如表7-2所示:

Usage:./sbin/start-thriftserver[options][thrift server options]

7-2 ThriftServer命令参数

978-7-111-59197-9-Chapter07-24.jpg

(续)

978-7-111-59197-9-Chapter07-25.jpg

以上[options]参数列表,完全与spark-submit应用程序的参数一样,如果不设置master参数,Spark应用程序将在启动Thrift Server的机器中以local方式运行,可以通过ht-tp://机器名:4040进行监控。如果在集群中运行Thrift Server,一定要配置master、execu-tor-memory等参数。再通过hive-conf来指定[thrift server options]系列参数,因为参数比较多,通常使用conf/hive-site.xml进行配置。

5.退出Thrift Server

Thrift Server启动后处于监听状态,可以执行下面命令退出ThriftServer:

978-7-111-59197-9-Chapter07-26.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈