0

在我的Spark應用程序中,我通過命令行參數傳遞了aws憑證。Spark:如何不在Spark應用程序中明確使用aws憑證

spark.sparkContext.hadoopConfiguration.set("fs.s3.awsAccessKeyId", awsAccessKeyId) 
spark.sparkContext.hadoopConfiguration.set("fs.s3.awsSecretAccessKey", awsSecretAccessKey) 
spark.sparkContext.hadoopConfiguration.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem") 

然而,在集羣模式下明確地傳遞節點之間的憑證是巨大的安全問題,因爲這些證書被作爲文本傳遞。

如何讓我的應用程序與IAmRole或其他適當的工作方式,並不需要在星火應用程序的代碼,這兩條線:

spark.sparkContext.hadoopConfiguration.set("fs.s3.awsAccessKeyId", awsAccessKeyId) 
spark.sparkContext.hadoopConfiguration.set("fs.s3.awsSecretAccessKey", awsSecretAccessKey) 

回答

2

可以在覈心-site.xml中添加以下的配置Hadoop的CONF並不能在你的代碼庫中添加它

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
<configuration> 
    <property> 
    <name>fs.s3n.awsAccessKeyId</name> 
    <value>my_aws_access_key_id_here</value> 
    </property> 
    <property> 
    <name>fs.s3n.awsSecretAccessKey</name> 
    <value>my_aws_secret_access_key_here</value> 
    </property> 
</configuration> 

使用上述文件只是export HADOOP_CONF_DIR=~/Private/.aws/hadoop_conf運行火花或conf/spark-env.sh

前而對於IAM角色,已經有bug在spark 1.6中打開https://issues.apache.org/jira/browse/SPARK-16363

相關問題