jsi*_*h13 10 ubuntu cluster-computing apache-spark
我在Openbuack上创建了一个Spark集群,在Ubuntu14.04上运行,内存为8GB.我创建了两个虚拟机,每个虚拟机3GB(为父操作系统保留2 GB).此外,我从第一台虚拟机和第二台机器的3名工人创建了一个主人和两名工人.
spark-env.sh文件具有基本设置
export SPARK_MASTER_IP=10.0.0.30
export SPARK_WORKER_INSTANCES=2
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_CORES=1
Run Code Online (Sandbox Code Playgroud)
每当我与部署的start-all.sh集群,我得到"无法启动org.apache.spark.deploy.worker.Worker",有的时候"未能推出org.apache.spark.deploy.master.Master".当我看到日志文件以查找错误时,我得到以下内容
星火命令:/ usr/lib中/ JVM/Java的7-的OpenJDK,AMD64 /斌/ java命令> /home/ubuntu/spark-1.5.1/sbin /../的conf /:/首页/ Ubuntu的/火花> 1.5.1 /组件/目标/阶-2.10 /火花组件-1.5.1-> hadoop2.2.0.jar:/home/ubuntu/spark-1.5.1/lib_managed/jars/datanucleus-api-> jdo- 3.2.6.jar:/home/ubuntu/spark-1.5.1/lib_managed/jars/datanucleus-core-> 3.2.10.jar:/home/ubuntu/spark-1.5.1/lib_managed/jars/datanucleus-rdbms - > 3.2.9.jar -Xms1g -Xmx1g -XX:MaxPermSize参数=256米> org.apache.spark.deploy.master.Master --ip 10.0.0.30 --port 7077 --webui->端口8080
虽然我得到了失败的消息,但主人或工人在几秒钟后就活了起来.
有人可以解释原因吗?
chb*_*own 11
Spark配置系统是一堆环境变量,参数标志和Java属性文件.我只花了几个小时追踪相同的警告,并解开Spark初始化程序,这就是我发现的:
sbin/start-all.sh
电话sbin/start-master.sh
(然后sbin/start-slaves.sh
)sbin/start-master.sh
电话 sbin/spark-daemon.sh start org.apache.spark.deploy.master.Master ...
sbin/spark-daemon.sh start ...
分叉调用bin/spark-class org.apache.spark.deploy.master.Master ...
,捕获生成的进程id(pid),休眠2秒,然后检查pid命令的名称是否为"java"bin/spark-class
是一个bash脚本,所以它从命令名称"bash"开始,然后继续:
bin/load-spark-env.sh
java
可执行文件java ... org.apache.spark.launcher.Main ...
以获取Spark部署所需的完整类路径exec
,到java ... org.apache.spark.deploy.master.Master
,此时命令名称变为"java"如果步骤4.1到4.5花费的时间超过2秒,这在我(和你的)体验中似乎在java
以前从未运行过的新操作系统中是不可避免的,你会得到"无法启动"的消息,尽管实际上没有失败.
奴隶会抱怨出于同样的原因,并且在主人实际可用之前摔倒,但他们应该继续重试,直到他们成功连接到主人.
我在EC2上运行了一个非常标准的Spark部署; 我用:
conf/spark-defaults.conf
通过设置spark.executor.memory
和添加一些自定义jarspark.{driver,executor}.extraClassPath
conf/spark-env.sh
设置 SPARK_WORKER_CORES=$(($(nproc) * 2))
conf/slaves
列出我的奴隶这是我如何开始Spark部署,绕过一些{bin,sbin}/*.sh
雷区/迷宫:
# on master, with SPARK_HOME and conf/slaves set appropriately
mapfile -t ARGS < <(java -cp $SPARK_HOME/lib/spark-assembly-1.6.1-hadoop2.6.0.jar org.apache.spark.launcher.Main org.apache.spark.deploy.master.Master | tr '\0' '\n')
# $ARGS now contains the full call to start the master, which I daemonize with nohup
SPARK_PUBLIC_DNS=0.0.0.0 nohup "${ARGS[@]}" >> $SPARK_HOME/master.log 2>&1 < /dev/null &
Run Code Online (Sandbox Code Playgroud)
我仍然在使用sbin/start-daemon.sh
启动奴隶,因为这比nohup
在ssh
命令中调用更容易:
MASTER=spark://$(hostname -i):7077
while read -r; do
ssh -o StrictHostKeyChecking=no $REPLY "$SPARK_HOME/sbin/spark-daemon.sh start org.apache.spark.deploy.worker.Worker 1 $MASTER" &
done <$SPARK_HOME/conf/slaves
# this forks the ssh calls, so wait for them to exit before you logout
Run Code Online (Sandbox Code Playgroud)
那里!它假设我正在使用所有默认端口和东西,并且我没有做愚蠢的狗屎,就像在文件名中添加空格一样,但我认为这样更干净.
归档时间: |
|
查看次数: |
5836 次 |
最近记录: |