I have a Standalone spark cluster running in an Amazon VPC that I set up by hand. All I did was provision the machines from a common AMI image (my underlying distribution is Ubuntu), I created a "sparkuser" on each machine and I have a /home/sparkuser/spark folder where I downladed spark. I did this on the master only, I did sbt/sbt assemble and I set up the conf/spark-env.sh to point to the master which is an IP address (in my case 10.10.0.200, the port is the default 7077). I also set up the slaves file in the same subdirectory to have all 16 ip addresses of the worker nodes (in my case 10.10.0.201-216). After sbt/sbt assembly was done on master, I then did cd ~/; tar -czf spark.tgz spark/ and I copied the resulting tgz file to each worker using the same "sparkuser" account and unpacked the .tgz on each slave (this will effectively replicate everything from master to all slaves - you can script this so you don't do it by hand).

Your AMI should have the distribution's version of Java and git installed by the way.

All you have to do then is sparkuser@spark-master> spark/sbin/start-all.sh (for 0.9, in 0.8.1 it is spark/bin/start-all.sh) and it will all automagically start :)

All my Amazon nodes come with 4x400 Gb of ephemeral space which I have set up into a 1.6TB RAID0 array on each node and I am pooling this into an HDFS filesystem which is operated by a namenode outside the spark cluster while all the datanodes are the same nodes as the spark workers. This enables replication and extremely fast access since ephemeral is much faster than EBS or anything else on Amazon (you can do even better with SSD drives on this setup but it will cost ya).

If anyone is interested I can document our pipeline set up - I came up with it myself and do not have a clue as to what the industry standards are since I could not find any written instructions anywhere online about how to set up a whole data analytics pipeline from the point of ingestion to the point of analytics (people don't want to share their secrets? or am I just in the dark and incapable of using Google properly?). My requirement was that I wanted this to run within a VPC for added security and simplicity, the Amazon security groups get really old quickly. Added bonus is that you can use a VPN as an entry into the whole system and your cluster instantly becomes "local" to you in terms of IPs etc. I use OpenVPN since I don't like Cisco nor Juniper (the only two options Amazon provides for their VPN gateways).

Ognen


On 3/3/14, 1:00 PM, Bin Wang wrote:
Hi there,

I have a CDH cluster set up, and I tried using the Spark parcel come with Cloudera Manager, but it turned out they even don't have the run-example shell command in the bin folder. Then I removed it from the cluster and cloned the incubator-spark into the name node of my cluster, and built from source there successfully with everything as default.

I ran a few examples and everything seems work fine in the local mode. Then I am thinking about scale it to my cluster, which is what the "DISTRIBUTE + ACTIVATE" command does in Cloudera Manager. I want to add all the datanodes to the slaves and think I should run Spark in the standalone mode.

Say I am trying to set up Spark in the standalone mode following this instruction:
https://spark.incubator.apache.org/docs/latest/spark-standalone.html
However, it says "Once started, the master will print out a |spark://HOST:PORT| URL for itself, which you can use to connect workers to it, or pass as the "master" argument to |SparkContext|. You can also find this URL on the master's web UI, which is http://localhost:8080 <http://localhost:8080/> by default."

After I started the master, there is no URL printed on the screen and neither the web UI is running.
Here is the output:
[root@box incubator-spark]# ./sbin/start-master.sh
starting org.apache.spark.deploy.master.Master, logging to /root/bwang_spark_new/incubator-spark/sbin/../logs/spark-root-org.apache.spark.deploy.master.Master-1-box.out

First Question: am I even in the ballpark to run Spark in standalone mode if I try to fully utilize my cluster? I saw there are four ways to launch Spark on a cluster, AWS-EC2, Spark in standalone, Apache Meso, Hadoop Yarn... which I guess standalone mode is the way to go?

Second Question: how to get the Spark URL of the cluster, why the output is not like what the instruction says?

Best regards,

Bin

--
Some people, when confronted with a problem, think "I know, I'll use regular 
expressions." Now they have two problems.
-- Jamie Zawinski

Reply via email to