title: In Apache Spark. How to set worker/executor's environment variables?
body: <p>My spark program on EMR is constantly getting this error:</p>
  
  <pre><code>Caused by: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
      at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:421)
      at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
      at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:397)
      at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
      at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
      at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
      at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:573)
      at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)
      at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
      at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
      at org.jets3t.service.impl.rest.httpclient.RestStorageService.performRequest(RestStorageService.java:334)
      at org.jets3t.service.impl.rest.httpclient.RestStorageService.performRequest(RestStorageService.java:281)
      at org.jets3t.service.impl.rest.httpclient.RestStorageService.performRestHead(RestStorageService.java:942)
      at org.jets3t.service.impl.rest.httpclient.RestStorageService.getObjectImpl(RestStorageService.java:2148)
      at org.jets3t.service.impl.rest.httpclient.RestStorageService.getObjectDetailsImpl(RestStorageService.java:2075)
      at org.jets3t.service.StorageService.getObjectDetails(StorageService.java:1093)
      at org.jets3t.service.StorageService.getObjectDetails(StorageService.java:548)
      at org.apache.hadoop.fs.s3native.Jets3tNativeFileSystemStore.retrieveMetadata(Jets3tNativeFileSystemStore.java:172)
      at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:190)
      at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:103)
      at org.apache.hadoop.fs.s3native.$Proxy8.retrieveMetadata(Unknown Source)
      at org.apache.hadoop.fs.s3native.NativeS3FileSystem.getFileStatus(NativeS3FileSystem.java:414)
      at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1398)
      at org.apache.hadoop.fs.s3native.NativeS3FileSystem.create(NativeS3FileSystem.java:341)
      at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:906)
      at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:887)
      at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:784)
  </code></pre>
  
  <p>I did some research and found out that this authentication can be disabled in low-security situation, by setting environment variable: </p>
  
  <pre><code>com.amazonaws.sdk.disableCertChecking=true
  </code></pre>
  
  <p>but I can only set it with spark-submit.sh --conf, which only affects driver, while most of the errors are on workers.</p>
  
  <p>Is there a way to propagate them to workers?</p>
  
  <p>Thanks a lot.</p>