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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM