美文网首页大数据
部署Spark集群

部署Spark集群

作者: 浪尖儿 | 来源:发表于2016-08-17 17:41 被阅读45次

    即使照着文档一步一步来也会遇到不少坑,好吧,还是详细记录一下!

    部署Spark集群

    实验环境

    三台虚拟机:
    操作系统:Ubuntu 14.04 LTS
    静态ip地址,分别是:192.168.1.10-12
    使用spark 1.5.1官网预编译的版本

    设置计算机名

    把三台计算机名分别设置为mater、slave1、slave2. 并且修改/etc/hostname和/etc/hosts两个文件是它们相互能ping到。

    配置ssh无密码登录

    从master上要访问到slave1和slave2,并能控制他们的启动和停止,需要配置一下ssh无密码登录。由于暂时不需要相互访问,只需让master能访问slave1和slave2即可,需要相互访问的话,按照同样道理添加。看了别人的讲解和介绍,主要是分为以下几步:

    生成master的公钥

    ssh-keygen -t rsa
    

    一路回车,不需要输入密码. 执行该操作将在/home/user/.ssh下生成id_rsa, id_rsa.pub文件,其中id_rsa.pub是公钥。

    把公钥文件分发到各个slave上面

    进入.ssh文件夹,使用scp命令把id_rsa.pub文件拷贝到各个slave:

    scp id\_rsa.pub shenshen@192.168.1.11:~/.ssh/
    
    scp id\_rsa.pub shenshen@192.168.1.12:~/.ssh/
    

    这里要注意,.ssh文件夹如果不存在的话要自己创建,并且注意该文件夹的权限设置应该是700.

    在各个slave上面,把刚拷贝过来的id_rsa.pub文件加入到authorized_keys文件中

    authorized_keys文件默认是不存在的,使用下面的命令把刚拷贝过来的id_rsa.pub文件加入到authorized_keys文件中:

    cat id\_dsa.pub >> ~/.ssh/authorized\_keys
    

    设置文件和目录权限

    设置authorized_keys权限

    chmod 600 authorized\_keys
    

    设置.ssh目录权限

    chmod 700 -R .ssh
    

    好了,这样就可以通过ssh访问不需要密码了!通过下面的命令测试:

    ssh localhost
    
    ssh slave1
    
    ssh slave2
    

    这里是个不好理解的地方:A将公钥发给B,不是说让B来访问A,而是A就可以访问B了。太霸道了!也就是说B不能在.ssh文件夹下的authorized_keys保留A的公钥,如保存就是把自己让给别人来访问!

    启动Spark集群

    在master主机上启动spark standalone集群之前还需要配置conf/slaves文件,spark提供了一个模板,首先拷贝一份出来:

    cp slaves.template slaves
    
    vim slaves
    

    里面默认就只有一行localhost,把各个slaves的hostname加进去:

    # A Spark Worker will be started on each of the machines listed below.
    
    localhost
    
    slave1
    
    slave2
    

    然后启动集群:

    sbin/start-all.sh
    

    通过浏览器访问http://192.168.1.10:8080,可以监控spark Standalone集群的情况。

    <img src="./media/image1.jpeg" width="1299" height="591" />

    启动不成功,错误消息是"JAVA_HOME is not set"

    这是个奇怪的问题,每个虚拟机的/etc/profile中都设置了JAVA_HOME的环境变量,但启动集群时还是出错。在网上搜了一下,普遍遇到这个问题,解决方法是,要在每台虚拟机的$SPARK_HOME/conf/spark-env.sh中添加一行,重新设置变量如下:

    export JAVA\_HOME=/usr/lib/jvm/jdk1.8.0\_60
    

    参考

    1. Spark官方文档

    2. JAVA_HOME is not set

    3. ssh无密码登录

    4. ssh无密码登录2

    相关文章

      网友评论

        本文标题:部署Spark集群

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