本次主要介绍spark的入门概念和安装
Spark 是一种快速、 通用、 可扩展的大数据分析引擎, 2009 年诞生于加州大学伯克利分校 AMPLab, 2010 年开源, 2013 年 6 月成为 Apache 孵化项目, 2014年 2 月成为 Apache 顶级项目。 目前, Spark 生态系统已经发展成为一个包含多个子项目的集合, 其中包含 SparkSQL、 Spark Streaming、 GraphX、 MLlib 等子项目,Spark 是基于内存计算的大数据并行计算框架。
Spark 基于内存计算, 提高了在大数据环境下数据处理的实时性, 同时保证了高容错性和高可伸缩性, 允许用户将Spark 部署在大量廉价硬件之上, 形成集群。
Spark 是一个开源的类似于 Hadoop MapReduce 的通用的并行计算框架,Spark基于 map reduce 算法实现的分布式计算, 拥有 Hadoop MapReduce 所具有的优点; 但不同于 MapReduce 的是 Spark 中的 Job 中间输出和结果可以保存在内存中,从而不再需要读写 HDFS, 因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 map-reduce 的算法。
Spark 是 MapReduce 的替代方案, 而且兼容 HDFS、 Hive, 可融入 Hadoop 的生态系统, 以弥补 MapReduce 的不足。
快
与 Hadoop 的 MapReduce 相比, Spark 基于内存的运算要比MR快 100 倍以上, Spark基于硬盘的运算也要比MR快 10 倍以上。 Spark 实现了高效的 DAG 执行引擎, 可以通过基于内存来高效处理数据流。
易用
Spark 支持 Java、 Python 和 Scala 的 API, 还支持超过 80 种高级算法, 使用户可以快速构建不同的应用。 而且 Spark 支持交互式的 Python 和 Scala 的 shell, 可以非常方便地在这些 shell 中使用 Spark 集群来验证解决问题的方法。
通用
Spark 提供了统一的解决方案。 Spark 可以用于批处理、 交互式查询(Spark SQL) 、 实时流处理(Spark Streaming) 、 机器学习(Spark MLlib) 和图计算(GraphX) 。 这些不同类型的处理都可以在同一个应用中无缝使用。 Spark统一的解决方案非常具有吸引力, 毕竟任何公司都想用统一的平台去处理遇到的问题, 减少开发和维护的人力成本和部署平台的物力成本。
兼容性好
Spark 可以非常方便地与其他的开源产品进行融合。 比如, Spark 可以使用
Hadoop 的 YARN 和 Apache Mesos 作为它的资源管理和调度器, 器, 并且可以处理所有 Hadoop 支持的数据, 包括 HDFS、 HBase 和 Cassandra 等。 这对于已经部署 Hadoop 集群的用户特别重要, 因为不需要做任何数据迁移就可以使用 Spark的强大处理能力。 Spark 也可以不依赖于第三方的资源管理和调度器, 它实现了Standalone 作为其内置的资源管理和调度框架, 这样进一步降低了 Spark 的使用门槛, 使得所有人都可以非常容易地部署和使用 Spark。 此外, Spark 还提供了在EC2 上部署 Standalone 的 Spark 集群的工具。
下载地址 spark 官网: http://spark.apache.org/downloads.html
这里我们使用 spark-2.0.2-bin-hadoop2.7 版本.
tar -zxvf spark-2.0.2-bin-hadoop2.7.tgz
mv spark-2.0.2-bin-hadoop2.7 spark
配置文件目录在 /opt/bigdata/spark/conf
#配置 java 环境变量
export JAVA_HOME=/export/server/jdk1.8.0_45
#指定 spark 老大 Master 的 IP
export SPARK_MASTER_HOST=nodel01
#指定 spark 老大 Master 的端口
export SPARK_MASTER_PORT=7077
#worker的启动节点配置
nodel02
nodel03
通过 scp 命令将 spark 的安装目录拷贝到其他机器上
scp -r /export/server/spark nodel02:/export/server/
scp -r /export/server/spark nodel03:/export/server/
将 spark 添加到环境变量,添加以下内容到 /etc/profile
#spark
export SPARK_HOME=/export/server/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
#在主节点启动spark
$spark /sbin/start-all.sh
#在主节点停止spark
$spark /sbin/stop-all.sh
正常启动 spark 集群后, 可以通过访问 http://nodel01:8080,查看 spark 的 web 界面,查看相关信息。
Spark Standalone 集群是 Master-Slaves 架构的集群模式, 和大部分的Master-Slaves 结构集群一样, 存在着 Master 单点故障的问题。 如何解决这个单点故障的问题, Spark 提供了两种方案:
该 HA 方案使用起来很简单, 首先需要搭建一个 zookeeper 集群, 然后启动
zooKeeper 集群, 最后在不同节点上启动 Master。 具体配置如下:
1) vi spark-env.sh
注释掉 export SPARK_MASTER_HOST=nodel01
2)在 spark-env.sh 添加 SPARK_DAEMON_JAVA_OPTS, 内容如下:
//HA的配置文件
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=nodel01:2181,nodel02:2181,nodel03:2181, -Dspark.deploy.zookeeper.dir=/spark"
3)分发到另外两个节点
scp spark-env.sh nodel02:/export/server/spark/conf/
scp spark-env.sh nodel03:/export/server/spark/conf/
// 1.首先在主节点启动zookeeper
startzk.sh
//2.在主节点启动spark
$spark /sbin/start-all.sh
//3.在任意分节点启动saprk备用节点
$spark /sbin/start-master.sh
//jps查看进程
本次结束