CDH5.3.2中配置运行Spark SQL的Thrift Server

一,环境信息
CDH集群,Cloudera Manager5安装部署CDH5.X详细请见:http://blog.csdn.net/freedomboy319/article/details/44804721

二,在CDH5.3.2中配置运行Spark SQL的Thrift Server
1,root用户登录CDH5.3.2集群中的某一个节点

2,cd /opt/cloudera/parcels/CDH/lib/spark/sbin 执行./start-thriftserver.sh –help
这里写图片描述

3,执行./start-thriftserver.sh

4,进入/opt/cloudera/parcels/CDH-5.3.2-1.cdh5.3.2.p0.10/lib/spark/logs目录,查看日志文件spark-root-org.apache.spark.sql.hive.thriftserver.HiveThriftServer2-1-cdh-node3.grc.out,发现报如下错:

Spark Command: /usr/java/jdk1.7.0_67-cloudera/bin/java -cp 
::/opt/cloudera/parcels/CDH-5.3.2-1.cdh5.3.2.p0.10/lib/spark/conf
:/opt/cloudera/parcels/CDH-5.3.2-1.cdh5.3.2.p0.10/lib/spark/lib/spark-assembly.jar
:/etc/hadoop/conf:/opt/cloudera/parcels/CDH-5.3.2-1.cdh5.3.2.p0.10/lib/hadoop/client/*
......
:/opt/cloudera/parcels/CDH-5.3.2-1.cdh5.3.2.p0.10/lib/spark/lib/jline.jar 
-XX:MaxPermSize=128m -Xms512m -Xmx512m org.apache.spark.deploy.SparkSubmit --class org.apache.spark.sql.hive.thriftserver.HiveThriftServer2 spark-internal
========================================

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hive/service/server/HiveServer2
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)

5,原因是缺失jar包。解决方法:
1)cd /opt/cloudera/parcels/CDH/lib/spark/bin 目录。
2)vi compute-classpath.sh 文件,在此文件中最后添加如下hive的jar包。

CLASSPATH="$CLASSPATH:/opt/cloudera/parcels/CDH/lib/hive/lib/*"

6,执行./start-thriftserver.sh

7,进入/opt/cloudera/parcels/CDH-5.3.2-1.cdh5.3.2.p0.10/lib/spark/logs目录,查看日志文件spark-root-org.apache.spark.sql.hive.thriftserver.HiveThriftServer2-1-cdh-node3.grc.out,发现报如下错:

15/06/02 16:32:13 INFO HiveThriftServer2: HiveThriftServer2 started
15/06/02 16:32:13 ERROR ThriftCLIService: Error:
org.apache.thrift.transport.TTransportException: Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000.
        at org.apache.thrift.transport.TServerSocket.<init>(TServerSocket.java:93)
        at org.apache.thrift.transport.TServerSocket.<init>(TServerSocket.java:79)
        at org.apache.hive.service.auth.HiveAuthFactory.getServerSocket(HiveAuthFactory.java:229)
        at org.apache.hive.service.cli.thrift.ThriftBinaryCLIService.run(ThriftBinaryCLIService.java:89)
        at java.lang.Thread.run(Thread.java:745)
15/06/02 16:32:13 INFO SparkUI: Stopped Spark web UI at http://cdh-node3.grc:4040
15/06/02 16:32:13 INFO DAGScheduler: Stopping DAGScheduler
15/06/02 16:32:14 INFO MapOutputTrackerMasterActor: MapOutputTrackerActor stopped!
15/06/02 16:32:14 INFO MemoryStore: MemoryStore cleared
15/06/02 16:32:14 INFO BlockManager: BlockManager stopped
15/06/02 16:32:14 INFO BlockManagerMaster: BlockManagerMaster stopped

8,原因是与Hive中的HiveServer2 进程端口冲突。
这里写图片描述

9,解决方法,在/opt/cloudera/parcels/CDH/lib/spark/conf目录下,添加hive-site.xml文件,此文件的内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://cdh-node3.grc:9083</value>
  <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>
<property>
  <name>hive.server2.thrift.port</name>
  <value>10001</value>
  <description>Port number of HiveServer2 Thrift interface.
  Can be overridden by setting $HIVE_SERVER2_THRIFT_PORT</description>
</property>
<property>
  <name>hive.server2.thrift.bind.host</name>
  <value>cdh-node3.grc</value>
  <description>Bind host on which to run the HiveServer2 Thrift interface.
  Can be overridden by setting $HIVE_SERVER2_THRIFT_BIND_HOST</description>
</property>

</configuration>

其中hive.metastore.uris的配置,是Spark SQL可以使用Hive的matestore元数据,既在Spark SQL可以访问Hive的数据库以及表信息。

10,执行jps可以看到SparkSubmit和SparkSubmitDriverBootstrapper进程。
这里写图片描述

并查看日志文件,可以看到如下信息:
这里写图片描述

11,到此为止local方式的Spark SQL 的ThrifServer启动成功。

12,停止掉Spark SQL 的ThrifServer。
执行kill -9 SparkSubmit的进程号。这里是:kill -9 1735

13,已yarn的cluster模式启动thriftserver。进入/opt/cloudera/parcels/CDH/lib/spark/sbin目录
执行:./start-thriftserver.sh –master yarn-cluster

14,在/opt/cloudera/parcels/CDH-5.3.2-1.cdh5.3.2.p0.10/lib/spark/logs中的spark-root-org.apache.spark.sql.hive.thriftserver.HiveThriftServer2-1-cdh-node3.grc.out文件报如下错:
这里写图片描述

在YARN Resource Manager控制台中有如下错误:
这里写图片描述

这里写图片描述
注意,这里是cdh-node10.grc主机(由YARN随机调度ResourceManager节点启动Spark SQL Driver)
这里写图片描述

15,解决方法,
在所有的ResourceManager节点的/opt/cloudera/parcels/CDH/lib/spark/bin目录下的compute-classpath.sh文件添加如下配置:

CLASSPATH="$CLASSPATH:/opt/cloudera/parcels/CDH/lib/hive/lib/*"

问题还在,不知道为啥?

16,执行
./start-thriftserver.sh –master yarn-client
日志文件如下所示,说明启动成功。
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

17,通过JDBC方式,在Spark SQL中执行job,则在日志文件有如下错误:

(TID 4, cdh-node8.grc): java.lang.NoClassDefFoundError: Lorg/apache/hadoop/hive/ql/plan/TableDesc;

18,在Cloudera Manager中安装Spark Standalone组件。
这里写图片描述

这里写图片描述

19,执行如下命令:

./start-thriftserver.sh --master spark://cdh-node3.grc:7077

在所有的Work节点都存在如下“CoarseGrainedExecutorBackend”进程:
这里写图片描述

在日志中有“HiveThriftServer2 started”提示:
这里写图片描述

在浏览器中输入“http://cdh-node3.grc:4040/executors/” 可以查到所有的Executors。
这里写图片描述

20,通过JDBC方式,在Spark SQL中执行job,则在日志文件有如下错误:

(TID 4, cdh-node8.grc): java.lang.NoClassDefFoundError: Lorg/apache/hadoop/hive/ql/plan/TableDesc;

21,在所有的Work节点的/opt/cloudera/parcels/CDH/lib/spark/bin目录下的compute-classpath.sh文件添加如下配置:

CLASSPATH=”$CLASSPATH:/opt/cloudera/parcels/CDH/lib/hive/lib/*”
“`

然后重新启动ThriftServer,在通过JDBC方式,在Spark SQL中执行Job成功。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Spark-ThriftSpark-SQLSpark框架的两个组件,它们有以下区别: 1. Spark-SQLSpark的一个模块,用于处理结构化数据,支持SQL查询和DataFrame API。它提供了一种高效且易于使用的方法来处理和分析结构化数据。用户可以使用SQL语句或DataFrame API来查询和操作数据。Spark-SQL允许用户直接在Spark应用程序使用SQL查询,而无需编写复杂的MapReduce代码。 2. Spark-ThriftSpark的一个独立服务,它提供了一个标准的Thrift接口,用于执行SQL查询。它可以作为一个独立的进程运行,并通过网络接收来自客户端的SQL查询请求,并将查询转发到Spark集群Spark-SQL模块进行处理。Spark-Thrift使得可以使用不同的编程语言,如Java、Python、R等,通过Thrift接口与Spark集群交互。 因此,Spark-SQLSpark框架用于处理结构化数据的模块,而Spark-Thrift是提供Thrift接口让用户可以使用不同编程语言与Spark-SQL模块交互的独立服务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [CDH15.0支持spark-sqlspark-thrift-server](https://blog.csdn.net/u012458821/article/details/87635599)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [122.Thriftspark-sql客户端部署](https://blog.csdn.net/m0_47454596/article/details/126856172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值