spark安装
版本:hadoop2.6.0 hive-2.1.0 spark-1.6
1、编译spark
因为hive使用的是apache-hive-2.1.0,不需要spark集成的hive,所以需要自己手动编译spark源码,编译过程大约1个小时。
编译前提:
安装scala环境,联网,setting配置成阿里云的
修改sh脚本,修改一下maven_home,$MAVEN_HOME/bin/mvn
然后执行脚本就ok了,官网给出的执行语句是:
./make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.4"
hadoop的2.4和2.6无所谓,只要是2+的基本都可以。
开启spark报错找不到类:
解决办法是在spark-env.sh里面添加 :export SPARK_DIST_CLASSPATH=$(hadoop classpath)
期间可能有的包下载不下来,根据包的地址,手动用迅雷或者其他工具下载,放到maven仓库中,然后在执行脚本。
2、安装spark
首先,配置spark-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_91
export SCALA_HOME=/opt/wangyf05/scala-2.10.7
export HADOOP_HOME=/opt/wangyf05/hadoop-2.6.0-cdh5.7.1
export HADOOP_CONF_DIR=/opt/wangyf05/hadoop-2.6.0-cdh5.7.1/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_MASTER_IP=10.137.187.11
export SPARK_HOME=/opt/wangyf05/spark
export SPARK_LAUNCH_WITH_SCALA=0
export SPARK_WORKER_MEMORY=1g
export SPARK_DRIVER_MEMORY=1g
export SPARK_LIBRARY_PATH=/opt/wangyf05/spark/lib
export SPARK_MASTER_WEBUI_PORT=8086
export SPARK_WORKER_DIR=/opt/wangyf05/spark/work
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_PORT=7078
export SPARK_LOG_DIR=/opt/wangyf05/spark/logs
export SPARK_PID_DIR='/opt/wangyf05/spark/tmp' 这个引号得带着
export export SPARK_DIST_CLASSPATH=$(/opt/wangyf05/hadoop-2.6.0-cdh5.7.1/bin/hadoop classpath)
然后配置spark-defaults.conf
spark.master spark://master:7077
spark.eventLog.enabled true
spark.eventLog.dir hdfs://master:9000/directory
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 1g
spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
配置slaves。可以和hadoop的slaves、works相同配置。
node1
node2
修改hive的hive-site.xml,添加如下,然后cp到spark下的conf下
<property>
<name>spark.home</name>
<value>/opt/wangyf05/spark</value>
</property>
<property>
<name>spark.master</name>
<value>spark://master:7077</value>
</property>
<property>
<name>spark.submit.deployMode</name>
<value>client</value>
</property>
<property>
<name>spark.eventLog.enabled</name>
<value>true</value>
</property>
<property>
<name>spark.eventLog.dir</name>
<value>hdfs://master:9000/directory</value>
</property>
<property>
<name>spark.serializer</name>
<value>org.apache.spark.serializer.KryoSerializer</value>
</property>
<property>
<name>spark.executor.memeory</name>
<value>1g</value>
</property>
<property>
<name>spark.driver.memeory</name>
<value>1g</value>
</property>
<property>
<name>spark.executor.extraJavaOptions</name>
<value>-XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"</value>
</property>
文件夹该创建的创建 tmp work logs
需要把spark-assembly-1.6.0-hadoop2.6.0.jar放到hive_home下的lib下
3、spark on yarn配置
需要添加这样一句话在spark-env.sh
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
修改spark-defaults.conf
spark.master yarn-cluster
配置yarn-site.xml
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
配置hive-site.xml(hive下的和spark下的)
<property>
<name>spark.master</name>
<value>yarn-cluster</value>
</property>
最后记得同步各个节点。
重启集群,不启动spark,直接执行hive任务。