美文网首页
垦荒记|Spark集群搭建

垦荒记|Spark集群搭建

作者: 翱翔云端 | 来源:发表于2018-02-06 15:34 被阅读0次
    Spark架构图
    Spark对大数据计算进行了一次伟大的革命,它的风格是独立自主,力争全能,连集群管理器都自己开发,Standalone就是Spark自己的集群管理器。
    Spark把可以做的都做了,因此搭建集群也简单了不少,比Storm还要简单。搭Storm集群至少需要个Zookeeper,搭Spark集群可以不需要任何第三方的东西,它自己全部有!
    我用Spark做什么?做大数据批处理。你可能会说用Hadoop的Map/Reduce不就行了,这东西就像C语言的指针,关于他的弊端,我已经在大数据计算的四支精干队伍,你造吗一文讨论过了,此处不赘述。虽然我不用Map/Reduce,但是我需要Hadoop的HDFS来存数据。为提高数据访问效率,把Spark的Master节点和Hadoop的SecondaryNameNode节点放在一起,把Spark的Worker节点和Hadoop的DataNode节点放一起。这样的安排是基于自己的数据访问场景,并不是必须的。

    搭建Spark集群

    host 168 170 172 175
    HDFS SecondaryNameNode DataNode DataNode NameNode
    Spark Master Worker Worker Worker

    1.准备工作
    (1)主机规划。基本规划如表所示,根据自己的需求来,可以加Worker节点。
    (2)官网下载Spark稳定版。本文使用spark-2.1.1-bin-hadoop2.6.tgz。
    (3)新增spark用户,方便对Spark进行管理。

    # 新增spark用户
    # useradd spark
    #设置spark用户密码
    # passwd spark
    #根据提示输入密码即可,直接输入,光标是不会动的
    

    (4)SSH免密码登录。
    注销root,使用spark用户登录,设置Master节点到各Worker节点的SSH免密码登录。

    #工作目录
    $ pwd
    $ /home/spark
    # 各机器上执行,生成RSA密钥
    $ ssh-keygen -t rsa -P ''
    
    #设置master到自己的免密码登录
    $ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
    $ chmod 755 .ssh
    $ chmod 755 .ssh/authorized_keys
    #测试
    $ ssh x.x.x.168
    $ exit
    
    #将master节点的RSA公钥给各worker节点
    $ scp .ssh/authorized_keys spark@x.x.x.170:/home/spark/id_rsa.pub
    $ scp .ssh/authorized_keys spark@x.x.x.172:/home/spark/id_rsa.pub
    $ scp .ssh/authorized_keys spark@x.x.x.175:/home/spark/id_rsa.pub
    
    #各worker节点spark家目录下执行
    $ cat id_rsa.pub >> .ssh/authorized_keys
    $ chmod 755 .ssh
    $ chmod 755 .ssh/authorized_keys
    
    #测试168到175免密码登录
    $ ssh x.x.x.175
    $ exit
    

    (5)将下载的spark压缩包上传各节点spark家目录下。
    2.集群配置。

    #解压
    $ tar -zxvf spark-2.1.1-bin-hadoop2.6.tgz
    #进入配置文件目录
    $  cd spark-2.1.1-bin-hadoop2.6/conf/
    #配置文件列表
    $ ll
    
    #配置master节点地址
    $ cp spark-defaults.conf.template spark-defaults.conf
    $ vi spark-defaults.conf
    #文件末尾加上
    spark.master                     spark://{master_host}:7077
    #保存
    
    #配置worker节点地址
    $ cp slaves.template slaves
    $ vi slaves
    #文件末尾加上各worker地址即可
    
    #配置spark-env
    $mkdir /home/spark/data /home/spark/work
    $ cp spark-env.sh.template spark-env.sh
    $ vi spark-env.sh
    #文件末尾加上
    export SPARK_MASTER_IP=x.x.x.168
    export SPARK_MASTER_PORT=7077
    export SPARK_LOCAL_DIRS=/home/spark/data
    export SPARK_WORKER_DIR=/home/spark/work
    export JAVA_HOME=/usr/java/jdk1.8.0_121
    export SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.interval=60 -Dspark.worker.cleanup.appDataTtl=300"
    #赋予脚本执行权限
    $ chmod 755 spark-env.sh
    
    #可以根据自己的需要配置下log4j[可选]
    
    #为方便,将spark的可执行脚本加到spark用户环境变量中[可选]
    $ vi ~/.bash_progile
    #文件末尾加上
    export SPARK_HOME=/home/spark/spark-2.1.1-bin-hadoop2.6
    export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
    

    以上配置每个节点都要配置,对于conf下的配置,建议配置好一个节点后,直接copy配置文件到其他节点即可。
    3.启动集群。

    #启动spark集群,master节点上执行
    $ start-all.sh
    

    看看日志,再到各节点jps看看spark守护进程是否启动。
    正常的话,可以访问Spark UI了,http://{master_host}:8080,祝好运!

    相关文章

      网友评论

          本文标题:垦荒记|Spark集群搭建

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