在Linux集群上部署Spark

简介

Spark 的安装部署比较简单,用户访问官网下载最新版本或历史版本,参阅官方文档作为参考。作者写本文时,最新的版本为2.2.0,因此此文章所述环境搭建均已Spark2.2.0版本为例。

Spark使用了Hadoop的HDFS作为持久化存储层,因此安装Spark时,应先安装与Spark版本兼容的Hadoop。同时Spark计算框架以Scala语言开发,对Scala,JDK版本也有具体要求。以版本2.2.0为例,需要java8,scala2.11.*。

本文的实际搭建环境为 Ubuntu16.04, 其他Linux发行版的安装类似,基本一致。

1 本地文件下载

  • Spark
  • Hadoop
  • JDK
  • Scala

2 安装 JAVA

  1. 将下载的JDK文件解压到/usr/local/jvm目录
  2. JDK 环境配置,用编辑器打开/etc/profile文件,加入如下内容:
    export JAVA_HOME = /use/local/jvm/jdk1.8.0_144
    export PATH = $PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
    
    关闭并保存profile文件
  3. 输入命令 source /etc/profile 使配置生效

3 安装 SCALA

  1. 找到下载好的安装包 scala-2.11.11.tgz

  2. 安装

    tar zxvf scala-2.11.11.tgz -C /usr/local/scala
    cd /usr/local/scala
    ln -s scala-2.11.11 scala
    
  3. 配置,打开/etc/profile,添加如下语句:

    export SCALA_HOME = /usr/local/scala/scala
    export PATH = $PATH:$SCALA_HOME:bin
    

4 配置SSH免密登录

在分布式系统中,通常使用SSH服务来启动Slave节点上的程序,当节点数量比较大的时候,频繁的输入密码进行身份认证是比较差的体验,切安全性不一定高。使用SSH公私钥的方式达到SSH免密码登录。

首先在MASTER节点上创建一对公司钥(公钥文件 ~/.ssh/id_rsa.pub;私钥文件 /.ssh/id_rsa),然后把公钥拷贝到woeker节点上(/.ssh/authorized_keys)

5 Hadoop的安装配置

  • 将hadoop binary压缩包解压到目标目录(软链接自由选择用不用)

    tar zvxf hadoop-2.7.4.tar.gz -C /usr/local/hadoop
    ln -s hadoop-2.7.4 hadoop
    
  • 配置:“core-site.xml”:Hadoop的核心信息,包括临时目录、访问地址等;

        
            fs.defaultFSname>
            hdfs://Master:9000
        
        
            hadoop.tmp.dir
            file://root/bigdata/tmp
        
        
            io.file.buffer.szie
            131702
        
    
  • 配置:“yarn-site.xml”:可以简单理解为配置相关job的处理;

    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    
    
        yarn.nodemanager.auxservices.mapreduce.shuffle.class
        org.apache.hadoop.mapred.ShuffleHandler
    
    
        yarn.resourcemanager.address
        Master:8032
    
    
        yarn.resourcemanager.scheduler.address
        Master:8030
    
    
        yarn.resourcemanager.resource-tracker.address
        Master:8031
    
    
        yarn.resourcemanager.admin.address
        Master:8033
    
    
        yar.resourcemanager.webapp.address
        Master:8088
    
    
  • 创建 namenode 和 datanode目录,并配置路径

mkdir -p /hdfs/namenode
mkdir -p /hdfs/datanode
  • 配置:“hdfs-site.xml”:可以确定文件的备份个数、数据文件夹的路径;

    
        dfs.namenode.name.dir
        file:/hdfs/namenode
    
    
        dfs.datanode.data.dir
        file:/hdfs/datanode
    
    
        dfs.replication
        3
    
    
        dfs.namenode.secondary.http-address
        true
    
    
  • 配置“mapredsite.xml”

    
        mapreduce.jobhistory.address
        Master:10020
    
    
        mapreduce.hobhistory.webapp.address
        Master:19888
    
    
  • 配置”slaves“文件,在其中加入所有从节点的主机名

    x.x.x.x worker1
    x.x.x.x worker2
    
  • 格式化namenode

/usr/local/hadoop/hadoop-2.7.4/bin/hadoop namenode -format

6 Spark 的安装配置Spark

  • 解压spark binary 到目标目录
tar zxvf spark-2.2.0-bin-hadoop2.7.tgz -C /usr/local/spark/spark-2.2.0-bin-hadoop2.7
  • 配置spark
    1. /etc/profile 文件添加:
    export SPARK_HOME=/usr/local/spark/spark-2.2.0-bin-hadoop2.7
    PATH=$PATH:$SPARK_HOME/bin
    
    1. 配置 /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
    
    1. 进入/usr/local/spark/spark-2.2.0-bin-hadoop2.7/conf,命令行执行
    cp spark-env.sh.template spark-env.sh
    vi spark-env.sh
    
    1. 文件末尾加入
    export JAVA_HOME=/usr/local/jvm/jdk1.8
    export SCALA_HOME=/usr/local/scala/scala
    export SPARK_MASTER_IP=127.0.1.1
    export SPARK_WORKER_MEMORY=1g
    
    保存并退出,执行
    cp slaves.template slaves
    vi slaves
    # 输入 worker节点的hostname
    worker1
    worker2
    worker3
    

7 Hadoop与Spark 集群的复制

我们到此为止已经完成了一台主机的配置,现在将该环境及部分配置文件从Master分发到各个Worker节点上。在集群环境中,有一台主机想多台主机间的文件传输一般使用pssh工具完成。为此,在Master上建立一个workerlist.txt,其中保存了所有Worker的IP.

复制环境 命令行
JDK环境 pssh -h workerlist -r /usr/local/scala /
SCALA环境 pssh -h workerlist -r /usr/local/scala /
Hadoop环境 pssh -h workerlist -r /usr/local/hadoop /
Spark环境 pssh -h workerlistt -r /usr/local/hadoop /
系统配置 pssh -h workerlist /etc/hosts /, pssh -h workerlist /etc/profile /

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

8 Spark 集群试运行
最近还在学习中,随时更新

你可能感兴趣的:(在Linux集群上部署Spark)