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

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集群环境搭建完毕。

时间: 2024-07-30 13:27:56

《循序渐进学Spark》一1.2 在Linux集群上部署Spark的相关文章

Spark学习之在集群上运行Spark(6)

Spark学习之在集群上运行Spark(6) 1. Spark的一个优点在于可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力. 2. Spark既能适用于专用集群,也可以适用于共享的云计算环境. 3. Spark在分布式环境中的架构: Created with Raphaël 2.1.0我的操作集群管理器Mesos.YARN.或独立集群管理器N个集群工作节点(执行器进程) Spark集群采用的是主/从结构,驱动器(Driver)节点和所有执行器(executor)节点一起被称为一个S

《Spark快速大数据分析》—— 第七章 在集群上运行Spark

本文转自博客园xingoo的博客,原文链接:<Spark快速大数据分析>-- 第七章 在集群上运行Spark,如需转载请自行联系原博主.

【Spark Summit East 2017】商品集群上的时间演化图处理

本讲义出自Anand Iyer在Spark Summit East 2017上的演讲,主要介绍了构建于通用数据流框架上的时间演化图处理系统Tegra,并介绍了间隔拍摄(Timelapse)来呈现两个计算模型:用于对于进化图的多个快照进行计算的时序分析模型,以及能够有效更新结果的广义增量计算模型.

【Spark Summit EU 2016】规模不断扩展的服务器集群上Spark的性能表征

本讲义出自Ahsan Javed Awan在Spark Summit EU 2016上的演讲,主要介绍了在服务器集群的规模不断扩展的状态下,如何获取运行于服务器集群上的Spark的性能指标并对于性能进行优化,并分享了为了使得架构设计能够提升节点级别的性能表现,该如何确定衡量指标,以及如何设计可扩展的架构.

Linux集群和自动化运维

Linux/Unix技术丛书 Linux集群和自动化运维 余洪春 著 图书在版编目(CIP)数据 Linux集群和自动化运维/余洪春著. -北京:机械工业出版社,2016.8 (Linux/Unix技术丛书) ISBN 978-7-111-54438-8 I. L- II.余- III. Linux操作系统 IV. TP316.89 中国版本图书馆CIP数据核字(2016)第176055号 Linux集群和自动化运维 出版发行:机械工业出版社(北京市西城区百万庄大街22号 邮政编码:100037

《Spark Cookbook 中文版》一1.6 在集群上使用Mesos部署Spark

1.6 在集群上使用Mesos部署Spark Mesos正慢慢崛起为跨数据中心管理所有计算资源的数据中心管理系统.Mesos可以运行在任意一台Linux操作系统的机器上.Mesos与Linux内核有着相同的配置原则.让我们看看如何安装Mesos. 具体步骤 Mesosphere提供Mesos的二进制安装包.最新的Mesos分布式安装包可以通过Mesosphere库按照如下步骤安装. 1.在Ubuntu操作系统的可靠版本上执行Mesos. $ sudo apt-key adv --keyserve

针对Linux集群技术的要点解析

  现在很多的企业,网站都在应用Linux操作系统,Linux的优点使人们舍弃了微软.今天就讲讲Linux集群技术,让你更一步了解Linux,知道Linux集群技术强大功能.给你挑选系统起到参考的作用. Linux竞争力很强的原因之一,是它可以运行于极为普及的PC机上,不需要购买昂贵的专用硬件设备.在几台运行Linux的PC机上,只要加入相应的集群软件,就可以组成具有超强可靠性.负载能力和计算能力的Linux集群.集群中的每台服务器称为一个节点. 按照侧重点的不同,可以把Linux集群分为三类.

Linux集群原理与安装配置介绍

  Linux集群原理 Linux集群系统包括集群节点和集群管理器两部分.集群节点有时简称为节点.服务器或服务器节点,是提供处理资源的系统,它进行集群的实际工作.一般来讲,它必须进行配置才能成为集群的一部分,也必须运行集群的应用软件.应用软件可以是专用于集群的软件,也可以是设计用于分布式系统的标准软件.Linux集群管理器则是将节点捆绑在一起,以构成单一系统外观的逻辑结构,它用于将任务分解到所有的节点. 集群因多种不同的原因而有着不同的类型,建立Linux集群的最直接原因是共享CPU资源,在多个

基于Linux集群技术的校园网络中心方案

随着网络技术的发展和网络应用的进一步深入,校园网络承担了越来越多的来自教学.科研及管理方面的应用.校园网络中心作为校内局域网络的数据存储发布.流量的管理控制.用户的管理以及内外网络转接控制中心,必须解决因流量增加所带来的一系列问题.传统的网络中心方案中,当流量增加后,一般是升级单一的服务器系统,这往往会造成过高的投入和维护成本,极大地降低了性能价格比.运用基于Linux集群技术设计的校园网络中心方案可以有效地解决这一问题. 校园网络中心体系结构 基于Linux集群技术的校园网络中心的体系结构是以