Spark學習之spark集羣搭建

(推廣一下本身的我的主頁 zicesun.com) 本文講介紹如何搭建spark集羣。html

搭建spark集羣須要進行一下幾件事情:java

  1. 集羣配置ssh無祕登陸
  2. java jdk1.8
  3. scala-2.11.12
  4. spark-2.4.0-bin-hadoop2.7
  5. hadoop-2.7.6

上述全部的文件都安裝在/home/zhuyb/opt文件夾中。node

服務器

服務器是實驗室的,選用了一臺master和三臺slave機器.IP和機器名在hosts文件中作了映射,所以能夠經過hostname直接訪問機器。web

ip addr hostname
219.216.64.144 master
219.216.64.200 hadoop0
219.216.65.202 hadoop1
219.216.65.243 hadoop2

配置shh免密登陸

詳情參考集羣環境ssh免密碼登陸設置 shh免密登陸配置其實很容易,咱們如今有四臺機器,首先咱們master上生成新的公鑰和私鑰文件。shell

ssh-keygen -t rsa                     #.ssh文件夾將出現id_rsa,id_rsa.pub
cat id_rsa.pub >> authorized_keys     #將公鑰拷貝到authorized_keys文件中
複製代碼

而後按照一樣的方式在三臺slave機器上生成公鑰和私鑰,並將各自的authorized_keys文件拷貝到master上,並將文件中的公鑰追加到master的authorized_keys文件中。編程

ssh-copy-id -i master #將公鑰拷貝到master的authorized_keys中
複製代碼

最後講master的authorized_keys文件拷貝到三臺slave機器上。至此,四臺機器便可實現ssh免密登陸。bash

安裝JDK和Scala

JDK版本是1.8, Scala版本是2.11。Scala 2.12與spark 2.4版本有些不兼容,在後續編程的時候會出現一些問題,以後應該會解決。講jdk和scala文件解壓以後,可在~/.bashrc 文件中配置環境變量。服務器

export JAVA_HOME=/home/zhuyb/opt/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

export SCALA_HOME=/home/zhuyb/opt/scala-2.11.12
export PATH=${SCALA_HOME}/bin:$PATH

複製代碼

按照上述方式配置好以後,而後執行命令 source ~/.bashrc。全部的操做須要在每臺機器上進行配置。app

配置Hadoop

  1. 講Hadoop文件解壓到~/opt/文件夾下。
tar -zxvf hadoop-2.7.3.tar.gz
mv hadoop-2.7.3 ~/opt
複製代碼
  1. ~/.bashrc文件中配置環境變量,並執行source ~/.bashrc生效
​```
export HADOOP_HOME=/home/zhuyb/opt/hadoopp-2.7.6
export PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin/:$PATH
export CLASSPATH=.:$HADOOP_HOME/lib:$CLASSPATH
export HADOOP_PREFIX=/home/zhuyb/opt/hadoop-2.7.6
​```
複製代碼
  1. 修改相應的配置文件框架

    a. 修改$HADOOP_HOME/etc/hadoop/slaves,將原來的localhost刪除,改爲以下內容:

    hadoop0
        hadoop1
        hadoop2
    複製代碼

    b. 修改$HADOOP_HOME/etc/hadoop/core-site.xml

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/home/zhuyb/opt/hadoop-2.7.6/tmp</value>
        </property>
    
    </configuration>
    
    複製代碼

    c. 修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml

    <configuration>
        <property>
            <name>dfs.datanode.address</name>
            <value>0.0.0.0:50010</value>
        </property>
    
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>master:50090</value>
        </property>
        <!-- 備份數:默認爲3-->
         <property>
            <name>dfs.replication</name>
             <value>3</value>
         </property>
        <!-- namenode-->
         <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/home/zhuyb/tmp/dfs/name</value>
         </property>
        <!-- datanode-->
         <property>
             <name>dfs.datanode.data.dir</name>
             <value>file:/home/zhuyb/tmp/dfs/data</value>
    </property>
    </configuration>
    複製代碼

    d. 複製template,生成xml, cp mapred-site.xml.template mapred-site.xml,修改$HADOOP_HOME/etc/hadoop/mapred-site.xml

    <configuration>
    <!-- mapreduce任務執行框架爲yarn-->
        <property>
             <name>mapreduce.framework.name</name>
             <value>yarn</value>
        </property>
    <!-- mapreduce任務記錄訪問地址-->
        <property>
              <name>mapreduce.jobhistory.address</name>
              <value>master:10020</value>
         </property>
        <property>
               <name>mapreduce.jobhistory.webapp.address</name>
                <value>master:19888</value>
         </property>
    </configuration>
    複製代碼

    e. 修改$HADOOP_HOME/etc/hadoop/yarn-site.xml

    <configuration>
    	<!-- Site specific YARN configuration properties -->
    <property>
         <name>yarn.nodemanager.aux-services</name>
         <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    
    </configuration>
    複製代碼

    f. 修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh,修改JAVA_HOME

    export JAVA_HOME=~/opt/jdk1.8.0_121
    複製代碼
  2. 將master Hadoop文件夾拷貝到Hadoop0,hadoop1,hadoop2三臺機器上

scp -r ~/opt/hadoop-2.7.3 zhuyb@hadoop0:~/opt
複製代碼

配置Spark

  1. 將spark文件解壓到~/opt下,而後在~/.bashrc配置環境變量,並執行source ~/.bashrc
export SPARK_HOME=/home/zhuyb/opt/spark-2.4.0-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME
複製代碼
  1. 複製spark-env.sh.template成spark-env.sh,cp spark-env.sh.template spark-env.sh修改$SPARK_HOME/conf/spark-env.sh,添加以下內容:
export JAVA_HOME=/home/zhuyb/opt/jdk1.8.0_201
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077
複製代碼
  1. 複製slaves.template成slaves,cp slaves.template slaves,修改$SPARK_HOME/conf/slaves,添加以下內容:
hadoop0
hadoop1
hadoop2
複製代碼
  1. 修改hadoop0, hadoop1, hadoop2. 修改hadoop1, hadoop2,hadoop0, $SPARK_HOME/conf/spark-env.sh,將export SPARK_LOCAL_IP改爲hadoop1, hadoop2,hadoop0的IP

引用

Hadoop2.7.3+Spark2.1.0徹底分佈式集羣搭建過程

相關文章
相關標籤/搜索