sparkthriftserver启动及调优
Sparkthriftserver启⽤及优化
1、概述
sparkthriftserver⽤于提供远程odbc调⽤,在远端执⾏hive sql查询。默认监听10000端⼝,Hiveserver2默认也是监听10000端⼝,为了避免冲突,需要修改sparkthriftserver的端⼝。启⽤sparkthriftserver需要将l⽂件copy到spakr的conf⽬录下,元数据存储在mysql中,所以还需要mysql-connector-java-5.1.43-bin.jar,⽤于连接mysql。
2、配置
1)l配置⽂明如下:
# l
<configuration>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>0.0.0.0</value>
<description>metadata is stored in a MySQL server</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value>
<description>metadata is stored in a MySQL server</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value&sql.jdbc.Driver</value>
<description>MySQL JDBC driver class</description>
</property>
<property>thrift
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>user name for connecting to mysql server</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>1qaz*@WSX</value>
<description>password for connecting to mysql server</description>
</property>
<property>
<name&astore.warehouse.dir</name>
<value>/data/metastore/</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>bson.output.build_splits</name>
<value>false</value>
</property>
<property>
<name>bson.split.write_splits</name>
<value>false</value>
</property>
<property>
<name>ad_splits</name>
<value>false</value>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name&duce.child.java.opts</name>
<value>-Xmx2g</value>
</property>
</configuration>
2)⾸先将下载好的mysql-connector-java-5.1.43-bin.jar复制到spark的jars⽬录下
重新启动spark服务,会将jar加载进去。本⽂⽤的是将metastore存储到mysql,通过如下配置实现:<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value>
<description>metadata is stored in a MySQL server</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value&sql.jdbc.Driver</value>
<description>MySQL JDBC driver class</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>user name for connecting to mysql server</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>1qaz*@WSX</value>
<description>password for connecting to mysql server</description>
</property>
配置完成后,需要到mysql⾥⾯进⾏授权,例如本例:
>grant metastore.* to root@localhost identified by ‘1qaz*@WSX’;
>flush privileges;
3、启动
启动sparkthriftserver很简单,只需要到spark的sbin⽬录下,有个start-thriftserver.sh,直接执⾏这个脚本就可以成功启动了。如果内⽹有防⽕墙只需要开放端⼝或做端⼝映射就可以了,这⾥不做详尽的介绍。
#cd /data/spark-2.2.0-bin-hadoop2.7/sbin
#./start-thriftserver.sh
这样⼀个默认配置的服务就启动好了,可以通过远端下载相应的ODBC⼯具进⾏连接,我们需要tableau使⽤,所以下载Simba Spark 1.2 64-bit。具体安装配置见另外⼀篇⽂章:。
这样测试环境可以使⽤,但是线上⽤这样的配置就会经常发⽣服务蹦掉现象,所以需要进⾏优化。
4、优化
优化主要在两个⽅⾯⼊⼿:1是spark;2是thriftserver
Spark优化,见spark的⽂章。此处只对2进⾏介绍:
启动的时候指定executor-memory、total-executor-cores:
启动⽅式如下:
./start-thriftserver.sh --hiveconf hive.server2.thrift.port=10000 --master spark://spark:7077 --driver-class-path /data/spark-2.2.0-bin-hadoop2.7/jars/mysql-connector-java-5.1.43-bin.jar --executor-mem
ory 5g --total-executor-cores 5
--hiveconf 指定启动的端⼝,也可以写在l⾥⾯;--master指定spark的地址 spark://spark:7077 第⼆个spark是spark所在服务器的主机名,需要在hosts⽂件⾥⾯做⼀下解析,添加⼀条记录。
--executor-memory 5g 指定每个executor占⽤的内存⼤⼩,我这⾥设置了5g这个需要根据⾃⼰的环境和数据量的⼤⼩来确定;--total-executor-cores 5指定占⽤的cpu核数,这个值需要根据当前服务器的总的cpu核数以及其他服务使⽤cpu的情况来确定。此处指定的内存和cpu的core是永久占⽤的。可以在spark UI来查看。
5、为了⽅便启动和重启,制作了⼀个启动脚本
#cat /etc/init.d/spark-thriftserver.sh
#!/bin/bash
# chkconfig: 90 79 80
# descriptions: This script is using to satrt|stop spark-thriftserver
pid=`netstat -tunlp | grep 10000| awk '{print $NF}'|awk -F "/" '{print $1}'`
case $1 in
start)
cd /data/spark-2.2.0-bin-hadoop2.7/sbin/
./start-thriftserver.sh --hiveconf hive.server2.thrift.port=10000 --master spark://spark:7077 --driver-class-path /data/spark-2.2.0-bin-hadoop2.7/jars/mysql-connector-java-5.1.43-bin.jar --executor-memory 5g --total-executor-cores 5
;;
stop)
kill -9 $pid
;;
*)
echo "Usage: $0 satrt|stop"
esac
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论