分享

新手问:hive on spark,设置spark.master的多种方式能多连接(session)么?

回帖奖励 10 云币      回复本帖可获得 10 云币奖励! 每人限 1 次
环境:
CDH 5.14,已集成安装好hive spark hadoop,环境运行正常。
现在问题是:
我在运行时,set了hive的执行引擎为spark,在集群中的master上的beeline执行能正常运行所以SQL。
然鹅,当master机已经连接并通过运行时设置的 spark.master=yarn-client(或cluster、local),master能正常执行,
但在slave2或集群中的其他机器,就不能执行SQL,等待90秒后,会报错:
Failed to execute spark task, with exception 'org.apache.hadoop.hive.ql.metadata.HiveException(Failed to create spark client.)

如果多开一个master执行窗口使用beeline,模式设为local,执行两句create table语句,就会导致hiveserver2自动停止了。。
这个是否设了hive的执行引擎为spark后,不能多连接(session)呢?

不知这个贴,发在这里,还是发到hive适合呢。。。

已有(4)人评论

跳转到指定楼层
arsenduan 发表于 2018-4-29 09:22:52

回帖奖励 +10 云币

kinglee_zs 发表于 2018-4-28 22:50
刚刚在另一个测试的集群上试了试,master用yarn-cluster模式,多开一个master和另外开一个slave,beeline连 ...

这个可能跟配置和资源(内存等)有关系。比如你的并发数是如何配置的。配置异步线程池的线程数

[mw_shl_code=bash,true]<property>

    <name>hive.server2.async.exec.threads</name>

    <value>100</value>

    <description>Number of threads in the async thread pool for HiveServer2</description>

</property>
[/mw_shl_code]


配置异步线程结束的超时时间(超过这个时间HS会退出):

[mw_shl_code=bash,true]<property>

  <name>hive.server2.async.exec.shutdown.timeout</name>

  <value>10</value>

  <description>Time (in seconds) for which HiveServer2 shutdown will wait for async

  threads to terminate</description>

</property>[/mw_shl_code]



配置异步线程的等待超时时间(超过这个值线程会被回收)

[mw_shl_code=bash,true]<property>

  <name>hive.server2.async.exec.keepalive.time</name>

  <value>10</value>

  <description>Time (in seconds) that an idle HiveServer2 async thread (from the thread pool) will wait

  for a new task to arrive before terminating</description>

</property>[/mw_shl_code]



更多相关配置:

[mw_shl_code=bash,true]对应在http协议下线程池的线程数

<property>

  <name>hive.server2.thrift.http.min.worker.threads</name>

  <value>5</value>

  <description>Minimum number of worker threads when in HTTP mode.</description>

</property>

<property>

  <name>hive.server2.thrift.http.max.worker.threads</name>

  <value>500</value>

  <description>Maximum number of worker threads when in HTTP mode.</description>

</property>



对应在tcp协议下的线程池的线程数:

<property>

  <name>hive.server2.thrift.min.worker.threads</name>

  <value>5</value>

  <description>Minimum number of worker threads when in TCP mode.</description>

</property>

<property>

  <name>hive.server2.thrift.max.worker.threads</name>

  <value>500</value>

  <description>Maximum number of worker threads when in TCP mode.</description>

</property>[/mw_shl_code]

回复

使用道具 举报

kinglee_zs 发表于 2018-4-28 22:50:48
刚刚在另一个测试的集群上试了试,master用yarn-cluster模式,多开一个master和另外开一个slave,beeline连接、执行sql,一切正常。。。晕啊。。
回复

使用道具 举报

kinglee_zs 发表于 2018-4-29 10:07:35
arsenduan 发表于 2018-4-29 09:22
这个可能跟配置和资源(内存等)有关系。比如你的并发数是如何配置的。配置异步线程池的线程数

[mw_sh ...

谢谢指教!晚点再看看这些参数,两个集群安装后的参数基本没改,基本默认的多。
不过有一点,有问题的集群内存才16G(都是一个windows上虚拟4台linux。。。win才16G内存。。。)。
另一个正常的集群,总内存32G,感觉是正常点。。。

回复

使用道具 举报

kinglee_zs 发表于 2018-5-1 09:28:43
问题已解决,hs2退出后,在CM中发现一个提示:outofmemory。
后来在hive中,把heap两个内存参数调大(其实应该是恢复,可能原机器配置较差,内存少,默认了很少的内存),执行操作正常。 。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条