spark sql thriftserver HA

与hue进行整合,org.apache.spark.sql.hive.thriftserver,就必须解决thriftserver的单点问题,目前spark还未提供相关功能,所以必须org.apache.spark.sql.hive.thriftserver修改源码,实现方式参考HiveServer2高可用方式,详情参考https://www.jianshu.com/p/eaf615284f67
修改源码 /spark2/jars/spark-hive-thriftserver_2.11-xxxx.jar
我们在hue平台上提价的sql执行并行度,是在启动thriftserver服务适合指定的
开启spark动态资源分配http://lxw1234.com/archives/2015/12/593.htm
cd $SPARK_HOME/sbin/
./start-thriftserver.sh
--master yarn-client
--conf spark.driver.memory=3G
--conf spark.shuffle.service.enabled=true
--conf spark.dynamicAllocation.enabled=true
--conf spark.dynamicAllocation.minExecutors=1
--conf spark.dynamicAllocation.maxExecutors=30
--conf spark.dynamicAllocation.sustainedSchedulerBacklogTimeout=5s

HiveServer2 实现高可用,但是没有实现故障恢复

image.png

优点:
高可用(解决单点问题);
负载均衡(ZK集群随机选择HiveServer2);
缺点:
无法自动故障恢复(当某台HS2宕机时,与其相连的client的session会丢失,需要依赖client的自动断连重试机制),至于故障重启,依赖yarn的container故障重试策略,同flink中jobmanager高可用一样

具体HiveServer2的高可用-HA配置

关键字:hiveserver2、ha、高可用、high availability、ZooKeeper Service Discovery
在生产环境中使用Hive,强烈建议使用HiveServer2来提供服务,好处很多:

1. 在应用端不用部署Hadoop和Hive客户端;
2. 相比hive-cli方式,HiveServer2不用直接将HDFS和Metastore暴漏给用户;
3. 有安全认证机制,并且支持自定义权限校验
4. 有HA机制,解决应用端的并发和负载均衡问题;
5. JDBC方式,可以使用任何语言,方便与应用进行数据交互;
6. 从2.0开始,HiveServer2提供了WEB UI。

如果使用HiveServer2的Client并发比较少,可以使用一个HiveServer2实例,没问题。

hive

但如果这一个实例挂掉,那么会导致所有的应用连接失败。

Hive从0.14开始,使用Zookeeper实现了HiveServer2的HA功能(ZooKeeper Service Discovery),Client端可以通过指定一个nameSpace来连接HiveServer2,而不是指定某一个host和port。本文学习和研究HiveServer2的高可用配置。使用的Hive版本为apache-hive-2.0.0-bin。

[图片上传中...(image-187c1d-1571111714429-3)]

如上图,我准备在node1和node2上分别启用两个HiveServer2的实例,并通过zookeeper完成HA的配置。

Hive配置

注:这里假设你的Zookeeper已经安装好,并可用。

在两个安装了apache-hive-2.0.0-bin的机器上,分别编辑hive-site.xml,添加以下参数:

<property>
<name>hive.server2.support.dynamic.service.discovery</name>
<value>true</value>
</property>
 
<property>
<name>hive.server2.zookeeper.namespace</name>
<value>hiveserver2_zk</value>
</property>
 
<property>
<name>hive.zookeeper.quorum</name>
<value> zkNode1:2181,zkNode2:2181,zkNode3:2181</value>
</property>
 
<property>
<name>hive.zookeeper.client.port</name>
<value>2181</value>
</property>
 
 
<property>
<name>hive.server2.thrift.bind.host</name>
<value>0.0.0.0</value>
</property>
 
<property>
<name>hive.server2.thrift.port</name>
<value>10001</value> //两个HiveServer2实例的端口号要一致
</property>

先启动第一个HiveServer2 :

cd $HIVE_HOME/bin

./hiveserver2

hive

再启动另一个:

hive

第二个实例启动后,ZK中可以看到两个都注册上来。

JDBC连接

JDBC连接的URL格式为:

jdbc:hive2://<zookeeper quorum>/<dbName>;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2

其中:

<zookeeper quorum> 为Zookeeper的集群链接串,如zkNode1:2181,zkNode2:2181,zkNode3:2181

<dbName> 为Hive数据库,默认为default

serviceDiscoveryMode=zooKeeper 指定模式为zooKeeper

zooKeeperNamespace=hiveserver2 指定ZK中的nameSpace,即参数hive.server2.zookeeper.namespace所定义,我定义为hiveserver2_zk

使用beeline测试连接:

<pre class="prettyprint linenums" style="padding: 8px; color: rgb(68, 68, 68); border-radius: 2px; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; display: block; margin: 0px 0px 20px; font-size: 14px; line-height: 20px; word-break: break-all; overflow-wrap: break-word; white-space: pre-wrap; background-color: rgb(248, 248, 248); border: 1px solid rgb(238, 238, 238); overflow: hidden; box-shadow: rgb(238, 238, 238) 40px 0px 0px inset, rgb(51, 183, 150) 42px 0px 0px inset;">

  1. cd $HIVE_HOME/bin
  2. ./beeline
  3. !connect jdbc:hive2://zkNode1:2181,zkNode2:2181,zkNode3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk liuxiaowen ""

</pre>

image.png

可以正常连接。

执行一个HQL查询,日志中显示连接到的HiveServer2实例为Node2,停掉Node2中的HiveServer2实例后,需要重新使用!connect命令连接,之后可以继续正常执行查询,日志显示连接到了Node1中的实例。

作者:
lxw的大数据田地 » HiveServer2的高可用-HA配置

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352