使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建

先说一下我用的软件or环境的版本:

VMware14.1.1

Ubuntu16.06.03

jdk1.8.0_161

Scala2.10.5

Python2.12(装Ubuntu后自带的)

Spark1.6.1-hadoop2.6

Hadoop2.6.4


步骤:

  1. 安装VMware。傻瓜式安装,提供两个激活序列号:FF31K-AHZD1-H8ETZ-8WWEZ-WUUVA、CV7T2-6WY5Q-48EWP-ZXY7X-QGUWD;

  2. 安装Ubuntu,用镜像安装,过程也很简单,无坑。这里只安装一台虚拟机,等配好一些环境后,再直接克隆出另外两台。我设置第一台虚拟机的名称为lch-Ubuntu-1,用户名为lch;

  3. 安装jdk。去官网下载,默认会下载到“/home/lch/下载”文件夹中,cd到该文件夹,执行以下代码,接下来,需要配置环境变量,这里先不配,一会一起配:

    sudo mkdir /usr/local/java //jdk解压目录
    sudo tar xvf jdk-8u25-linux-x64.tar.gz -C /usr/local/java //解压
  4. 安装Scala。去官网官网下载,和安装jdk一样,新建文件夹,解压:

    sudo mkdir /usr/local/scala
    sudo tar -zxvf scala-2.12.4.tgz -C /usr/local/scala
  5. 安装Spark。去官网下载,注意与Scala版本对应!注意与Scala版本对应!注意与Scala版本对应!重要的事说三遍。当然,我选择的Spark1.6.1-hadoop2.6和Scala2.10.5是对应的。和上面一样,两步,新建文件夹,解压:

    sudo mkdir /usr/local/spark
    sudo tar -zxvf spark-1.6.1-bin-hadoop2.6.tgz -C /usr/local/spark

    解压完成后,开始下一步,配置环境变量;

  6. 配置环境变量。先使用以下命令打开环境变量文件:

    sudo gedit ~/.bashrc

    然后,在文件的末尾追加以下代码:

    //jdk
    export JAVA_HOME=/usr/local/java/jdk1.8.0_161 
    export JRE_HOME=${JAVA_HOME}/jre  
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
    export PATH=${JAVA_HOME}/bin:$PATH
    //scala
    export SCALA_HOME=/usr/local/scala/scala-2.10.5 
    export PATH=${SCALA_HOME}/bin:$PATH
    //spark
    export SPARK_HOME=/usr/local/spark/spark-1.6.1-bin-hadoop2.6
    export PATH=${SPARK_HOME}/bin:$PATH

    保存并退出,在终端中输入以下代码使修改生效:

    source ~/.bashrc

    接下来,需要测试jdk、scala和spark是否安装成功; 

  7. 测试。首先,使用“java -version”进行对jdk进行测试,终端中出现版本号即可。然后,使用“scala”对scala进行测试,能够进入scala shell即可。最后,使用“spark-shell”和“pyspark”对spark进行测试,分别出现如下图中红框内部分即可;

    使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建_第1张图片使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建_第2张图片

  8. 修改本机名称。先使用以下命令查询本机ip。

    ifconfig -a

    使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建_第3张图片

    然后使用以下命令修改该文件中的本机名称:

    sudo gedit /etc/hostname

    将其中的lch-Ubuntu-1修改为master,然后执行以下命令:

    sudo gedit /etc/hosts

    将其中的lch-Ubuntu-1修改为master,并添加如下代码(此时我们还没有slave,但是克隆出来的slave的ip一般是连号的,记住,不能删除这个文件里的localhost),然后重启虚拟机;

    192.168.86.128      master
    192.168.86.129      slave1
    192.168.86.130      slave2
    使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建_第4张图片
  9. 安装SSH。使用以下命令安装SSH:

    sudo apt-get install openssh-server
  10. 克隆虚拟机。先把虚拟机关机,使用VMware的克隆功能克隆出两台Ubuntu,这时,这两台新的Ubuntu的本机名应该也叫master,我们使用第8步中的方法(hosts文件不用改,克隆过来了),将两台Ubuntu的本机名分别改为slave1和slave2并重启使其生效;

  11. SSH免密。在三台Ubuntu的终端中输入以下命令,一直按回车就行。

    ssh-keygen -t rsa
    然后将slave1与slave2上的id_rsa.pub用scp命令发送给master(注意,这里要将命令中的“lch”改为你对应的用户名):
    scp ~/.ssh/id_rsa.pub lch@master:~/.ssh/id_rsa.pub.slave1
    scp ~/.ssh/id_rsa.pub lch@master:~/.ssh/id_rsa.pub.slave2

    在master上,将所有公钥加到用于认证的公钥文件authorized_keys中:

    cat ~/.ssh/id_rsa.pub* >> ~/.ssh/authorized_keys
    在master上,将公钥文件authorized_keys分发给每台slave:
    scp ~/.ssh/authorized_keys lch@slave1:~/.ssh/
    scp ~/.ssh/authorized_keys lch@slave2:~/.ssh/

    现在可以在三台机器上使用以下命令测试是否可以免密登陆了:

    ssh master
    ssh slave1
    ssh slave2
    使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建_第5张图片
  12. 安装hadoop。去官网下载,然后新建文件夹、解压:

    sudo mkdir /usr/local/hadoop
    sudo tar -zxvf hadoop-2.6.4.tar.gz -C /usr/local/hadoop

    进入“/usr/local/hadoop/hadoop-2.6.4/etc/hadoop”目录,对以下文件进行配置:

    //hadoop-env.sh
    export JAVA_HOME=/usr/local/hadoop/hadoop-2.6.4/jdk1.8.0_165
    //yarn-env.sh
    export JAVA_HOME=/usr/local/hadoop/hadoop-2.6.4/jdk1.8.0_165
    //slaves(把文件里的localhost删掉)
    slave1
    slave2
    core-site.xml(自行设计路径,文件夹需要自己手动创建)
    
        
            fs.defaultFS
            hdfs://master:9000/
        
        
             hadoop.tmp.dir
             file:/home/lch/hadoop264/tmp
        
    
    hdfs-site.xml(自行设计路径,文件夹需要自己手动创建)
    
        
            dfs.namenode.secondary.http-address
            master:9001
        
        
            dfs.namenode.name.dir
            file:/home/lch/hadoop264/namenode
        
        
            dfs.datanode.data.dir
            file:/home/lch/hadoop264/datanode
        
        
            dfs.replication
            3
        
        
            dfs.webhdfs.enabled
            true
        
    
    mapred-site.xml(不用改)
    
        
            mapreduce.framework.name
            yarn
        
    
    yarn-site.xml(不用改)
    
        
            yarn.nodemanager.aux-services
            mapreduce_shuffle
        
        
            yarn.nodemanager.aux-services.mapreduce.shuffle.class
            org.apache.hadoop.mapred.ShuffleHandler
        
        
            yarn.resourcemanager.address
            master:8032
        
        
            yarn.resourcemanager.scheduler.address
            master:8030
        
        
            yarn.resourcemanager.resource-tracker.address
            master:8035
        
        
            yarn.resourcemanager.admin.address
            master:8033
        
        
            yarn.resourcemanager.webapp.address
            master:8088
        
    

    在两台slave中创建和master一致的hadoop文件夹,并在三台机器中均使用以下命令进行文件夹的权限设置:

    sudo chmod -R 777 /usr/local/hadoop

    此时可以将配置好的hadoop-2.6.4文件夹分发给所有slave了:

    scp -r /usr/local/hadoop/hadoop-2.6.4 lch@slave1:/usr/local/hadoop/
    scp -r /usr/local/hadoop/hadoop-2.6.4 lch@slave2:/usr/local/hadoop/

    分发完成后,再次在两台slave中对hadoop文件夹进行权限设置:

    sudo chmod -R 777 /usr/local/hadoop

    使用cd命令切换到hadoop主目录,格式化namenode后,启动:

    ./bin/hadoop namenode -format
    ./sbin/start-all.sh

    在三台机器的终端中分别输入jps命令(下图是master和slave1,slave2和slave1是一样的),看到如下图即代表启动成功,可以使用“./sbin/stop-all.sh”进行关闭;

    使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建_第6张图片使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建_第7张图片

  13. 再次配置spark。先使用如下命令将两台slave中的spark文件删除(一会再从master传过来):

    sudo rm -rf /usr/local/spark/spark-1.6.1-bin-hadoop2.6

    然后,在master上cd到spark的根目录下的conf目录中,修改以下文件(没有该文件则新建该文件):

    //spark-env.sh
    export SCALA_HOME=/usr/local/scala/scala-2.10.5
    export JAVA_HOME=/usr/local/java/jdk1.8.0_161
    export HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.4
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export SPARK_MASTER_IP=master
    export MASTER=spark://192.168.86.128:7077
    export SPARK_LOCAL_DIRS=/usr/local/spark/spark-1.6.1-bin-hadoop2.6
    export SPARK_DRIVER_MEMORY=512M
    //slaves(把文件中自带的localhost删除)
    master
    slave1
    slave2

    同样的,在三台机器上使用chmod命令给文件夹赋予权限:

    sudo chmod -R 777 /usr/local/spark

    此时可以将配置好的spark-1.6.1-bin-hadoop2.6文件夹分发给所有slave了:

    scp -r /usr/local/spark/spark-1.6.1-bin-hadoop2.6 lch@slave1:/usr/local/spark/
    scp -r /usr/local/spark/spark-1.6.1-bin-hadoop2.6 lch@slave2:/usr/local/spark/

    在两台slave中再次对文件夹赋予权限:

    sudo chmod -R 777 /usr/local/spark

    此时,配置已完成,使用cd命令切换到spark主目录,进行启动:

    ./sbin/start-all.sh

    在三台机器的终端中分别输入jps命令(图示是master和slave1),看到如下图即代表启动成功,可以使用“./sbin/stop-all.sh”进行关闭;

    使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建_第8张图片使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建_第9张图片

  14. 集群测试。在spark启动成功后,在master的终端中cd到spark根目录,执行以下代码(spark自带的一个例子),出现结果即为成功:

    ./bin/run-example org.apache.spark.examples.SparkPi

下面是我装的过程中碰到的坑及解决办法(其实我已经把正解都写在安装过程中,所以这里只有下面提到的一个坑),解决办法转自一个博客,若侵则删:

使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建_第10张图片

附上几个我也不知道是干嘛的代码(也是我尝试用来解决上述问题用的):

chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

你可能感兴趣的:(Spark)