Spark2.2.0 分布式离线搭建

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Spark2.2.0 分布式离线搭建

1、Spark简介

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。

尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。

2、部署准备

2.1、安装包准备

  • spark-2.2.0-bin-hadoop2.6.tgz
  • jdk-8u161-linux-x64.tar.gz
  • scala-2.11.0.tgz

2.2、节点配置信息
SK1
2.3、节点资源配置信息
SK2
3、集群配置与启动

3.1、安装包上传与解压

操作节点:risen01

操作用户:root

  1. 上传安装包spark-2.2.0-bin-hadoop2.6.tgz,scala-2.11.0.tgz,jdk-8u161-linux-x64.tar.gz(如果已经存在则不需要此步骤)到 risen01节点下的~/packages目录下,结果如图所示:

SK3

2、解压JDK安装包,Spark安装包Scala安装包和到/usr/local下

操作节点:risen01

操作用户:root

解压JDK命令:

tar -zxvf ~/packeages/jdk-8u161-linux-x64.tar.gz -C /usr/local

解压spark命令:

tar -zxvf ~/packages/spark-2.2.0-bin-hadoop2.6.tgz -C /usr/local

解压Scala命令:

tar -zxvf ~/packages/scala-2.11.0.tgz -C /usr/local

3.2、启动前准备

操作节点:risen01,risen02,risen03

操作用户:root

  1. 在/data目录下新建立spark/work目录用来存放spark的任务处理日志
  2. 在/log目录下新建立spark目录用来存放spark的启动日志等

3.3、修改配置文件

3.3.1、编辑spark-env.sh文件

操作节点:risen01

操作用户:root

说明:请根据实际集群的规模和硬件条件来配置每一项参数

进入到/usr/local/spark-2.2.0-bin-hadoop2.6/conf目录下执行命令:

cp spark-env.sh.template spark-env.sh

编辑spark-env.sh文件,添加以下内容:

#设置spark的web访问端口
SPARK_MASTER_WEBUI_PORT=18080

#设置spark的任务处理日志存放目录
SPARK_WORKER_DIR=/data/spark/work

#设置spark每个worker上面的核数
SPARK_WORKER_CORES=2

#设置spark每个worker的内存
SPARK_WORKER_MEMORY=1g

#设置spark的启动日志等目录
SPARK_LOG_DIR=/log/spark

#指定spark需要的JDK目录
export JAVA_HOME=/usr/local/jdk1.8.0_161

#指定spark需要的Scala目录
export SCALA_HOME=/usr/local/scala-2.11.0

#指定Hadoop的安装目录
export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop

#指定Hadoop的配置目录
export HADOOP_CONF_DIR=/opt/cloudera/parcels/CDH/lib/hadoop/etc/hadoop/

#实现spark-standlone HA(因为我们HA实现的是risen01和risen02之间的切换不涉及risen03,所以这段配置risen03可有可无)
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=risen01:2181,risen02:2181,risen03:2181 -Dspark.deploy.zookeeper.dir=/data/spark"

3.3.2、 编辑spark-defaults.conf文件

操作节点:risen01

操作用户:root

说明:请根据实际集群的规模和硬件条件来配置每一项参数

进入到/usr/local/spark-2.2.0-bin-hadoop2.6/conf目录下执行命令:

cp spark-defaults.conf.template spark-defaults.conf

编辑spark-defaults.conf文件,添加以下内容:

#设置spark的主节点
spark.master                      spark://risen01:7077

#开启eventLog
spark.eventLog.enabled            true

#设置eventLog存储目录
spark.eventLog.dir                /log/spark/eventLog

#设置spark序列化方式
spark.serializer    org.apache.spark.serializer.KryoSerializer

#设置spark的driver内存
spark.driver.memory               1g

#设置spark的心跳检测时间间隔
spark.executor.heartbeatInterval  20s

#默认并行数
spark.default.parallelism         20

#最大网络延时
spark.network.timeout             3000s

3.3.3、 编辑slaves文件

操作节点:risen01

操作用户:root

说明:请根据实际集群的规模和硬件条件来配置每一项参数

进入到/usr/local/spark-2.2.0-bin-hadoop2.6/conf目录下执行命令:

cp slaves.templete slaves

编辑slaves文件,修改localhost为:

risen01
risen02
risen03

3.4、分发其他节点

  1. 执行scp命令:

操作节点:risen01

操作用户:root

scp -r /usr/local/spark-2.2.0-bin-hadoop2.6 root@risen02:/usr/local
scp -r /usr/local/scala-2.11.0 root@risen02:/usr/local
scp -r /usr/local/jdk1.8.0_161 root@risen02:/usr/local
scp -r /usr/local/spark-2.2.0-bin-hadoop2.6 root@risen03:/usr/local
scp -r /usr/local/scala-2.11.0 root@risen03:/usr/local
scp -r /usr/local/jdk1.8.0_161 root@risen03:/usr/local
  1. 需要提前创建好bigdata用户并实现免密(这里不再赘述,此步骤如果做过可不做)
  2. 权限修改

操作节点:risen01,risen02,risen03

操作用户:root

修改/log/spark权限命令:

chown -R bigdata.bigdata /log/spark

修改/data/spark权限命令:

chown -R bigdata.bigdata /data/spark

修改spark的安装目录命令:

chown -R bigdata.bigdata /usr/local/spark-2.2.0-bin-hadoop2.6

修改Scala的安装目录命令:

chown -R bigdata.bigdata /usr/local/scala-2.11.0

修改JDK1.8的安装目录命令:(此步骤如果做过可不做)

chown -R bigdata.bigdata /usr/local/jdk1.8.0_161

结果如图下所示:
SK4
3.5、启动集群

操作节点:risen01,risen02

操作用户:bigdata

(1) 进入到/usr/local/spark-2.2.0-bin-hadoop2.6/sbin目录下执行./start-all.sh,查看web界面如下图所示:

SK5

然后在进入到risen02机器的spark安装目录下/usr/local/spark-2.2.0-bin-hadoop2.6/sbin执行命令./start-master.sh启动spark集群的备用主节点。(记得一定要启动备用主节点的进程,这里我们只用risen02做备用主节点,risen03虽然也配置了有资格,但是暂时我们不需要)

(2) 进入到/usr/local/spark-2.2.0-bin-hadoop2.6/bin目录下执行spark-shell,并测试统计词频的测试,结果如下图所示:

SK6

截止到此,spark-standlone模式便安装成功了!

推荐阅读:https://www.roncoo.com/course/view/c4e0130ea2354c71a2cb9ba24348746c

文章来源:https://my.oschina.net/blogByRzc/blog/1800450

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
665 1
|
12月前
|
SQL 分布式计算 数据库连接
大数据Spark分布式SQL引擎
大数据Spark分布式SQL引擎
252 0
|
4月前
|
分布式计算 Hadoop 大数据
分布式计算框架比较:Hadoop、Spark 与 Flink
【5月更文挑战第31天】Hadoop是大数据处理的开创性框架,专注于大规模批量数据处理,具有高扩展性和容错性。然而,它在实时任务上表现不足。以下是一个简单的Hadoop MapReduce的WordCount程序示例,展示如何统计文本中单词出现次数。
152 0
|
4月前
|
SQL 分布式计算 Hadoop
Spark分布式内存计算框架
Spark分布式内存计算框架
112 0
|
4月前
|
分布式计算 大数据 数据处理
Spark RDD(弹性分布式数据集)
Spark RDD(弹性分布式数据集)
|
4月前
|
SQL 分布式计算 Java
Note_Spark_Day08:Spark SQL(Dataset是什么、外部数据源、UDF定义和分布式SQL引擎)
Note_Spark_Day08:Spark SQL(Dataset是什么、外部数据源、UDF定义和分布式SQL引擎)
66 0
|
4月前
|
分布式计算 并行计算 Hadoop
【云计算与大数据计算】分布式处理CPU多核、MPI并行计算、Hadoop、Spark的简介(超详细)
【云计算与大数据计算】分布式处理CPU多核、MPI并行计算、Hadoop、Spark的简介(超详细)
244 0
|
消息中间件 SQL 分布式计算
Spark分布式计算框架之SparkStreaming+kafka
Spark分布式计算框架之SparkStreaming+kafka
106 0
|
机器学习/深度学习 分布式计算 Apache
《基于Apache Spark 的大规模分布式机器学习实践》电子版地址
基于Apache* Spark* 的大规模分布式机器学习实践
113 0
《基于Apache Spark 的大规模分布式机器学习实践》电子版地址
|
分布式计算 资源调度 Ubuntu
spark完全分布式部署
spark完全分布式部署