《循序渐进学Spark》一1.2 在Linux集群上部署Spark

简介:

本节书摘来自华章出版社《循序渐进学Spark》一书中的第1章,第 节,作者   小象学院 杨 磊 更多章节内容可以访问云栖社区“华章计算机”公众号查看。 


1.2 在Linux集群上部署Spark

Spark安装部署比较简单,用户可以登录其官方网站(http://spark.apache.org/downloads.html)下载Spark最新版本或历史版本,也可以查阅Spark相关文档作为参考。本书开始写作时,Spark刚刚发布1.5.0版,因此本章所述的环境搭建均以Spark 1.5.0版为例。

Spark使用了Hadoop的HDFS作为持久化存储层,因此安装Spark时,应先安装与Spark版本相兼容的Hadoop。

本节以阿里云Linux主机为例,描述集群环境及Spark开发环境的搭建过程。

Spark计算框架以Scala语言开发,因此部署Spark首先需要安装Scala及JDK(Spark1.5.0需要JDK1.7.0或更高版本)。另外,Spark计算框架基于持久化层,如Hadoop HDFS,因此本章也会简述Hadoop的安装配置。

1.2.1 安装OpenJDK

Spark1.5.0要求OpenJDK1.7.0或更高版本。 以本机Linux X86机器为例,OpenJDK的安装步骤如下所示:

1)查询服务器上可用的JDK版本。在终端输入如下命令:

yum list "*JDK*"

yum 会列出服务器上的JDK版本。

2)安装JDK。在终端输入如下命令:

yum install java-1.7.0-openjdk-devel.x86 

cd /usr/lib/jvm

ln -s java-1.7.0-openjdk.x86 java-1.7

3) JDK环境配置。

① 用编辑器打开/etc/profile文件,加入如下内容:

export JAVA_HOME=/usr/lib/jvm/java-1.7

export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

关闭并保存profile文件。

② 输入命令 source /etc/profile 让配置生效。

1.2.2 安装Scala

登录Scala官网(http://www.scala-lang.org/download/)下载最新版本: scala-2.11.7.tgz

1)安装。

tar zxvf scala-2.11.7.tgz -C /usr/local

cd /usr/local

ln -s scala-2.11.7 scala

2) 配置:打开/etc/profile, 加入如下语句:

export SCALA_HOME=/usr/local/scala

export PATH=$PATH:$SCALA_HOME/bin

1.2.3 配置SSH免密码登录

在分布式系统中,如Hadoop与Spark,通常使用SSH(安全协议,Secure Shell)服务来启动Slave节点上的程序,当节点数量比较大时,频繁地输入密码进行身份认证是一项非常艰难的体验。为了简化这个问题,可以使用”公私钥”认证的方式来达到SSH免密码登录。

首先在Master节点上创建一对公私钥(公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa),然后把公钥拷贝到Worker节点上(~/.ssh/authorized_keys)。二者交互步骤如下:

1) Master通过SSH连接Worker时,Worker生成一个随机数然后用公钥加密后,发回给Master。

2) Master收到加密数后,用私钥解密,并将解密数回传给Worker。

3) Worker确认解密数正确之后,允许Master连接。

如果配置好SSH免密码登录之后,在以上交互中就无须用户输入密码了。下面介绍安装与配置过程。

1)安装SSH: yum install ssh

2)生成公私钥对: ssh-keygen -t rsa

一直按回车键,不需要输入。执行完成后会在~/.ssh目录下看到已生成id_rsa.pub与id_rsa两个密钥文件。其中id_rsa.pub为公钥。

3)拷贝公钥到Worker机器: scp ~/.ssh/id_rsa.pub <用户名>@<worker机器ip>:~/.ssh

4)在Worker节点上,将公钥文件重命名为authorized_keys: mv id_rsa.pub auth-orized_keys。类似地,在所有Worker节点上都可以配置SSH免密码登录。

1.2.4 Hadoop的安装配置

登录Hadoop官网(http://hadoop.apache.org/releases.html)下载Hadoop 2.6.0安装包 hadoop-2.6.0.tar.gz。然后解压至本地指定目录。

tar zxvf hadoop-2.6.0.tar.gz -C /usr/local

ln -s hadoop-2.6.0 hadoop

下面讲解Hadoop的配置。

1)打开/etc/profile,末尾加入:



1.2.5 Spark的安装部署

登录Spark官网下载页面(http://spark.apache.org/downloads.html)下载Spark。这里选择最新的Spark 1.5.0版spark-1.5.0-bin-hadoop2.6.tgz(Pre-built for Hadoop2.6 and later)。

然后解压spark安装包至本地指定目录:

tar zxvf spark-1.5.0-bin-hadoop2.6.tgz -C /usr/local/

ln -s spark-1.5.0-bin-hadoop2.6 spark

下面让我们开始Spark的配置之旅吧。

1) 打开/etc/profile,末尾加入:

export SPARK_HOME=/usr/local/spark

PATH=$PATH:${SPARK_HOME}/bin

关闭并保存profile,然后命令行执行 source /etc/profile 使配置生效。

2) 打开/etc/hosts,加入集群中Master及各个Worker节点的ip与hostname配对。

x.x.x.x Master-name

x.x.x.x worker1

x.x.x.x worker2

x.x.x.x worker3

……

3) 进入/usr/local/spark/conf,在命令行执行:

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

vi spark-env.sh

末尾加入:

export JAVA_HOME=/usr/lib/jvm/java-1.7

export SCALA_HOME=/usr/local/scala

export SPARK_MASTER_IP=112.74.197.158<以本机为例>

export SPARK_WORKER_MEMORY=1g

保存并退出,执行命令:

cp slaves.template slaves

vi slaves

在其中加入各个Worker节点的hostname。这里以四台机器(master、worker1、worker2、worker3)为例,那么slaves文件内容如下:

worker1

worker2

worker3

1.2.6 Hadoop与Spark的集群复制

前面完成了Master主机上Hadoop与Spark的搭建,现在我们将该环境及部分配置文件从Master分发到各个Worker节点上(以笔者环境为例)。在集群环境中,由一台主机向多台主机间的文件传输一般使用pssh工具来完成。为此,在Master上建立一个文件workerlist.txt,其中保存了所有Worker节点的IP,每次文件的分发只需要一行命令即可完成。

1) 复制JDK环境:

pssh -h workerlist -r /usr/lib/jvm/java-1.7 /

2) 复制scala环境:

pssh -h workerlist -r /usr/local/scala /

3) 复制Hadoop:

pssh -h workerlist -r /usr/local/hadoop /

4) 复制Spark环境:

pssh -h workerlist -r /usr/local/spark /

5) 复制系统配置文件:

pssh -h workerlist /etc/hosts /

pssh -h workerlist /etc/profile /

至此,Spark Linux集群环境搭建完毕。

相关文章
|
4月前
|
Ubuntu Linux 测试技术
Linux系统之部署轻量级Markdown文本编辑器
【10月更文挑战第6天】Linux系统之部署轻量级Markdown文本编辑器
213 1
Linux系统之部署轻量级Markdown文本编辑器
|
20天前
|
存储 分布式计算 调度
Spark Master HA 主从切换过程不会影响到集群已有作业的运行, 为什么?
Spark Master 的高可用性(HA)机制确保主节点故障时,备用主节点能无缝接管集群管理,保障稳定运行。关键在于: 1. **Driver 和 Executor 独立**:任务执行不依赖 Master。 2. **应用状态保持**:备用 Master 通过 ZooKeeper 恢复集群状态。 3. **ZooKeeper 协调**:快速选举新 Master 并同步状态。 4. **容错机制**:任务可在其他 Executor 上重新调度。 这些特性保证了集群在 Master 故障时仍能正常运行。
|
2月前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
2月前
|
Ubuntu 网络协议 Linux
快速部署WSL(Windows Subsystem for Linux)
WSL提供了一种轻量级的方法,使开发者能够在Windows上无缝运行Linux环境。通过本文介绍的步骤,可以快速安装、配置和使用WSL,以满足开发和测试的需求。
195 8
|
4月前
|
搜索推荐 Linux 测试技术
Linux系统之部署homer静态主页
【10月更文挑战第11天】Linux系统之部署homer静态主页
105 41
Linux系统之部署homer静态主页
|
4月前
|
运维 监控 Linux
Linux系统之部署Linux管理面板1Panel
【10月更文挑战第20天】Linux系统之部署Linux管理面板1Panel
244 4
Linux系统之部署Linux管理面板1Panel
|
4月前
|
Web App开发 资源调度 网络协议
Linux系统之部署IP工具箱MyIP
【10月更文挑战第5天】使用Docker部署Radicale日历和联系人应用Linux系统之部署IP工具箱MyIP
179 1
Linux系统之部署IP工具箱MyIP
|
3月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
106 2
|
3月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
140 3
|
4月前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
133 2