Spark yarn集群搭建

yarn是hadoop的一个子项目,用于管理分布式计算资源,在yarn上面搭建spark集群需要配置好hadoop和spark。集群是有3台虚拟机组成,都是centos系统的。
下面一步一步进行集群搭建。
一.配置hosts文件
为了方便地查找主机,hosts文件是主机名到ip的映射,不用去记各个主机的IP地址. 在以后的url中就可以用master代替192.168.18.15。

192.168.18.15 master
192.168.18.16 slave1
192.168.18.17 slave2

这里我的三个节点分别对应master slave1 slave2.
二、配置ssh
生成公钥密钥对
在每个节点上分别执行:
ssh-keygen -t rsa
一直按回车直到生成结束
执行结束之后每个节点上的/root/.ssh/目录下生成了两个文件 id_rsa 和 id_rsa.pub
其中前者为私钥,后者为公钥
在主节点上执行(在.ssh目录里):

cp id_rsa.pub authorized_keys

将子节点的公钥拷贝到主节点并添加进authorized_keys
将两个子节点的公钥拷贝到主节点上,分别在两个子节点上执行:

scp  ~/.ssh/ id_rsa.pub root@master:/~/.ssh/id_rsa_slaver1.pub
scp  /root/.ssh/ id_rsa.pub root@master:/root/.ssh/id_rsa_slaver1.pub
scp  /root/.ssh/ id_rsa.pub root@192.168.128.135:/root/.ssh/id_rsa_slaver1.pub

(进入到root目录,//.ssh可能报错找不到目录,可以写成/root/.ssh)

scp  ~/.ssh/ id_rsa.pub root@master:/~/.ssh/id_rsa_slaver2.pub

然后在主节点上,将拷贝过来的两个公钥合并到authorized_keys文件中去
主节点上执行:

cat id_rsa_slaver1.pub>> authorized_keys
cat id_rsa_slaver2.pub>> authorized_keys

最后测试是否配置成功
在master上分别执行

ssh slaver1
ssh slaver2

能正确跳转到两台子节点的操作界面即可,
输入exit退出
这里的配置方式可以有多种操作步骤,最终目的是每个节点上的/root/.ssh/authorized_keys文件中都包含所有的节点生成的公钥内容。
将主节点的authorized_keys文件分别替换子节点的authorized_keys文件
同样在每个子节点通过相同的方式登录主节点和其他子节点也能无密码正常登录就表示配置成功。
主节点上用scp命令将authorized_keys文件拷贝到子节点的相应位置

scp authorized_keys root@slaver1:/root/.ssh/
scp authorized_keys root@slaver2:/root/.ssh/
  1. 安装jdk
    配置环境变量, 编辑profile文件:
    vi /etc/profile
    在profile文件末尾添加以下代码:
#java
export JAVA_HOME=/usr/java/jdk1.8.0_221
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

保存后,使刚才编辑的文件生效:
source /etc/profile
测试是否安装成功:java –version
四、安装scala
使用spark最好还是用scala语言,解压后配置环境变量,修改/etc/profile

#scala
export SCALA_HOME=/usr/local/software/scala-2.11.6
export PATH=$PATH:$SCALA_HOME/bin

五、安装配置HADOOP和YARN
yarn的包是包含在hadoop里面的,解压hadoop压缩包,tar -zxvf hadoop-2.6.4.tar.gz,配置环境变量,
同样的方法使环境变量生效,并验证scala是否安装成功

[root@master ~]# source /etc/profile
[root@master ~]# scala –version
Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL
#hadoop
export HADOOP_HOME=/usr/local/software/hadoop-2.6.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#spark-yarn
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export YARN_HOME=/usr/local/software/hadoop-2.6.4
export YARN_CONF_DIR=${YARN_HOME}/etc/hadoop

环境变量配置完了,现在要配置hadoop自身的配置文件,目录在hadoop目录下的etc/hadoop文件夹,里面有很多配置文件.我们需要配置七个:hadoop-env.sh,yarn-env.sh,slaves,core-site.xml,hdfs-site.xml,maprd-site.xml,yarn-site.xml。

hadoop-env.sh:
export JAVA_HOME=/usr/java/jdk1.8.0_221
yarn-env.sh:
export JAVA_HOME=/usr/java/jdk1.8.0_221
slaves:
slave1
slave2
core-site.xml:
<configuration>
        <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000/</value>
        </property>
        <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/software/hadoop-2.6.4/tmp</value>
        </property>
</configuration>
hdfs-site.xml:
<configuration>
        <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:9001</value>
        </property>
        <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/software/hadoop-2.6.4/dfs/name</value>
        </property>
        <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/software /hadoop-2.6.4/dfs/data</value>
        </property>
        <property>
        <name>dfs.replication</name>
        <value>3</value>
        </property>
</configuration>
mapred-site.xml:
<configuration>
        <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        </property>
</configuration>
yarn-site.xml:
<configuration>
        <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
        </property>
        <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
        <name>yarn.resourcemanager.address</name>
        <value>fang-ubuntu:8032</value>
        </property>
        <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
        </property>
        <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8035</value>
        </property>
        <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
        </property>
        <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
        </property>
</configuration>

配置好了以后,需要调用hadoop namenode 格式化,配置改变以后就需要格式化namenode,其实就是创建一些目录,增添一些文件,以后配置不变的话就不需要再格式化。如果配置变了就需要删除tmp,dfs,logs文件夹,再进行格式化
bin/hadoop namenode -format #格式化namenode
现在就可以启动hdfs系统和yarn系统了:

sbin/start-dfs.sh              #启动dfs
sbin/start-yarn.sh              #启动yarn

启动成功后可以使用jps命令查看各个节点上是否启动了对应进程。
master节点上:
在这里插入图片描述
slave节点上:
在这里插入图片描述
看终端报错没有,没报错基本就成功了,再去UI看看,访问:http://ip:8088
在这里插入图片描述
集群就搭建好了。
六、安装配置spark:
解压spark压缩包
tar -zxvf spark-2.4.4-bin-hadoop2.6.4.tar
配置spark配置文件:
cp spark-env.sh.template spark-env.sh #从配置模板复制
vim spark-env.sh #添加配置内容
在spark-env.sh末尾添加以下内容(这是我的配置,你可以自行修改):

export SPARK_HOME=/usr/local/software/spark
export SCALA_HOME=/usr/local/software/scala-2.11.6
export JAVA_HOME=/usr/java/jdk1.8.0_221
export HADOOP_HOME=/usr/local/software/hadoop-2.6.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/
bin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export YARN_HOME=/usr/local/software/hadoop-2.6.4
export YARN_CONF_DIR=$YARN_HOME/etc/hadoop
export SPARK_MASTER_IP=
SPARK_LOCAL_DIRS=/usr/local/software/spark
SPARK_DRIVER_MEMORY=1G
export SPARK_LIBARY_PATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME/lib/native

上述的版本那些根据个人的进行修改,还有运行内存那些要根据硬件配置来,太大了启动spark会失败。
slaves文件:

slave1
slave2

配置好后再各个节点上同步,scp …

scp -r spark root@slave1:/usr/local/software/
scp -r spark root@slave2:/usr/local/software/

启动Spark,sbin/start-all.sh
验证 Spark 是否安装成功
主节点上启动了Master进程:
在这里插入图片描述
在 slave 上启动了Worker进程:
在这里插入图片描述
进入Spark的Web管理页面:ip:8080
在这里插入图片描述
七、运行示例
本例以集群模式运行SparkPi实例程序(deploy-mode 设置为cluster)

./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --driver-memory 1G --executor-memory 1G --executor-cores 1 examples/jars/spark-examples_2.11-2.4.4.jar 40

在这里插入图片描述
任务提交时web界面
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值