首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >星火BlockManager在本地主机上运行

星火BlockManager在本地主机上运行
EN

Stack Overflow用户
提问于 2015-04-08 19:01:09
回答 2查看 8.3K关注 0票数 4

我有一个简单的脚本文件,我试图在模拟教程这里的星火壳中执行。

代码语言:javascript
复制
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

sc.stop();

val conf = new SparkConf().setAppName("MyApp").setMaster("mesos://zk://172.24.51.171:2181/mesos").set("spark.executor.uri", "hdfs://172.24.51.171:8020/spark-1.3.0-bin-hadoop2.4.tgz").set("spark.driver.host", "172.24.51.142")

val sc2 = new SparkContext(conf)

val file = sc2.textFile("hdfs://172.24.51.171:8020/input/pg4300.txt")

val errors = file.filter(line => line.contains("ERROR"))

errors.count()

我的namenode和mesos主机在172.24.51.171上,我的ip地址是172.24.51.142。我将这些行保存到一个文件中,然后使用命令启动该文件:

代码语言:javascript
复制
/opt/spark-1.3.0-bin-hadoop2.4/bin/spark-shell -i WordCount.scala

我的远程执行程序都会因为类似以下错误而死亡:

代码语言:javascript
复制
15/04/08 14:30:39 ERROR RetryingBlockFetcher: Exception while beginning fetch of 1 outstanding blocks 
java.io.IOException: Failed to connect to localhost/127.0.0.1:48554
    at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:191)
    at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:156)
    at org.apache.spark.network.netty.NettyBlockTransferService$$anon$1.createAndStart(NettyBlockTransferService.scala:78)
    at org.apache.spark.network.shuffle.RetryingBlockFetcher.fetchAllOutstanding(RetryingBlockFetcher.java:140)
    at org.apache.spark.network.shuffle.RetryingBlockFetcher.start(RetryingBlockFetcher.java:120)
    at org.apache.spark.network.netty.NettyBlockTransferService.fetchBlocks(NettyBlockTransferService.scala:87)
    at org.apache.spark.network.BlockTransferService.fetchBlockSync(BlockTransferService.scala:89)
    at org.apache.spark.storage.BlockManager$$anonfun$doGetRemote$2.apply(BlockManager.scala:594)
    at org.apache.spark.storage.BlockManager$$anonfun$doGetRemote$2.apply(BlockManager.scala:592)
    at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
    at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
    at org.apache.spark.storage.BlockManager.doGetRemote(BlockManager.scala:592)
    at org.apache.spark.storage.BlockManager.getRemoteBytes(BlockManager.scala:586)
    at org.apache.spark.broadcast.TorrentBroadcast$$anonfun$org$apache$spark$broadcast$TorrentBroadcast$$readBlocks$1.org$apache$spark$broadcast$TorrentBroadcast$$anonfun$$getRemote$1(TorrentBroadcast.scala:126)
    at org.apache.spark.broadcast.TorrentBroadcast$$anonfun$org$apache$spark$broadcast$TorrentBroadcast$$readBlocks$1$$anonfun$1.apply(TorrentBroadcast.scala:136)
    at org.apache.spark.broadcast.TorrentBroadcast$$anonfun$org$apache$spark$broadcast$TorrentBroadcast$$readBlocks$1$$anonfun$1.apply(TorrentBroadcast.scala:136)
    at scala.Option.orElse(Option.scala:257)
    at org.apache.spark.broadcast.TorrentBroadcast$$anonfun$org$apache$spark$broadcast$TorrentBroadcast$$readBlocks$1.apply$mcVI$sp(TorrentBroadcast.scala:136)
    at org.apache.spark.broadcast.TorrentBroadcast$$anonfun$org$apache$spark$broadcast$TorrentBroadcast$$readBlocks$1.apply(TorrentBroadcast.scala:119)
    at org.apache.spark.broadcast.TorrentBroadcast$$anonfun$org$apache$spark$broadcast$TorrentBroadcast$$readBlocks$1.apply(TorrentBroadcast.scala:119)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at org.apache.spark.broadcast.TorrentBroadcast.org$apache$spark$broadcast$TorrentBroadcast$$readBlocks(TorrentBroadcast.scala:119)
    at org.apache.spark.broadcast.TorrentBroadcast$$anonfun$readBroadcastBlock$1.apply(TorrentBroadcast.scala:174)
    at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1152)
    at org.apache.spark.broadcast.TorrentBroadcast.readBroadcastBlock(TorrentBroadcast.scala:164)
    at org.apache.spark.broadcast.TorrentBroadcast._value$lzycompute(TorrentBroadcast.scala:64)
    at org.apache.spark.broadcast.TorrentBroadcast._value(TorrentBroadcast.scala:64)
    at org.apache.spark.broadcast.TorrentBroadcast.getValue(TorrentBroadcast.scala:87)
    at org.apache.spark.broadcast.Broadcast.value(Broadcast.scala:70)
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:58)
    at org.apache.spark.scheduler.Task.run(Task.scala:64)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: localhost/127.0.0.1:48554
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
    at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:208)
    at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:287)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:528)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
    ... 1 more 

这个失败发生在我运行errors.count()命令之后。在shell的前面,在创建新的SparkContext之后,我看到了行:

代码语言:javascript
复制
15/04/08 14:31:18 INFO NettyBlockTransferService: Server created on 48554
15/04/08 14:31:18 INFO BlockManagerMaster: Trying to register BlockManager
15/04/08 14:31:18 INFO BlockManagerMasterActor: Registering block manager localhost:48554 with 265.4 MB RAM, BlockManagerId(<driver>, localhost, 48554)
15/04/08 14:31:18 INFO BlockManagerMaster: Registered BlockManager

我猜发生了什么,星火正在将BlockManager的地址记录为localhost: 48554,然后发送给所有试图与本地主机对话的执行者:48554,而不是48554端口的驱动程序的ip地址。为什么使用本地主机作为BlockManager的地址而不是spark.driver.host?

更多信息

  1. 火花控制中有一个spark.blockManager.port,但是没有spark.blockManager.host?这里只有一个spark.driver.host,您可以看到我在SparkConf中设置了它。
  2. 可能与此JIRA机票有关,尽管这似乎是一个网络问题。我的网络配置了很好的DNS。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-25 14:49:50

在调用火花壳(或添加火花-defaults.conf)时,可以使用--主参数提供Spark地址吗?我也遇到了类似的问题(请参阅我的post Shell监听本地主机而不是配置的IP地址。),当在shell中动态创建上下文时,BlockManager似乎会监听本地主机。

日志:

  • 当使用原始上下文(侦听主机名)时,BlockManagerInfo:在ubuntu64server2:33301上的内存中添加broadcast_1_piece0
  • 创建新上下文时(侦听本地主机),BlockManagerInfo:在localhost上的内存中添加broadcast_1_piece0 :40235

我必须连接到Cassandra集群,并能够通过在Sparkdefaults.conf中提供spark.cassandra.connection.host并在shell中导入包com.datastax.spark.connector._来查询它。

票数 3
EN

Stack Overflow用户

发布于 2015-04-09 14:18:09

尝试通过SPARK_LOCAL_IP对象设置spark.local.ip (在命令行上)或设置spark.local.ip

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29523154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档