前端时间将spark-hive-hadoop环境搭建好之后,利用java程序进行查询,发现hive反馈结果很慢,所以对spark-hive进行调优。
环境:
三台虚拟机
系统centos7
cpu 11核
内存 64G
硬盘 500G
1.由于第一次接触spark所以没有对spark进行配置参数调优,然后在spark-env.conf进行配置
export JAVA_HOME=/opt/java/jdk1.8.0_201 export HADOOP_HOME=/opt/hadoop/hadoop-2.8.0 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop? export SPARK_HOME=/opt/spark/spark-1.6.3-bin-hadoop2.4-without-hive export SPARK_MASTER_IP=master export SPARK_EXECUTOR_MEMORY=10G export SPARK_CLASSPATH=/opt/spark/jars/* export SPARK_WORKER_CORES=8 export SPARK_WORKER_INSTANCES=4 export SPARK_DIST_CLASSPATH=$(/opt/hadoop/hadoop-2.8.0/bin/hadoop classpath)
红色部分是新增加的,就是在每台worker上新增4个work实例也就是说虽然我只有两个数据节点的服务器但是我通过这个参数将每个数据节点服务器的worker增加到了4个。
2.hive-site.xml
hive.exec.parallel 设置为true
3.这点比较重要,就是hive有时候在执行有join的sql语句的时候,你明明有8个worker但是却只有一个或者两个在工作,没有完成的利用服务器资源,这就需要让hive将所有的worker调用起来,然后对sql进行调优,规则就是 先join小表然后在join大表
4.就是如果服务器资源够充足就尽可能的将资源给大,充分压榨服务器。
|