如何使用 Zeppelin 访问 aws spark-ec2 集群和 s3 存储桶
How to use Zeppelin to access aws spark-ec2 cluster and s3 buckets
我有一个通过 spark-ec2 脚本设置的 aws ec2 集群。
我想配置 Zeppelin,这样我就可以在 Zeppelin 上本地编写 scala 代码,并 运行 在集群上(通过 master)编写它。此外,我希望能够访问我的 s3 存储桶。
我遵循了 this guide and this other one 但是我似乎无法 运行 从 zeppelin 到我的集群的 scala 代码。
我用
在本地安装了 Zeppelin
mvn install -DskipTests -Dspark.version=1.4.1 -Dhadoop.version=2.7.1
我的安全组设置为 AmazonEC2FullAccess 和 AmazonS3FullAccess。
我将 Zeppelin Webapp 上的 spark 解释器属性编辑为 spark://.us-west-2.compute.amazonaws.com:7077
来自本地[*]
当我测试出来的时候
sc
在解释器中,我收到此错误
java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) 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:589) at org.apache.thrift.transport.TSocket.open(TSocket.java:182) at
当我尝试编辑 "conf/zeppelin-site.xml" 以将我的端口更改为 8082 时,没有区别。
注意:我最终还想通过以下方式访问我的 s3 存储桶:
sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "xxx")
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey","xxx")
val file = "s3n://<<bucket>>/<<file>>"
val data = sc.textFile(file)
data.first
如果任何善意的用户有任何建议(尚未发布在 Whosebug 上)请告诉我!
很可能您的 IP 地址被阻止连接到您的 spark 集群。您可以尝试启动指向该端点的 spark-shell(或者甚至只是远程登录)。要修复它,您可以登录您的 AWS 帐户并更改防火墙设置。也有可能它没有指向正确的主机(我假设您从 spark://.us-west-2.compute.amazonaws.com:7077
中删除了特定的框,但如果没有,应该有一些用于 .us-west-2)。您可以尝试通过 ssh 连接到该机器并 运行 netstat --tcp -l -n 来查看它是否在监听(或者甚至只是 ps aux |grep java 来查看 Spark 是否运行).
我有一个通过 spark-ec2 脚本设置的 aws ec2 集群。
我想配置 Zeppelin,这样我就可以在 Zeppelin 上本地编写 scala 代码,并 运行 在集群上(通过 master)编写它。此外,我希望能够访问我的 s3 存储桶。
我遵循了 this guide and this other one 但是我似乎无法 运行 从 zeppelin 到我的集群的 scala 代码。
我用
在本地安装了 Zeppelinmvn install -DskipTests -Dspark.version=1.4.1 -Dhadoop.version=2.7.1
我的安全组设置为 AmazonEC2FullAccess 和 AmazonS3FullAccess。
我将 Zeppelin Webapp 上的 spark 解释器属性编辑为 spark://.us-west-2.compute.amazonaws.com:7077 来自本地[*]
当我测试出来的时候
sc
在解释器中,我收到此错误
java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) 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:589) at org.apache.thrift.transport.TSocket.open(TSocket.java:182) at
当我尝试编辑 "conf/zeppelin-site.xml" 以将我的端口更改为 8082 时,没有区别。
注意:我最终还想通过以下方式访问我的 s3 存储桶:
sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "xxx")
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey","xxx")
val file = "s3n://<<bucket>>/<<file>>"
val data = sc.textFile(file)
data.first
如果任何善意的用户有任何建议(尚未发布在 Whosebug 上)请告诉我!
很可能您的 IP 地址被阻止连接到您的 spark 集群。您可以尝试启动指向该端点的 spark-shell(或者甚至只是远程登录)。要修复它,您可以登录您的 AWS 帐户并更改防火墙设置。也有可能它没有指向正确的主机(我假设您从 spark://.us-west-2.compute.amazonaws.com:7077
中删除了特定的框,但如果没有,应该有一些用于 .us-west-2)。您可以尝试通过 ssh 连接到该机器并 运行 netstat --tcp -l -n 来查看它是否在监听(或者甚至只是 ps aux |grep java 来查看 Spark 是否运行).