目录
Spark 是基于 map reduce 算法实现的分布式计算,拥有 Hadoop MapReduce 所具有的优点 ; 但不同于 MapReduce 的是 Job 中间输出和结果可以保存在内存中,从而不再需要读写 HDFS ,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 map reduce 的算法。
一、安装
- 使用 udh 集群管理器安装 Hadoop 集群环境
- 查看 spark 相关 rpm 包
spark-core: spark 核心功能
spark-worker: spark-worker 初始化脚本
spark-master: spark-master 初始化脚本
spark-python: spark 的 Python 客户端
hue-spark: spark 和 hue 集成包
spark-history-server
3 .在 udh 集群中选择一个节点来安装 Spark master ,其余节点安装 Spark worker
#udh-yh-dev-13.yonyou.com
yum install spark-core spark-master spark-worker spark-python spark-history-server –y
# 其他节点
yum install spark-core spark-worker spark-python –y
二、配置
- 修改配置文件
设置环境变量 在 .bashrc 或者 /etc/profile 中加入下面一行,并使其生效:
export SPARK_HOME=/usr/lib/spark
编辑 配置文件 /etc/spark/conf/spark-env.sh 修改 master 的主机名称为 udh-yh-dev-13.yonyou.com
# 设置 master 主机名称
export STANDALONE_SPARK_MASTER_HOST= udh-yh-dev-13.yonyou.com
- 配置 spark history server
在运行 Spark 应用程序的时候, driver 会提供一个 webUI 给出应用程序的运行信息,但是该 webUI 随着应用程序的完成而关闭端口,也就是说, Spark 应用程序运行完后,将无法查看应用程序的历史记录。 Spark history server 就是为了应对这种情况而产生的,通过配置, Spark 应用程序在运行完应用程序之后,将应用程序的运行信息写入指定目录,而 Spark history server 可以将这些运行信息装载并以 web 的方式供用户浏览。
创建 /etc/spark/conf/spark-defaults.conf
cp /etc/spark/conf/spark-defaults.conf.template /etc/spark/conf/spark-defaults.conf
添加下面配置:
spark.master=spark:// udh-yh-dev-13.yonyou.com :7077
spark.eventLog.dir=/user/spark/applicationHistory
spark.eventLog.enabled=true
spark.yarn.historyServer.address= udh-yh-dev-13.yonyou.com :18082
如果在 hdfs 上运行 Spark ,则执行下面命令创建 /user/spark/applicationHistory 目录:
$ sudo -u hdfs hadoop fs -mkdir /user/spark
$ sudo -u hdfs hadoop fs -mkdir /user/spark/applicationHistory
$ sudo -u hdfs hadoop fs -chown -R spark:spark /user/spark
$ sudo -u hdfs hadoop fs -chmod 1777 /user/spark/applicationHistory
设置 spark.history.fs.logDirectory 参数:
Export SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=/tmp/spark -Dspark.history.ui.port=18082"
创建 /tmp/spark 目录:
$ mkdir -p /tmp/spark
$ chown spark:spark /tmp/spark
三、启动和停止
M aster : service spark-master start /stop
W orker : service spark- worker start /stop
四、相关端口
7077 – Default Master RPC port
7078 – Default Worker RPC port
18080 – Default Master web UI port
18081 – Default Worker web UI port
18080 – Default HistoryServer web UI port
五、测试
以 wordcount 程序为例 :
spark-shell --master spark:// udh-yh-dev-13.yonyou.com :7077
scala> val file = sc.textFile("hdfs:// udh-yh-dev-13.yonyou.com :8020/tmp/test.txt")
scala> val counts = file.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)
scala> counts.count()
scala> counts.saveAsTextFile("hdfs:/ udh-yh-dev-13.yonyou.com :8020/tmp/output")