spark运作及开发环境搭建

spark运行及开发环境搭建
一、Linux下spark运行环境搭建
http://wenku.baidu.com/link?url=V14fWw5C3vp2G7YhTApqknz_EKwowBGP8lL_TvSbXa8PN2vASVAHUSouK7p0Pu14h3IBf8zmdfPUNUT-2Hr-cnDUzivYJKupgWnEkbHTY8i

参考
http://wenku.baidu.com/link?url=-b2L9j7w2OSic3F7rA3LGPfhQpU45jBHAzVdmYesDDw4G6qGRi35-C7cFi8Oc3E-b1aqjn3agCDSjR4IzwEF2elJouLPSjZtcKdxYEIZQQK

1、scala安装
需改为安装2.10的版本才可以和spark1.3版本的匹配
tar -zxvf scala-2.10.5.tgz

vim /etc/profile
export SCALA_HOME=/opt/scala-2.10.5
export PATH=${SCALA_HOME}/bin:$PATH
source /etc/profile

2、下载spark1.3版本
http://apache.fayea.com/spark/spark-1.3.0/spark-1.3.0-bin-hadoop2.4.tgz
tar -zxvf spark-1.3.0-bin-hadoop2.4.tgz
mv spark-1.3.0-bin-hadoop2.4 spark1.3
tty:[0] jobs:[0] cwd:[/opt/spark1.3/conf]
17:50 [root@10.10.72.182]$ cp spark-env.sh.template spark-env.sh

export SCALA_HOME=/opt/scala-2.10.5
#最大内存
export SPARK_WORK_MEMORY=1g
export SPARK_MASTER_IP=10.10.72.182
export MASTER=spark://10.10.72.182:7077
#hadoop的配置信息路径,根据hadoop搭建过程实际目录
export HADOOP_CONF_DIR=/opt/hadoop-2.4.0/etc/hadoop
export JAVA_HOME=/opt/jdk

配置slaves文件
cp slaves.template slaves

18:08 [root@10.10.72.182]$ vim slaves

# A Spark Worker will be started on each of the machines listed below.
cloud01
cloud02
cloud03

scp -r spark1.3 root@cloud02:/opt/
scp -r spark1.3 root@cloud03:/opt/

分别在3台服务器上修改/etc/profile 文件
添加
export SPARK_HOME=/opt/spark1.3
export PATH=$SPARK_HOME/bin;$SPARK_HOME/sbin;$PATH

仅需在182上启动spark即可183和184会自动启动
/opt/spark1.3
启动
./sbin/start-all.sh
关闭
./sbin/stop-all.sh

查看jps
15:03 [root@10.10.72.182]$ jps
12972 NodeManager
4000 Application
12587 QuorumPeerMain
25042 Jps
12879 ResourceManager
12739 DataNode
12648 JournalNode
24790 Master
24944 Worker

15:09 [root@10.10.72.184]$ jps
11802 DFSZKFailoverController
11505 JournalNode
11906 NodeManager
17757 Jps
11417 QuorumPeerMain
11600 NameNode
11692 DataNode
17104 Worker

访问http://10.10.72.182:8080/
查看spark运行情况

--------------------------------------------------------------------
二、windows IDEA 开发环境搭建
参考
http://blog.****.net/ichsonx/article/details/44594567
http://ju.outofmemory.cn/entry/94851
1、安装scala
http://www.scala-lang.org/download/
下载 最新版本 然后安装
由于版本spark为1.3版本原因 scala请使用2.10.5版本
C:\Program Files (x86)\scala\bin

2、Intellij中安装Scala插件
Plugins-->Browse repositories中输入Scala插件

3、在spark官网下载spark包
  下载预编译版本spark-1.3.0-bin-hadoop2.4
  在intellij IDEA中创建scala project,并依次选择“File”–> “project structure” –> “Libraries”,选择“+”,将spark-hadoop 对应的包导入,
  比如导入spark-assembly-1.3.0-hadoop2.2.0.jar(只需导入该jar包,其他不需要),如果IDE没有识别scala 库,则需要以同样方式将scala库导入。
  之后开发scala程序即可。
  E:\spark\spark-1.3.0-bin-hadoop2.4\spark-1.3.0-bin-hadoop2.4\lib\spark-assembly-1.3.0-hadoop2.4.0.jar
 
3、创建Scala工程
  New Project
  选择Scala SDK
  在Run/Debug Congigurations中添加一个Application
  新建class是选择 object
  val conf = new SparkConf().setAppName("Spark Pi").setMaster("local")
  本地运行
  http://www.beanmoon.com/2014/10/11/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8intellij%E6%90%AD%E5%BB%BAspark%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%EF%BC%88%E4%B8%8B%EF%BC%89/
  目前为止,我还没有找到在intellij中让spark直接在集群中运行的方法,通常的做法是先用intellij把已经编写好的spark程序打包,然后通过命令spark-submit的方式把jar包上传到集群中运行。

 
4、打包上传到Linux

http://www.open-open.com/doc/view/ebf1c03582804927877b08597dc14c66

参考
http://blog.****.net/javastart/article/details/43372977


依次选择“File”–> “Project Structure” –> “Artifact”,选择“+”–> “Jar” –> “From Modules with dependencies”,选择main函数,并在弹出框中选择输出jar位置,
并选择“OK”。
勾选Build on make 项目make时会自动打包
D:\\IDEA\\idea_project_new\\sparkTest\\out\\artifacts\\sparkTest_jar 代码中指定的目录

最后依次选择“Build”–> “Build Artifact”编译生成jar包。具体如下图所示。
    
去掉scala和hadoop的依赖包

上传至10.10.72.182的 /home/sparkTest/

spark1.3 需要改为scala2.10
错误:
http://blog.****.net/u012432611/article/details/47274249

4、验证安装情况
参考
http://blog.****.net/jediael_lu/article/details/45310321
(1)运行自带示例
$ bin/run-example  org.apache.spark.examples.SparkPi

(2)查看集群环境
http://master:8080/

(3)进入spark-shell
$spark-shell

(4)查看jobs等信息
http://master:4040/jobs/

 
提交到集群后 通过spark-submit进行提交

tty:[0] jobs:[0] cwd:[/opt/spark1.3/bin]
16:48 [root@10.10.72.182]$ spark-submit --class main.java.com.laifeng.SparkPi --master spark://10.10.72.182:7077 /home/sparkTest/sparkTest.jar

去掉scala-sdk-2.11和spark-assembly-1.1.0-hadoop 相关依赖包

其中–class参数制定了我们刚才已打jar包的主类, –master参数制定了我们spark集群中master实例的身份。关于spark-submit参数的更多用法,可以通过spark-submit  –help命令查看。

运行成功
spark-submit --class main.java.com.laifeng.SparkPi --master spark://10.10.72.182:7077 /home/sparkTest/sparkTest.jar

4、找不到winutil.exe的问题
http://www.tuicool.com/articles/iABZJj
配置好后 重启IDEA后 运行成功。

5、local时遇到的问题
https://archive.apache.org/dist/hadoop/common/hadoop-2.4.0/

--------------------------------------
其他补充:
zookeeper命令
http://blog.****.net/xiaolang85/article/details/13021339
查看是否为leader
14:12 [root@10.10.72.184]$ echo stat|nc 127.0.0.1 2181
Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT
Clients:
/127.0.0.1:5979[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0/8
Received: 16
Sent: 15
Connections: 1
Outstanding: 0
Zxid: 0xb00000011
Mode: follower
Node count: 10

tty:[0] jobs:[0] cwd:[/opt/zookeeper-3.4.6/bin]
14:18 [root@10.10.72.182]$ ./zkServer.sh status
JMX enabled by default
Using config: /opt/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader

spark-shell
tty:[0] jobs:[0] cwd:[/opt/spark1.3/bin]
17:16 [root@10.10.72.182]$ spark-shell
scala> sc.version
res0: String = 1.3.0

scala> sc.appName
res1: String = Spark shell

scala> :quit