您的位置 首页 > 数码极客

kafkaonyarn如何实现

Spark On Yarn的搭建分为三个阶段,第一个是Zookeeper集群的搭建,第二是Hadoop集群的搭建,第三是Spark集群的搭建。所以以下将按照这三个步骤Spark On Yarn完全分布式搭建。

一、准备

1、软件及版本

1. jdk-8u65-linux-x64.

2.

3. zookeeper-3.4.7.

4. hadoop-2.7.1_64bit.

5.



(兼容!!!)

2、服务器

这里将使用三台服务器进行搭建。分别命名hadoop01、hadoop02、hadoop03、

首先要解释,偶数台服务器并不是某个集群偶数台,而是三个集群共用了偶数台服务器,查看下面的角色分配,你就会明白。

1.角色分配

zookeeper集群分配三台。

Hadoop分配需要分开说:

首先时hdfs:两个主节点,三个从节点,5台。

JN集群:三台

Yarn集群:两个主节点,三个从节点,5台。

Spark集群:三台。

将以上各个集群的节点合并,具体分配如下:


hadoop01:JournalNode、Zookeeper、DataNode、NodeManager、ResourceManager(active)、namenode(active)、Spark。 hadoop02:JournalNode、Zookeeper、DataNode、NodeManager、NameNode(standby)、Spark。 hadoop03:JournalNode、DataNode、Zookeeper、NodeManager、ResourceManager(standby)、Spark。


2.服务器设置

每台服务器都要进行如下的配置。

1>关闭防火墙

此项配置,是根据自己的需求进行配置,这里为了方便搭建,进行了关闭,也可以进行端口开放,不过比较麻烦。(cen)


service iptables status #查看防火墙状态 service iptables start #立即开启防火墙,但是重启后失效。 service iptables stop #立即关闭防火墙,但是重启后失效。 #重启后生效 chkconfig iptables on #开启防火墙,重启后生效。 chkconfig iptables off #关闭防火墙,重启后生效。

2>配置主机名

文件位置:/etc/sysconfig/network


vim /etc/sysconfig/network

!!!!!注意安装hadoop的集群主机名不能有下划线!!不然会找不到主机!无法启动!

su - :生效主机名

3>配置hosts

文件位置:/etc/hosts

配置好此文件之后可以通过远程命令将配置好的hosts文件scp到其他2台节点上,执行命令如下:


scp /etc/hosts hadoop01: /etc/hosts scp /etc/hosts hadoop02: /etc/hosts scp /etc/hosts hadoop03: /etc/hosts

4>配置免密登录

集群中所有主机都要互相进行免密登录,包括自己和自己。

生成密钥:


ssh-keygen

发送公钥:


ssh-copy-id hadoop01

此时在远程主机的/root/.ssh/authorized_keys文件中保存了公钥,在known_hosts中保存了已知主机信息,当再次访问的时候就不需要输入密码了。


ssh hadoop01

通过此命令远程连接,检验是否可以不需密码连接。

记得免密登录一定要给本机发送。

此次集群数量,互相发送免密登录的次数为36次。

提示:可以提前将环境变量编辑好下文的环境变量都可以省略:


export JAVA_HOME=/a export HADOOP_HOME=/a export SCALA_HOME=/a export SPARK_HOME=/a export ZOOKEEPER_HOME=/a export KAFKA_HOME=/a export HBASE_HOME=/a export HIVE_HOME=/a export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin/:$ZOOKEEPER_HOME/bin:$KAFKA_HOME/bin:$HBASE_HOME/bin:$HIVE_HOME/bin


3.安装jdk

1>解压安装

将jdk安装包上传、解压安装包,并更名,命令如下:


tar -zxvf jdk-8u65-linux-x64. mv jdk1.8.0_65 jdk1.8

2>配置环境变量

修改/etc/profile。

这个文件是每个用户登录时都会运行的环境变量设置,当用户第一次登录时,该文件被执行。并从/etc目录的配置文件中搜集shell的设置。


vim /etc/profile

在文件行尾加入以下内容后保存退出。


JAVA_HOME=/home/software PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME PATH

4.安装Scala

1>解压安装

上传解压,并更名,命令如下:


tar -zxvf mv

2>配置环境变量

修改/etc/profile。


vim /etc/profile

3>重新加载

重新加载profile使配置生效。

source /etc/profile

环境变量配置完成,测试环境变量是否生效。


echo $JAVA_HOME java -version scala

如上两步操作,操作完一台之后,可以进行远程拷贝,减少工作量。

二、Zookeeper完全分布式搭建

查找Zookeeper搭建文档

三、Hadoo HA集群搭建步骤

此示例以hadoop01节点服务器为示例。

1、安装

直接解压Hadoop压缩包即可。

2、配置

以下配置文件均在目录下。

1.

编辑文件,命令如下:

vim

此文件配置两项:jdk安装所在目录、hadoop配置文件所在目录。

2.core-

直接编辑core-文件,命令如下:


vim core-

此文件配置项内容如下:


<configuration> <!--用来指定hdfs的老大,ns为固定属性名,此值可以自己设置,但是后面的值要和此值对应,表示两个namenode--> <property> <name>;/name> <value>hdfs://ns</value> </property> <property> <name>;/name> <value>/root/hadoop/data</value> </property> <property> <name>;/name> <value>*</value> </property> <property> <name>;/name> <value>*</value> </property> <property> <name>;/name> <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value> </property> </configuration>

3.hdfs-

直接编辑hdfs-文件,命令如下:


vim hdfs-

配置内容如下:


<configuration> <!--执行hdfs的nameservice为ns,和core-保持一致--> <property> <name>d;/name> <value>ns</value> </property> <!--ns下有两个namenode,分别是nn1,nn2--> <property> <name>d;/name> <value>nn1,nn2</value> </property> <!--nn1的RPC通信地址--> <property> <name>d;/name> <value>hadoop01:9000</value> </property> <!--nn1的http通信地址--> <property> <name>d;/name> <value>hadoop01:50070</value> </property> <!--nn2的RPC通信地址--> <property> <name>d;/name> <value>hadoop02:9000</value> </property> <!--nn2的http通信地址--> <property> <name>d;/name> <value>hadoop02:50070</value> </property> <!--指定namenode的元数据在JournalNode上的存放位置, 这样,namenode2可以从jn集群里获取最新的namenode的信息,达到热备的效果--> <property> <name>d;/name> <value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns</value> </property> <!--指定JournalNode存放数据的位置--> <property> <name>d;/name> <value>/ajournaal</value> </property> <!--开启namenode故障时自动切换--> <property> <name>d;/name> <value>true</value> </property> <!--配置切换的实现方式--> <property> <name>d;/name> <value>org.a;/value> </property> <!--配置隔离机制--> <property> <name>d;/name> <value>sshfence</value> </property> <!--配置隔离机制的ssh登录秘钥所在的位置--> <property> <name>d;/name> <value>/root/.ssh/id_rsa</value> </property> <!--配置namenode数据存放的位置,可以不配置,如果不配置,默认用的是 core-里配置的的路径--> # <property> # <name>d;/name> # <value>file:///home/software;/value> # </property> <!--配置datanode数据存放的位置,可以不配置,如果不配置,默认用的是 core-里配置的的路径--> # <property> # <name>d;/name> # <value>file:///home/software;/value> # </property> <!--配置block副本数量--> <property> <name>d;/name> <value>3</value> </property> <!--设置hdfs的操作权限,false表示任何用户都可以在hdfs上操作文件,生产环境不配置此项,默认为true--> <property> <name>d;/name> <value>false</value> </property> <property> <name>d;/name> <value>/root/hadoop/tmp/namenode</value> </property> <property> <name>d;/name> <value>/root/hadoop/tmp/datanode</value> </property> <property> <name>d;/name> <value>hadoop02:50090</value> </property> </configuration>

4.mapred-

需要复制mapred-.template更名为mapred-然后配置,命令如下:


cp ma mapred- vim mapred-

配置内容如下:


<configuration> <property> <!--指定mapreduce运行在yarn上--> <name>ma;/name> <value>yarn</value> </property> </configuration>

5.yarn-

直接编辑yarn-文件,命令如下:


vim yarn-

配置内容如下:


<configuration> <!-- 开启YARN HA --> <property> <name>yarn.re;/name> <value>true</value> </property> <!-- 指定两个resourcemanager的名称 --> <property> <name>yarn.re;/name> <value>rm1,rm2</value> </property> <!-- 配置rm1,rm2的主机 --> <property> <name>yarn.re;/name> <value>hadoop02</value> </property> <property> <name>yarn.re;/name> <value>hadoop03</value> </property> <!--开启yarn恢复机制--> <property> <name>yarn.re;/name> <value>true</value> </property> <!--执行rm恢复机制实现类--> <property> <name>yarn.re;/name> <value>org.a;/value> </property> <!-- 配置zookeeper的地址 --> <property> <name>yarn.re;/name> <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value> <description>For multiple zk services, separate them with comma</description> </property> <!-- 指定YARN HA的名称 --> <property> <name>yarn.re;/name> <value>yarn-ha</value> </property> <property> <!--指定yarn的老大 resoucemanager的地址--> <name>yarn.re;/name> <value>hadoop02</value> </property> <property> <!--NodeManager获取数据的方式--> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 一台NodeManager的总可用内存资源 --> <property> <name>yarn.nodemanager.re;/name> <value>2048</value> </property> <!-- 一台NodeManager的总可用(逻辑)cpu核数 --> <property> <name>yarn.nodemanager.re;/name> <value>2</value> </property> <!-- 是否检查容器的虚拟内存使用超标情况 --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> <!-- 容器的虚拟内存使用上限:与物理内存的比率 --> <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>2.1</value> </property> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> </configuration>

6.slaves

直接编辑slaves文件,命令如下:


vim slaves

配置内容如下:


hadoop01 hadoop02 hadoop03

这里面可以填写主机名,也可以填写ip地址,建议填写主机名,根据以上角色分配填写。

3、环境变量

如果在上面已经配置过了,此步骤可以忽略

1.配置环境变量

配置hadoop的环境变量,命令如下:


vim /etc/profile

内容如下:


JAVA_HOME=/home/software HADOOP_HOME=/home/software PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export JAVA_HOME PATH HADOOP_HOME

Hadoop的环境变量也可以不配置,但是如果不配置的话,后期命令操作会比较麻烦,需要一直切换目录。配置了环境变量之后,就可以在任何目录下使用Hadoop的命令了。

2.重新加载


source /etc/profile

重新加载之后才会生效。

4、创建文件夹

根据配置文件,创建相关的文件夹,用来存放对应数据。

在目录下创建:

①journal目录。

②创建tmp目录。

③在tmp目录下,分别创建namenode目录和datanode目录。

命令如下:

#当前所在Hadoop根目录


mkdir journal mkdir tmp cd tmp/ mkdir namenode mkdir datanode

5、拷贝文件

通过scp 命令,将hadoop安装目录远程copy到其他5台机器上。

比如向spark02节点传输:


for i in 2 3 ; do scp -r hadoop0$i:$PWD ; done

远程拷贝之前要先在其他服务器上创建对应的目录,否则拷贝失败。

6、Hadoop集群启动

1.启动zookeeper集群

在Zookeeper安装目录的bin目录下执行:


sh zkServer.sh start

此命令需要在所有的Zookeeper节点服务器上执行,执行完成可以使用以下命令查看启动状态:


sh zkServer.sh status

以下是查看进程命令:


jps

2.格式化zookeeper

在zk的leader节点服务器上,Hadoop的bin目录中执行如下命令:


sh hdfs zkfc -formatZK

这个指令的作用是在zookeeper集群上生成ha节点(ns节点)。

如果配置了Hadoop的环境变量,那么在此节点的任何目录下都可以执行如下命令:


hdfs zkfc -formatZK

3.启动journalnode集群

在04、05、06任意节点服务器上,即分配了journalnode角色的节点服务器上,切换到hadoop安装目录的sbin目录下,执行如下命令:


sh start journalnode

注意:此命令执行一次就可以启动所有journalnode节点。如下图,命令使用的是,是有s的,启动的时候一定要注意,不要用错了命令。

然后执行jps命令查看:

如果此项启动不成功尝试重启,这项启动不成功会影响下一步的格式化。

4.格式化NameNode

在spark01服务器上格式化namenode,执行如下命令:


hadoop namenode -format

5.启动NameNode

1>hdaoop01服务器

在hdaoop01节点上执行如下命令,启动NameNode节点:


start namenode

2>hdaoop02服务器

首先把hdaoop02服务器的 namenode节点变为standby namenode节点。

执行命令如下:


hdfs namenode -bootstrapStandby

启动hadoop02服务器的namenode节点,执行命令如下:


start namenode

6.启动DataNode

在hadoop01,hadoop02,hadoop03服务器上分别启动datanode节点,在这三台服务器上分别执行如下命令:


start datanode

7.启动zkfc

FalioverControllerActive是失败恢复线程。这个线程需要在NameNode节点所在的服务器上启动,在hadoop01,hadoop02服务器上执行如下命令:


start zkfc

8.启动Resourcemanager

1>hadoop02服务器

在hdaoop02服务器上启动主Resourcemanager节点,执行如下命令:


启动成功后,hadoop01,hadoop02,hadoop03服务器上的nodemanager 也会跟随启动。

2>hadoop03服务器

在hadoop03服务器上启动副 Resoucemanager节点,执行如下命令:


yarn-daemon.sh start resourcemanager

7、测试

在浏览器中输入地址:,查看namenode的信息,是active状态的。此ip地址是我在配置的时候使用的ip地址,请不要照搬,要写自己使用的ip地址。

输入地址:,查看namenode的信息,是standby状态。

然后使用kill命令停掉hadoop02节点的namenode,此时发现standby的namenode变为active。证明热备成功。

四、Spark On Yarn搭建

1、安装

在hadoop01、hadoop02、hadoop03节点上安装配置spark。

直接解压压缩包即可。

2、配置

进入Spark安装目录的conf目录,配置以下文件。

1.

conf目录下没有此文件,需要复制模版文件.template更名,命令如下:


cp .template vim

直接在文件末尾添加,内容示例如下:


export JAVA_HOME=/apps.0_60 export SCALA_HOME=/a export HADOOP_HOME=/apps/ export HADOOP_CONF_DIR=/aetc/hadoop


2.

此文件在目录下也没有,也需要复制模版文件,更名然后编辑,命令如下:


cp .template vim

直接在文件末尾添加内容,配置示例如下:


spark.yarn.jars=hdfs://hadoop01:9000/spark_jars/*

此处hdfs的地址需要是active状态的节点。

3.slaves

此文件在conf目录下也没有,同样需要赋值模版文件,更名然后编辑,命令如下:


cp slaves vim slaves

同样在文件末尾直接添加配置内容即可,配置示例如下:


hadoop01 hadoop02 hadoop03

3、上传jar包

在HDFS上,创建一个目录,用来存放spark的依赖jar包。此目录是目录中配置的目录名称,命令如下:


hadoop fs -mkdir /spark_jars

进入spark安装目录的jars目录,执行:


hadoop fs -put ./* /spark_jars

至此,完成Spark-Yarn的配置。

注意:如果是用虚拟机搭建,可能会由于虚拟机内存过小而导致启动失败,比如内存资源过小,yarn会直接kill掉进程导致rpc连接失败。所以,我们还需要配置Hadoop的yarn-文件,加入如下两项配置:

yarn-配置示例:


<property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property>

此项在生产环境不需要配置。

4、启动

1.启动spark shell

启动spark shell,进入Spark安装目录的bin目录,执行如下命令:


sh spark-shell --master yarn-client



2.测试

可以通过yarn控制台来验证。



至于spark的使用,和之前都是一样的。只不过资源的分配和管理是交给yarn来控制了。

五、重启集群

往往在测试的时候,需要重新启动集群服务,在重新启动的时候,就不需要第一次配置时那么麻烦,可以按照如下步骤进行重启集群服务。

1、启动zookeeper集群

在Zookeeper安装目录的bin目录下执行:


sh zkServer.sh start

此命令同样需要在所有的Zookeeper节点服务器上执行。

2、启动Hadoop集群

1.启动HDFS

进入hadoop安装目录的sbin目录,执行如下命令:


此命令会将HDFS相关的所有节点都启动,不需要切换服务器来进行单独启动HDFS相关的节点进程。

2.启动Yarn

1>spark01服务器

在hadoop02服务器上启动主Resourcemanager节点,执行如下命令:


启动成功后,spark04、spark05、spark06服务器上的nodemanager 也会跟随启动。

2>spark03服务器

在hadoop03服务器上启动副 Resoucemanager节点,执行如下命令:


yarn-daemon.sh start resourcemanager

3、启动spark shell

启动spark shell,进入Spark安装目录的bin目录,执行如下命令:


sh spark-shell --master yarn-client


想要更多spark相关资料可以私信

也欢迎各位小伙伴私信交流

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“kafkaonyarn如何实现”边界阅读