• sparkthriftserver启动及调优


    Sparkthriftserver启用及优化

    1、  概述

    sparkthriftserver用于提供远程odbc调用,在远端执行hive sql查询。默认监听10000端口,Hiveserver2默认也是监听10000端口,为了避免冲突,需要修改sparkthriftserver的端口。启用sparkthriftserver需要将hive-site.xml文件copyspakrconf目录下,元数据存储在mysql中,所以还需要mysql-connector-java-5.1.43-bin.jar,用于连接mysql

     

     

    2、  配置

    1)hive-site.xml配置文明如下:

    # cat hive-site.xml

    <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>com.mysql.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>

       <property>

             <name>hive.metastore.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>bson.split.read_splits</name>

            <value>false</value>

         </property>

         <property>

            <name>hive.cli.print.header</name>

            <value>true</value>

         </property>

         <property>

            <name>mapred.reduce.child.java.opts</name>

            <value>-Xmx2g</value>

         </property>

    </configuration>

     

    2)首先将下载好的mysql-connector-java-5.1.43-bin.jar复制到sparkjars目录下

     

    重新启动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>com.mysql.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很简单,只需要到sparksbin目录下,有个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、  优化

    优化主要在两个方面入手:1spark2thriftserver

    Spark优化,见spark的文章。此处只对2进行介绍:

    启动的时候指定executor-memorytotal-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-memory 5g --total-executor-cores 5

     

     

    --hiveconf 指定启动的端口,也可以写在hive-site.xml里面;--master指定spark的地址 spark://spark:7077  第二个sparkspark所在服务器的主机名,需要在hosts文件里面做一下解析,添加一条记录。

    --executor-memory 5g 指定每个executor占用的内存大小,我这里设置了5g这个需要根据自己的环境和数据量的大小来确定;--total-executor-cores 5指定占用的cpu核数,这个值需要根据当前服务器的总的cpu核数以及其他服务使用cpu的情况来确定。此处指定的内存和cpucore是永久占用的。可以在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

  • 相关阅读:
    SQL之CASE WHEN用法详解
    MySQL笔记汇总
    Linux常用命令
    TCP/IP速记
    数据结构和算法速记
    多线程相关概念
    线程安全&Java内存模型
    线程通讯wait&notify
    创建多线程的4种方式
    重写ThreadPoolTaskExecutor
  • 原文地址:https://www.cnblogs.com/cuishuai/p/7693417.html
Copyright © 2020-2023  润新知