spark部署


问题导读

1.编译spark源文件的过程中,如何防止内存不足?
2.spark如果没有自己hadoop或则hive版本对应的预构建版本,该如何编译?
3.spark需要将hive-site.xml放入spark目录下的conf文件中,不兼容该如何处理?
4.运行spark-sql会报缺少mysql驱动包错误,该如何处理?






1、编译spark源文件
下载spark时,可以选择对应自己hadoop版本的pre-built版下载最新spark1.3.0。
如果没有自己hadoop版本对应的预构建版本,或者spark对应的hive版本不一致等都需要重新构建
构建方法详情见spark官网网址为https://spark.apache.org/docs/latest/building-spark.html
本文是使用maven进行构建,构建的命令为:
  1. export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
复制代码


执行上述命令,避免在构建过程中内存不足错误。然后执行以下命令:
  1. mvn -Pyarn -Phadoop-2.3 -Dhadoop.version=2.3.0 -Phive -Phive-0.12.0 -Phive-thriftserver -DskipTests clean package
复制代码


Pyarn代表支持yarn,Phadoop指定hadoop版本,Phive指定hive版本。
只需要更改hadoop版本和hive版本即可。详情见https://spark.apache.org/docs/latest/building-spark.html
编译时间大概为两三个小时,具体根据网络情况而定。

由于我使用的是hadoop2.3版本,我首先下载了一个pre-built  for hadoop2.3版本的spark,由于我使用的hive版本为0.12.0,pre-built内hive版本为0.13.0不能使用。
我们只需将刚才构建spark目录下assembly/target/scala-2.10目录下的spark-assembly-1.3.0-hadoop2.3.0.jar文件将pre-built  for hadoop2.3版本目录下lib中的相同文件替换掉。此时pre-built  for hadoop2.3就是我们需要的spark for hadoop2.3  and hive0.12.0。
如果没有hadoop版本需要重新构建spark目录为pre-built spark形式。

2、在yarn上运行spark
修改spark配置,首先hive-site.xml文件放入spark目录下的conf文件中,以便支持hive。此时如果有一些不兼容的错误,需要修改hive-site.xml文件,
  1.   <property>
  2.     <name>hive.metastore.schema.verification</name>
  3.     <value>true</value>
  4.   </property>
复制代码


将上面的value值改为false
修改spark-env.sh配置

  1. export JAVA_HOME=/usr/java/jdk1.7.0_55-cloudera
  2. export SCALA_HOME=/path/scala-2.10.5
  3. export HADOOP_CONF_DIR=/etc/hadoop/conf
  4. export HIVE_CONF_DIR=/etc/hive/conf
  5. export SPARK_EXECUTOR_INSTANCES=12
  6. export SPARK_EXECUTOR_CORES=6
  7. export SPARK_EXECUTOR_MEMORY=4G
  8. export SPARK_DRIVER_MEMORY=512M
  9. export SPARK_YARN_APP_NAME="spark-130"
  10. export SPARK_LIBRARY_PATH=${SPARK_HOME}/lib
复制代码


以上的配置对spark on yarn 的client模式下起作用,如果配置其他的可以参考spark-env.sh.template文件说明,或者spark-shell --help查看
运行spark-sql会报缺少mysql驱动包错误,下载mysql-connector-java.jar包

在运行程序时进行指定一下就可以了

如下:

  1. ./spark-shell \
  2.   --master yarn-client \
  3.   --driver-class-path /path/spark-1.3.0-bin-hadoop2.3/lib/mysql-connector-java-5.1.18-bin.jar
复制代码


3、说明
如果想让spark运行在yarn之上,spark部署将会非常简单。只需要将上面构建好的spark文件拷贝到driver机器上,运行spark  bin目录下命令即可,如果是client模式,yarn将会按照conf/spark-env.sh文件中设置的cpu和内存、worker  instances进行部署,部署工作由yarn进行分发,包括jar包的分发。如果是cluster模式,需要在命令行进行指定。

spark构建文件只需要放到一台机器上,就可以通过yarn启动数十台spark worker机器。

猜你喜欢

转载自blog.csdn.net/grdgrdgrd/article/details/51073035