[Spark]Spark2.1.0与Hadoop2.7.5的集群安装及配置

    工作快两个月了,已经大半年没有更新了,决定继续更新博客。续更的第一个系列将会是与目前工作相关Spark系列。第一篇就从Spark的安装与配置开始。

集群的准备

要搭建Spark集群环境,首先要准备集群。笔者这里使用了三台机器,都为debian8系统。

三台机的信息如下:

172.30.232.140 master

172.30.232.138 slave1

172.30.232.139 slave2

这个ip信息需要添加到三节机器的/etc/hosts中去。

image.png

三机器的应用规划如下:

master  NameNode & Spark master & Spark woker

slave1   DataNode & Spark woker

slave2   DataNode & Spark woker

集群间互信认证设置

集群中,master需要管理slave节点,因此master需要有控制slaves的权限,即配置ssh-key认证。如果集群未安装ssh协议,请先安装ssh协议。

  1. 进入master节点,执行如下命令,生成密钥对

ssh-keygen -t rsa

说明:些命令将会在/root/.ssh/目录下生成id_rsa.pub和id_rsas两个文件

2. 将master生成的公钥分发的各机器(包含master本身)并添加到authorized_keys中

在master 中直接执行

cat /root/.ssh/id_rsa.pub  >> /root/.ssh/authorized_keys

将id_rsa.pub分发到其它机器,执行如下命令

scp /root/.ssh/id_rsa.pub slave1:/root/.ssh/id_rsa.pub.master
scp /root/.ssh/id_rsa.pub slave2:/root/.ssh/id_rsa.pub.master

分别进入slave1机器和slave2机器,执行

cat /root/.ssh/id_rsa.pub.master >> /root/.ssh/authorized_keys

说明:验证配置是否成功,执行ssh slave1或ssh slave2,若直接登陆到机slave机器,则配置成功

安装JDK和Scala运行环境

集群中所有机器都要有Spark的运行环境,即JDK和Scala,以下操作以master节点例,其它节点操作相同(其它节点的配置可留到master节点完全配置好之后,将所有文件及设置直接拷贝到其它节点)

1. JDK的安装配置

首先去oracle官网下载JDK:jdk-8u181-linux-x64.tar.gz

解压到/usr/lib/jvm/目录(提前创建好目录)下,执行如下 命令

tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/lib/jvm/

配置JDK变量JAVA_HOME,CLASSPATH和PATH,将如下内容添加到/etc/profile中

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_181/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/rt.jar

2. Scala的安装和配置

首先去Scala官网下载Scala:scala-2.12.6.tgz

解压到/usr/local/share目录,执行如下命令

tar -zxvf scala-2.12.6.tgz -C /usr/local/share/

配置SCALA_HOME和PATH,,将如下内容添加到/etc/profile文件中

export SCALA_HOME=/usr/local/share/scala-2.12.6/
export PATH=$PATH:$SCALA_HOME/bin

image.png

说明:所有的节点都要进行这一步操作

Hadoop2.7.5分布式环境搭建

Hadoop是Spark所需要的组件。集群所有机器都需要安装Hadoop环境。(其它节点的配置可留到master节点完全配置好之后,将所有文件及设置直接拷贝到其它节点)

1. 首先去Apache官网下载Hadoop程序:hadoop-2.7.5.tar.gz

解压到/opt目录下,执行如下命令:

tar -zxvf hadoop-2.7.5.tar.gz -C /opt

2. 修改/etc/profile文件,增加如下的环境变量:

export HADOOP_HOME=/opt/hadoop-2.7.5/
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_ROOT_LOGGER=INFO,console
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

image.png

3. 修改${HADOOP_HOME}/etc/hadoop/hadoop-env.sh文件中的JAVA_HOME一行如下

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_181/

4. 修改${HADOOP_HOME}/etc/hadoop/slaves文件,添加两个slave的hostname,内容如下:

slave1

slave2

说明:如果向让master主机也成为DataNode,可以将master也加入到slaves文件中。

5. 修改$HADOOP_HOME/etc/hadoop/core-site.xml文件内容如下:

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
        </property>
        <property>
         <name>io.file.buffer.size</name>
         <value>131072</value>
       </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/hadoop-2.7.5/tmp</value>
        </property>
</configuration>

6. 修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml文件内容如下:

<configuration>
    <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>master:50090</value>
    </property>
    <property>
      <name>dfs.replication</name>
      <value>2</value>
    </property>
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/opt/hadoop-2.7.5/hdfs/name</value>
    </property>
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/opt/hadoop-2.7.5/hdfs/data</value>
    </property>
</configuration>

7. 从模板复制mapred-site.xml.template文件为mapred-site.xml文件,并修改内容如下:

<configuration>
 <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
          <name>mapreduce.jobhistory.address</name>
          <value>master:10020</value>
  </property>
  <property>
          <name>mapreduce.jobhistory.address</name>
          <value>master:19888</value>
  </property>
</configuration>

7. 修改$HADOOP_HOME/etc/hadoop/yarn-site.xml内容如下:

<configuration>
      <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</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>yarn.resourcemanager.webapp.address</name>
         <value>master:8088</value>
     </property>
</configuration>

8. 将所有hadoop文件及配置过的文件拷贝到其它集群(可用scp命令),即集群中的所在机器配置完全相同。

在master机器上执行NameNode格式化指令:

hadoop namenode -format

启动Hadoop集群,执行如下命令:

/opt/hadoop-2.7.5/sbin/start-all.sh

说明:在master机器下执行jps指令,看到如下内容,即为启动成功

image.png

在slave节点执行jps指令,看到如下内容,即为启动成功

image.png

Spark分布式环境搭建

所有的节点都需要安装Spark环境。以master节点为例(其它节点的配置可留到master节点完全配置好之后,将所有文件及设置直接拷贝到其它节点)

1. 去Apache官网下载spark程序:spark-2.1.0-bin-hadoop2.7.tgz

解压到/opt目录下,执行如下命令:

tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz -C /opt/

2. 修改/etc/profile文件,添加如下内容:

export SPARK_HOME=/opt/spark-2.1.0-bin-hadoop2.7/
export PATH=$PATH:$SPARK_HOME/bin

image.png

3. 从模板复制${SPARK_HOME}/conf/spark-env.sh.template文件为spark-env.sh文件,并修改内容如下:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_181/
export SCALA_HOME=/usr/local/share/scala-2.12.6/
export HADOOP_HOME=/opt/hadoop-2.7.5/
export HADOOP_CONF_DIR=/opt/hadoop-2.7.5/etc/hadoop
export SPARK_MASTER_IP=master
export SPARK_WORKER_MEMORY=1g
export SPARK_HOME=/opt/spark-2.1.0-bin-hadoop2.7
export SPARK_DIST_CLASSPATH=$(/opt/hadoop-2.7.5/bin/hadoop classpath)

image.png

4. 从模板复制${SPARK_HOME}/conf/slaves.template文件为slaves,并修改内容如下:

master
slave1
slave2

说明:如果不想master节点成为worker节点,可以不添加master。

5. 将所有spark文件及配置过的文件复制到其它机器上,在master节点上执行如下命令启动spark

/opt/spark-2.1.0-bin-hadoop2.7/sbin/start-all.sh

说明:在master节点执行jps命令,内容如下即为启动成功

image.png

在slave节点执行jps命令,内容如下即为启动成功

image.png

到此,Spark环境就算部署完成了,可以执行spark-shell命令,进行spark shell环境进行简单测试了。

image.png

0 条评论
发表一条评论