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
Hadoop Apache Spark错误:无法连接到akka。tcp://sparkMaster@_Hadoop_Apache Spark_Cloudera - Fatal编程技术网

Hadoop Apache Spark错误:无法连接到akka。tcp://sparkMaster@

Hadoop Apache Spark错误:无法连接到akka。tcp://sparkMaster@,hadoop,apache-spark,cloudera,Hadoop,Apache Spark,Cloudera,这是我们使用ApacheSpark和hadoop等大数据工具的第一步 我们安装了Cloudera CDH 5.3。从cloudera manager中,我们选择安装spark。Spark在群集中的一个节点中运行良好 在我的机器上,我制作了一个小应用程序,可以连接到hadoop HDFS上读取存储的文本文件 我正在尝试从Eclipse运行应用程序,它会显示这些消息 15/02/11 14:44:01信息客户端。AppClient$ClientActor:连接到主服务器spark://10.62.8

这是我们使用ApacheSpark和hadoop等大数据工具的第一步

我们安装了Cloudera CDH 5.3。从cloudera manager中,我们选择安装spark。Spark在群集中的一个节点中运行良好

在我的机器上,我制作了一个小应用程序,可以连接到hadoop HDFS上读取存储的文本文件

我正在尝试从Eclipse运行应用程序,它会显示这些消息

15/02/11 14:44:01信息客户端。AppClient$ClientActor:连接到主服务器spark://10.62.82.21:7077...
11月15日02月14:44:02警告客户端。AppClient$ClientActor:无法连接到akka。tcp://sparkMaster@10.62.82.21:7077:akka.remote.InvalidAssociation:无效地址:akka。tcp://sparkMaster@10.62.82.21:7077
15/02/11 14:44:02警告远程处理:尝试与无法访问的远程地址[akka]关联。tcp://sparkMaster@10.62.82.21:7077]. 该地址现在被选通5000毫秒,所有发送到该地址的消息将以死信的形式发送。原因:连接被拒绝:无进一步信息:/10.62.82.21:7077

应用程序有一个类,使用下面的行创建上下文

JavaSparkContext sc=new JavaSparkContext(new SparkConf().setAppName(“火花计数”).setMaster(“spark://10.62.82.21:7077"));

其中,该IP为机器火花工作的IP

然后,我尝试使用以下行从HDFS读取一个文件

sc.textFile(“hdfs://10.62.82.21/tmp/words.txt“”


当我运行应用程序时,我得到了检查Spark master日志的命令,您应该会看到如下内容:

15/02/11 13:37:14 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://sparkMaster@mymaster:7077]
15/02/11 13:37:14 INFO Remoting: Remoting now listens on addresses: [akka.tcp://sparkMaster@mymaster:7077]
15/02/11 13:37:14 INFO Master: Starting Spark master at spark://mymaster:7077
然后,在连接到主机时,请确保使用与上述日志中的主机名完全相同的主机名(不要使用IP地址):


Spark standalone对主机名/IP内容有点挑剔。

当您使用shell命令“sbin/start master.sh”创建Spark master时。转到地址并检查“URL”行。

我注意到没有被接受的答案,只是为了获取信息,我想我应该提到几件事

首先,在conf目录的spark-env.sh文件中,spark_MASTER_IP和spark_LOCAL_IP设置可以是主机名。你不想让他们这样,但他们可以

正如在另一个答案中所指出的,Spark可能会对主机名和IP地址有点挑剔,因为这个已解决的bug/功能:。问题是,不清楚他们“解决”的方法是否只是告诉我们使用IP而不是主机名

我现在也有同样的问题,你要做的第一件事就是检查基本情况

你能ping一下Spark master运行的盒子吗?你能把工人从主人那里弄出来吗?更重要的是,您可以从主框向工作者发送无密码ssh吗?您需要能够使用私钥执行此操作,并在conf/slaves文件中输入worker。我在结尾抄写了相关段落

您可能会遇到这样一种情况:工作人员可以联系主机,但主机无法返回工作人员,因此看起来没有建立连接。检查两个方向

最后,在所有的设置组合中,在刚才的一个有限的实验中,我只找到了一个重要的设置:在主设备上,在spark-env.sh中,将spark\u master\u IP设置为IP地址,而不是主机名。然后通过spark://192.168.0.10:7077 瞧,它连接起来了!这里似乎不需要任何其他配置参数

以下是文档中关于conf中ssh和从属文件的段落:

要使用启动脚本启动Spark独立群集,您需要 应该在Spark目录中创建一个名为conf/slaves的文件 必须包含您要访问的所有计算机的主机名 启动Spark workers,每条生产线一名。如果conf/slaves不存在,则 启动脚本默认为一台机器(localhost),即 用于测试。注意,主机访问每个 通过ssh的工作机。默认情况下,ssh并行运行,并且 需要设置无密码(使用私钥)访问权限。如果 如果没有无密码设置,可以设置环境 变量SPARK_SSH_前台,并为每个 工人


一旦你做到了这一点,使用IP地址应该在你的代码中起作用。让我们知道!这可能是一个恼人的问题,了解到大多数配置参数都无关紧要是件好事。

您是否为同一台机器配置了多个IP?实际上,我不知道,但如果我使用域名而不是IP,则会引发相同的异常。当您启动IFConfig时,您会看到什么?我已与系统管理员进行了检查,并且计算机只有一个IP。实际上我怀疑安装了Spark。机器上运行着一个spark进程(pgrep-f spark用进程id回复),但是当我们启动spark shell时,它会在显示一些异常后打开scala shell。有没有办法确保spark安装正确?打开外壳后会出现哪些异常情况?你正在连接到主机吗?这台机器有一个域名,如果我使用它而不是IP,会引发相同的异常。另一个陷阱是它充当对等系统。您的客户机/驱动程序应用程序必须可由主机连接。您可能已禁用防火墙设置并将其添加到SparkConf:.set(“spark.driver.host”,“mydriverapp”).set(“spark.driver.port”,“7076”)这是一个很好的建议,同时在我今天的测试中,我发现如果URL显示主机名,无论发生什么情况,它都不会连接。只有当我设置一个设置(SPARK_MASTER_IP)并使用IP地址时,它才会连接。
.setMaster("spark://mymaster:7077"));