分享

spark 介绍及本地模式、集群模式安装

pig2 2014-6-18 14:13:03 发表于 介绍解说 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 16 212512
本帖最后由 pig2 于 2017-1-25 10:11 编辑
问题导读:
1.spark是什么?
2.spark都需要安装什么软件?
3.本地模式如何配置?
4.集群模式如何配置?



在安装spark之前,首先我们需要知道spark是什么?
Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。
下面我们开发安装




环境:CentOS 6.4, Hadoop 1.1.2, JDK 1.7, Spark 0.7.2, Scala 2.9.3
折腾了几天,终于把Spark 集群安装成功了,其实比hadoop要简单很多,由于网上搜索到的博客大部分都还停留在需要依赖mesos的版本,走了不少弯路。

1. 安装 JDK 1.7
  1. yum search openjdk-devel
  2. sudo yum install java-1.7.0-openjdk-devel.x86_64
  3. /usr/sbin/alternatives --config java
  4. /usr/sbin/alternatives --config javac
  5. sudo vim /etc/profile
  6. # add the following lines at the end
  7. export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19.x86_64
  8. export JRE_HOME=$JAVA_HOME/jre
  9. export PATH=$PATH:$JAVA_HOME/bin
  10. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  11. # save and exit vim
  12. # make the bash profile take effect immediately
  13. $ source /etc/profile
  14. # test
  15. $ java -version
复制代码


2. 安装 Scala 2.9.3
Spark 0.7.2 依赖 Scala 2.9.3, 我们必须要安装Scala 2.9.3.

下载链接:http://pan.baidu.com/s/1qWkBvhq 密码:z19x
并 保存到home目录.
  1. $ tar -zxf scala-2.9.3.tgz
  2. $ sudo mv scala-2.9.3 /usr/lib
  3. $ sudo vim /etc/profile
  4. # add the following lines at the end
  5. export SCALA_HOME=/usr/lib/scala-2.9.3
  6. export PATH=$PATH:$SCALA_HOME/bin
  7. # save and exit vim
  8. #make the bash profile take effect immediately
  9. source /etc/profile
  10. # test
  11. $ scala -version
复制代码

3. 下载预编译好的Spark
下载预编译好的Spark, (32位、64都可以)
hadoop1安装包
链接:http://pan.baidu.com/s/1c0kZMLE
密码:d4om
hadoop2安装包
链接:http://pan.baidu.com/s/1kT3czFD
密码:elpg

如果你想从零开始编译,则下载源码包,但是我不建议你这么做,因为有一个Maven仓库,twitter4j.org, 被墙了,导致编译时需要翻墙,非常麻烦。如果你有DIY精神,并能顺利翻墙,则可以试试这种方式。


4. 本地模式
4.1 解压
$ tar -zxf spark-0.7.2-prebuilt-hadoop1.tgz
4.2 设置SPARK_EXAMPLES_JAR 环境变量
  1. $ vim ~/.bash_profile
  2. # add the following lines at the end
  3. export SPARK_EXAMPLES_JAR=$HOME/spark-0.7.2/examples/target/scala-2.9.3/spark-examples_2.9.3-0.7.2.jar
  4. # save and exit vim
  5. #make the bash profile take effect immediately
  6. $ source /etc/profile
复制代码

这一步其实最关键,很不幸的是,官方文档和网上的博客,都没有提及这一点。我是偶然看到了这两篇帖子,Running SparkPi, Null pointer exception when running ./run spark.examples.SparkPi local,才补上了这一步,之前死活都无法运行SparkPi。


4.3 (可选)设置 SPARK_HOME环境变量,并将SPARK_HOME/bin加入PATH
  1. $ vim ~/.bash_profile
  2. # add the following lines at the end
  3. export SPARK_HOME=$HOME/spark-0.7.2
  4. export PATH=$PATH:$SPARK_HOME/bin
  5. # save and exit vim
  6. #make the bash profile take effect immediately
  7. $ source /etc/profile
复制代码

4.4 现在可以运行SparkPi了
  1. $ cd ~/spark-0.7.2
  2. $ ./run spark.examples.SparkPi local
复制代码



5. 集群模式

5.1 安装Hadoop
用VMware Workstation 创建三台CentOS 虚拟机,hostname分别设置为 master, slave01, slave02,设置SSH无密码登陆,安装hadoop,然后启动hadoop集群。参考:hadoop2.2完全分布式最新高可靠安装文档


5.2 Scala
在三台机器上都要安装 Scala 2.9.3 , 按照第2节的步骤。JDK在安装Hadoop时已经安装了。


5.3 在master上安装并配置Spark
解压
  1. $ tar -zxf spark-0.7.2-prebuilt-hadoop1.tgz
复制代码

设置SPARK_EXAMPLES_JAR 环境变量
  1. $ vim ~/.bash_profile
  2. # add the following lines at the end
  3. export SPARK_EXAMPLES_JAR=$HOME/spark-0.7.2/examples/target/scala-2.9.3/spark-examples_2.9.3-0.7.2.jar
  4. # save and exit vim
  5. #make the bash profile take effect immediately
  6. $ source /etc/profile
复制代码

在 in  conf/spark-env.sh中设置SCALA_HOME
  1. $ cd ~/spark-0.7.2/conf
  2. $ mv spark-env.sh.template spark-env.sh
  3. $ vim spark-env.sh
  4. # add the following line
  5. export SCALA_HOME=/usr/lib/scala-2.9.3
  6. # save and exit
复制代码

在conf/slaves, 添加Spark worker的hostname, 一行一个。
  1. $ vim slaves
  2. slave01
  3. slave02
  4. # save and exit
复制代码

(可选)设置 SPARK_HOME环境变量,并将SPARK_HOME/bin加入PATH
  1. $ vim ~/.bash_profile
  2. # add the following lines at the end
  3. export SPARK_HOME=$HOME/spark-0.7.2
  4. export PATH=$PATH:$SPARK_HOME/bin
  5. # save and exit vim
  6. #make the bash profile take effect immediately
  7. $ source /etc/profile
复制代码

5.4 在所有worker上安装并配置Spark
既然master上的这个文件件已经配置好了,把它拷贝到所有的worker。注意,三台机器spark所在目录必须一致,因为master会登陆到worker上执行命令,master认为worker的spark路径与自己一样。
  1. $ cd
  2. $ scp -r spark-0.7.2 dev@slave01:~
  3. $ scp -r spark-0.7.2 dev@slave02:~
复制代码

按照第5.3节设置SPARK_EXAMPLES_JAR环境变量,配置文件不用配置了,因为是直接从master复制过来的,已经配置好了。


5.5 启动 Spark 集群
在master上执行
  1. $ cd ~/spark-0.7.2
  2. $ bin/start-all.sh
复制代码

检测进程是否启动
  1. $ jps
  2. 11055 Jps
  3. 2313 SecondaryNameNode
  4. 2409 JobTracker
  5. 2152 NameNode
  6. 4822 Master
复制代码

浏览master的web UI(默认http://localhost:8080). 这是你应该可以看到所有的word节点,以及他们的CPU个数和内存等信息。 ##5.6 运行SparkPi例子
  1. $ cd ~/spark-0.7.2
  2. $ ./run spark.examples.SparkPi spark://master:7077
复制代码

(可选)运行自带的例子,SparkLR 和 SparkKMeans.
  1. #Logistic Regression
  2. #./run spark.examples.SparkLR spark://master:7077
  3. #kmeans
  4. $ ./run spark.examples.SparkKMeans spark://master:7077 ./kmeans_data.txt 2 1
复制代码

5.7 从HDFS读取文件并运行WordCount

  1. $ cd ~/spark-0.7.2
  2. $ hadoop fs -put README.md .
  3. $ MASTER=spark://master:7077 ./spark-shell
  4. scala> val file = sc.textFile("hdfs://master:9000/user/dev/README.md")
  5. scala> val count = file.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_+_)
  6. scala> count.collect()
复制代码



5.8 停止 Spark 集群
  1. $ cd ~/spark-0.7.2
  2. $ bin/stop-all.sh
复制代码







已有(16)人评论

跳转到指定楼层
cc-dong 发表于 2014-6-19 09:27:52
学习了,博主谢谢
回复

使用道具 举报

xbings 发表于 2015-3-18 10:27:46
楼主,想请教下,我的spark程序调用了部分java代码,然后我把java所有相关的jar包都和scala代码打包在同一个jar包里,在spark上运行的时候提示找不到java类,该jar包里没有用到java类的scala程序可以正正常运行。
是不是打包的时候要注意些什么?
我是用这个命令启动的:
bin/spark-submit --class com.xbings.spark.MimsRuleAudit ~/upload/output/mimsspark.jar
回复

使用道具 举报

qazzxc5200 发表于 2015-9-17 00:25:49
謝謝樓主,學習中
回复

使用道具 举报

浅夏1990 发表于 2015-10-27 11:10:13
你好,我安装了spark集群,但是很奇怪的一件事是,我在master的8080节点上看到了2个worker的信息,但是我在master 4040 端口上,每次执行完一次任务,在aggregated metrics by executor 的executor ID都是localhost而address 是cannot find address,请问你知道为什么吗?
回复

使用道具 举报

llp 发表于 2015-11-25 09:33:56
控制台上有输出examples.SparkPi的运行信息  但是为什么spark UI界面没有相关信息?
回复

使用道具 举报

quguiliang 发表于 2016-5-27 08:42:30
我是个初学者,学习中
回复

使用道具 举报

bingyuac 发表于 2016-5-29 23:09:33
学习了 谢谢楼主
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条