我正試圖讓Spark歷史服務器在我的集群上運行,該集群在Kubernetes上運行,我希望將日志寫入minIO。我也在使用 minIO 作為我的 spark-submit 作業的輸入和輸出的存盤,這已經在作業了。
正確作業的 spark-submit 作業
我的作業中的 spark-submit 作業看起來如下:
spark-submit
--conf spark.hadoop.fs.s3a.access.key=XXXX
--conf spark.hadoop.fs.s3a.secret.key=XXXX
--conf spark.hadoop.fs.s3a.endpoint=https://someIpv4
--conf spark.hadoop.fs.s3a.connection.ssl.enabled=true
--conf spark.hadoop.fs.s3a.path.style.access=true
--conf spark.hadoop.fs.default.name="s3a:///"
--conf spark.driver.extraJavaOptions="-Djavax.net.ssl.trustStore=XXXX -Djavax.net.ssl.trustStorePassword=XXXX
--conf spark.executor.extraJavaOptions="-Djavax.net.ssl.trustStore=XXXX -Djavax.net.ssl.trustStorePassword=XXXX
...
正如你所看到的,我正在使用SSL連接到minIO并讀/寫檔案。
我在嘗試什么?
我試圖在不使用 SSL 的情況下,用 minIO 作為存盤來啟動歷史服務器。
為了啟動歷史服務器,我使用了已經存在的 start-history-server.sh 腳本,并使用一些配置來定義日志存盤位置的 所以你看到我沒有添加任何SSL引數。但是當我運行 我在互聯網上嘗試/發現了什么 有沒有人知道我應該在哪里尋找/我做錯了什么?
uj5u.com熱心網友回復: 我的問題是,實際上我的minIO并不接受http請求。我已經作業的spark提交作業是使用SSL的https,所以我在$SPARK_DAEMON_JAVA_OPTS中添加了所需的引數,它就作業了。
標籤:./start-history-server.sh --properties-file my_conf_file 命令。my_conf_file看起來像這樣:spark.eventLog.enabled=true
spark.eventLog.dir=s3a://myBucket/spark-events
spark.history.fs.logDirectory=s3a://myBucket/spark-events
spark.hadoop.fs.s3a.access.key=XXXX
spark.hadoop.fs.s3a.secret.key=XXXX
spark.hadoop.fs.s3a.endpoint=http://someIpv4
spark.hadoop.fs.s3a.path.style.access=true
spark.hadoop.fs.s3a.connection.ssl.enabled=false
./start-history-server.sh --properties-file my_conf_file時,我得到了這樣的錯誤:INFO AmazonHttpClient: Unable to execute HTTP request: 連接拒絕 (Connection refused)
java.net.ConnectException: 連接被拒絕 (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:607)
at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:326)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:384)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:232)
at com.amazonaws.service.s3.AmazonS3Client.invoke(AmazonS3Client.java:3528)
at com.amazonaws.service.s3.AmazonS3Client.headBucket(AmazonS3Client.java:1031)
at com.amazonaws.service.s3.AmazonS3Client.doesBucketExist(AmazonS3Client.java:994)
at org.apache.hadoop.fs.s3a.S3AFileSystem.initialize(S3AFileSystem.java:297)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2669)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:94)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2703)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2685)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:295)
at org.apache.spark.deploy.history.FsHistoryProvider.<init> (FsHistoryProvider.scala:117)
at org.apache.spark.deploy.history.FsHistoryProvider.<init>(FsHistoryProvider.scala:86)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.spark.deploy.history.HistoryServer$.main(HistoryServer.scala:296)
at org.apache.spark.deploy.history.HistoryServer.main(HistoryServer.scala)
spark.hadoop.fs.s3a.path.style.access解決了這個問題,我已經在使用了spark.hadoop.fs.s3a.impl鍵,以org.apache.hadoop.fs.s3a.S3AFileSystem為值。然而,當我這樣做時,這個類似乎并不存在于我的AWS罐子里。
aws-java-sdk-1.7.4.jar和hadoop-aws-2.7.3.jarspark.hadoop.fs.s3a.impl引數,我認為不需要這個引數?
