spark的伪集群搭建

准备各种安装包

参考了两篇文章:
https://blog.csdn.net/ms961516792/article/details/79115383
https://blog.csdn.net/wy250229163/article/details/52729608/
我安装包链接:https://pan.baidu.com/s/1Sdqzjh9U7-fL5RnQf0XKzA 密码:l9za

spark的伪集群搭建_第1张图片

安装一个文件传输包lrzsz

不需要安装Xftp,因为我的Xftp试用期过了不想破解了,lrzsz可以实现虚拟机和我pc的文件传送在终端中,输入命令:

sudo apt-get install lrzsz

使用说明:
sz命令 发送文件到本地:

sz filename 

rz命令 将本地上传文件到服务器,服务器就是虚拟机,本地就是电脑端

rz

执行该命令后,在弹出框中选择要上传的文件即可。

安装SSH服务

为连接Xshell做准备的

sudo apt-get install openssh-server

安装jdk(java)

在虚拟机里面安装java需要rz上传jdk到虚拟机,建立Java目录,把java解压到/usr/local/java 目录

sudo mkdir /usr/local/java //jdk解压目录
sudo tar xvf jdk-8u25-linux-x64.tar.gz -C /usr/local/java //解压

安装Scala

上传Scala并解压到/usr/local/scala

sudo mkdir /usr/local/scala
sudo tar -zxvf scala-2.12.4.tgz -C /usr/local/scala

配置环境变量

先使用以下命令打开环境变量文件

sudo gedit ~/.bashrc

在文件的末尾追加以下代码:
注意!!!!!!!!!!!
修改/usr/local/这里的路径啊

//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

测试

java测试



scala测试



spark测试
图是别人的
spark的伪集群搭建_第2张图片

修改本机名称

把ubuntu修改为master

sudo gedit /etc/hostname

修改hosts文件

sudo vi /etc/hosts

下面的master是本机的ip地址

10.1.1.100      master
10.1.1.101      slave1
10.1.1.102      slave2

克隆主机

在VMware克隆主机即可,在 master,slave2和slave1更改hosts文件就是上面的(10.1.1.*),在slave2和slave1该主机名称(master的名称不用改)。
修改之后ping 一下各个ip

ping slave1,ping slave2,ping master

配置master与slave

分别在master,slave2和slave1使用:
一直按回车飘过就行,

ssh-keygen -t rsa

注意ssh-keygen -t rsa执行完后它会告诉你在哪里生成了文件,一般在/.ssh,cd到/.ssh
把slave1与slave2上的id_rsa.pub用scp命令发送给master,

scp id_rsa.pub yanghe@master:~/.ssh/id_rsa.pub.slave1
scp id_rsa.pub yanghe@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 yanghe@slave1:~/.ssh/
scp ~/.ssh/authorized_keys yanghe@slave2:~/.ssh/

检查是否免密码登陆

SSH master
SSH slave1
SSH slave2

安装和配置hadoop

上传hadoop包到master上,在master上执行如下:

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

vim hadoop-env.sh

下文中遇到//hadoop-env.sh等类似写法,就是用vim 进行编辑
在hadoop-env.sh里面设置JAVA_HOME

//hadoop-env.sh
export JAVA_HOME=/usr/local/hadoop/hadoop-2.6.4/jdk1.8.0_165

在yarn-env.sh里面设置JAVA_HOME

//yarn-env.sh
export JAVA_HOME=/usr/local/hadoop/hadoop-2.6.4/jdk1.8.0_165

在slaves这个文件里面加入作为slave的IP地址或者对应的hosts映射名字。

//slaves(把文件里的localhost删掉)
slave1
slave2

core-site.xml 。注意到底下的目录,如果软件内没有tmp,则自己创建。

//core-site.xml(自行设计路径,文件夹需要自己手动创建)

    
        fs.defaultFS
        hdfs://master:9000/
    
    
         hadoop.tmp.dir
         file:/home/lch/hadoop264/tmp
    

hdfs-site.xml。注意到底下的目录,如果软件内没有/dfs/name以及/dfs/data,则自己创建。

//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,在当前路径下有mapred-site.xml.template文件。copy一份去掉.template后缀也可以
cp mapred-site.xml.template mapred-site.xml
(不用改)就是粘贴即可。

//mapred-site.xml(不用改)

    
        mapreduce.framework.name
        yarn
    

yarn-site.xml编辑。

//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

分发系统

在master上将配置好的hadoop-2.6.4文件夹分发给所有slave

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

测试hadoop的伪集群

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

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

用用jps命令查看hadoop进程。 在master上应该有:

jps

master上有

3407 SecondaryNameNode
3218 NameNode
3552 ResourceManager
3910 Jps

在slave1与slave2上应该有:

4642 Jps
4523 DataNode
4606 NodeManager

如图(master),我这里有个SecondaryNameNode没启动:


spark的伪集群搭建_第3张图片

(在slave1上)


spark的伪集群搭建_第4张图片

在master的浏览器上输入master:8088,能够访问hadoop管理界面,并看到slaves的存在
 master:8088

配置spark

在slave上使用如下命令将两台slave中的spark文件删除(一会再从master传过来)

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

在master上cd到spark的根目录下的conf目录中,在此目录下,可以看到很多配置文件。但是很多文件都是以template结尾的,这是因为spark给我们提供的模板配置文件,我们可以拷贝一份,然后将.template给去掉,添加一下代码到末尾.

//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,在这个文件里把slaves的hosts里的映射名添加进去。

slave1
slave2

最后就可以将配置好的spark-2.0.0-bin-hadoop2.7文件夹分发给所有slave了

scp -r ~/software/spark-2.0.0-bin-hadoop2.7 yanghe@slave1:~/software/
scp -r ~/software/spark-2.0.0-bin-hadoop2.7   yanghe@slave2:~/software/

启动Spark,cd到spark主目录,然后

sbin/start-all.sh

在master上jps出现

7805 Master

在slaves上jps出现

3759 Worker

同样的master:8080 能够访问spark管理界面,并看到slaves的存在

集群测试。

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

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

你可能感兴趣的:(spark的伪集群搭建)