Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 使用提供的Hadoop构建Spark_Apache Spark - Fatal编程技术网

Apache spark 使用提供的Hadoop构建Spark

Apache spark 使用提供的Hadoop构建Spark,apache-spark,Apache Spark,我一直在尝试用定制的Hadoop构建一个定制的Spark构建(我需要在Hadoop 2.9.1上应用一个补丁,允许我在以s3://开头的路径上使用S3Guard) 以下是我在克隆spark并在我的Dockerfile上使用spark 2.3.1后构建spark的方法: ARG HADOOP_VER=2.9.1 RUN bash -c \ "MAVEN_OPTS='-Xmx2g -XX:ReservedCodeCacheSize=512m' \ ./dev/make-distrib

我一直在尝试用定制的Hadoop构建一个定制的Spark构建(我需要在Hadoop 2.9.1上应用一个补丁,允许我在以
s3://
开头的路径上使用S3Guard)

以下是我在克隆spark并在我的
Dockerfile
上使用spark 2.3.1后构建spark的方法:

ARG HADOOP_VER=2.9.1
RUN bash -c \
    "MAVEN_OPTS='-Xmx2g -XX:ReservedCodeCacheSize=512m' \
    ./dev/make-distribution.sh \
    --name hadoop${HADOOP_VER} \
    --tgz \
    -Phadoop-provided \
   -Dhadoop.version=${HADOOP_VER} \
   -Phive \
   -Phive-thriftserver \
   -Pkubernetes"
这可以成功地编译,但当我尝试使用Spark与
s3://
路径时,Hadoop代码上仍然存在一个错误,我确信在编译它时我通过补丁删除了这个错误。据我所知,Spark build并没有使用Hadoop提供的JAR

编译Spark的正确方法是什么,这样它就不包括Hadoop JAR,而是使用我提供的JAR


注意:我在独立模式下运行,设置
SPARK\u DIST\u CLASSPATH=$(hadoop CLASSPATH)
,使其指向我的hadoop CLASSPATH。

对于自定义hadoop版本,您需要将自己的工件放到本地机器上,并放入在集群中分发的SPARK tar文件中(通常以HDFS格式),并在部署工人时下载(在纱线中;不知道k8s)

要可靠地做到这一点,最好的方法是在本地构建一个具有新版本号的hadoop发行版,并以此为基础构建spark

dev/make-distribution.sh -Phive -Phive-thriftserver -Pyarn -Pkubernetes -Phadoop-3.1 -Phadoop-cloud -Dhadoop.version=2.9.3-SNAPSHOT
这将创建一个带有hadoop aws和您所构建的匹配SDK的spark发行版

速度相当慢:如果可以的话,运行钉枪/锌来加速。如果您引用的版本也在公共repo中,那么很有可能是maven repo~/.m2/存储库中的缓存副本潜入的

然后:在尝试任何更复杂的设置之前,打开spark shell并从那里进行测试


最后,s3guard有一些开放的JIRA,可以不用担心URL中的s3与s3a。那是你的补丁吗?如果没有,是否有效?如果需要它的人感到高兴的话,我们可能会在未来的hadoop版本中使用它。我们将
s3://
处理程序设置为始终由
s3a
处理,并希望继续使用
s3://
,但支持s3guard。OK/。很久以前有人讨论过dynamodb表中没有完整的s3a://URL。毕竟,这是不必要的。特定的FS实例需要添加前缀。不过还没写出来