美文网首页
在Linux集群上部署Spark

在Linux集群上部署Spark

作者: 大数据与人工智能 | 来源:发表于2017-10-13 16:44 被阅读0次

    简介

    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 本地文件下载

    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的核心信息,包括临时目录、访问地址等;

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

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

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

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

      <property>
          <name>mapreduce.jobhistory.address</name>
          <value>Master:10020</value>
      </property>
      <property>
          <name>mapreduce.hobhistory.webapp.address</name>
          <value>Master:19888</value>
      </property>
      
    • 配置”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

          本文链接:https://www.haomeiwen.com/subject/hznzyxtx.html