利用wmware搭建spark集群

本文详细介绍了在wmware上利用centos系统搭建Spark集群的全过程,包括网络拓扑设计、虚拟机安装、用户和SSH配置、JAVA、SCALA、Zookeeper、Hadoop以及Spark的安装与配置。通过克隆虚拟机创建3个节点,配置IP、Zookeeper集群和HDFS、Yarn、Spark的集群设置。最后,检查各项服务状态,通过WebUI监控集群运行情况,完成Spark集群的搭建。
摘要由CSDN通过智能技术生成

0. 写在前面

  本文参考了 马踏飞燕 的博客, 然后补充了自己搭建过程中遇到的坑和其它未有详尽的地方. 为了尊重作者,此处贴出链接
  https://www.cnblogs.com/jasonfreak/p/5391190.html
阅读本文给自己练习集群的搭建, 帮助自己更好地理解hadoop/spark生态圈, 在生产环境的真机搭建也是同样的道理, 跟随本文一起一步步搭建完整的spark集群吧!

采用centos系统.

1. 网络拓扑

在这里插入图片描述
搭建一个有意义的小规模集群,我选择了3台服务器作为Spark计算节点(Worker)。集群中光有计算节点还不够,这3台服务器同时也作为分布式文件系统(HDFS)的数据节点(DataNode)。指定了哪些服务器用来计算,哪些用来存储之后,我们还需要指定来管理计算和存储的主节点。一个简单方案:我们可以让cloud1作为管理计算节点的主节点(Master),同时它也作为管理数据节点的主节点(NameNode)。

很容易看到简单方案不够完美:首先,要是cloud1作为NameNode宕机,整个分布式文件系统则无法工作。此时,我们应当采用基于HA的HDFS方案:由多个NameNode共同管理DataNode,但是只有一个NameNode处于活动(Active)状态,当活动的NameNode无法工作时,则需要其他NameNode候补。这里至少涉及2个关键技术:

如何共享NameNode的信息(EditLog)?NameNode存储的信息包括但不限于:数据在各DataNode上如何存储,哪些DataNode是可用的。所以,当活动的NameNode无法工作时,应当将这些信息传递给下一个被选中的NameNode。与其传递,不如所有的NameNode共享这些信息。这些信息将被分布式地存储在JournalNode上。在本集群中,我们使用所有3台服务器都作为JournalNode。cloud1和cloud2作为NameNode。
如何确保只有一个NameNode是活动的?当活动的NameNode无法工作时,如何确定下一个活动的Namenode?Zookeeper可以解决这两个问题,在本集群中,3台服务器都作为Zkserver节点。
  再者,选用cloud1作为Master来管理计算(standalone)的方式对资源的利用率不比Yarn方式。所以,在本集群中选用cloud1做为ResourceManager,3台服务器都作为NodeManager)。

节点 Zkserver NameNode JournalNode ResourceManager NodeManager Master Worker
cloud1
cloud2 × ×
cloud3 × × ×

2.安装centos虚拟机

  这个就不赘述了, 都开始搭集群了, 我不相信你不会装虚拟机.

3. 启动一个虚拟机, 安装好相应的组件, 然后再克隆出3个节点机

3.1 添加用户名为hadoop的用户

adduser hadoop
passwd hadoop

3.2 SSH安装及配置

  集群之间要通过ssh来进行连接和通信, 我们要先搭建起ssh通信网
安装ssh:

yum install -y openssl openssh-server

集群之间肯定不能用密码的方式进行连接, 因此我们要配置公钥连接
用vim打开配置文件/etc/ssh/sshd_config
打开监听端口、监听地址
打开监听端口、监听地址
打开PermitRootLogin,PubkeyAuthentication等配置, 允许公钥登录
在这里插入图片描述
由于后面的cloud2和cloud3都是由cloud1克隆出来, 因此我们将cloud1的公钥认证, 后面cloud2和cloud3克隆的时候都有认证的公钥了,就可以互相登录了

# 切换到hadoop用户
su hadoop
ssh-keygen -t rsa -P ""   # 生成公钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 将公钥内容写入认证
# 修改权限
cd ~
chmod -R 700 .ssh
chmod 600 .ssh/authorized_keys
# 测试连接,不用输入密码就代表配置成功
ssh hadoop@localhost

4.安装JAVA

下载地址http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
我选择了1.8.0_251版本
在这里插入图片描述

mkdir /usr/local/java
# 把下载的安装包拷贝到这个目录,然后解压
 tar -zxvf jdk-8u251-linux-x64.tar.gz 
# 打开文件编辑环境变量
vim /etc/profile
#java
export JAVA_HOME=/usr/local/java/jdk1.8.0_251
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

使环境变量生效

source /etc/profile
# 添加软连接
ln -s /usr/local/java/jdk1.8.0_251/bin/java /usr/bin/java
# 测试是否成功
java -version

在这里插入图片描述

5. 安装SCALA

# 创建安装文件夹
mkdir /usr/local/scala
cd /usr/local/scala
# 下载scala-2.11.8
wget https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz
# 解压
tar -zxvf scala-2.11.8.tgz
# 打开文件编辑环境变量
vim /etc/profile

在末尾添加如下内容

# scala
export SCALA_HOME=/usr/local/scala/scala-2.11.8
export PATH=$PATH:$SCALA_HOME/bin
# 使环境变量配置生效
source /etc/profile
# 输入启动命令测试是否成功
scala

在这里插入图片描述

6.Zookeeper安装及配置

https://zookeeper.apache.org/releases.html
进去之后选择合适的版本, 这里选择3.6.1并使用国内镜像
在这里插入图片描述
点进去后复制任意一个镜像链接
在这里插入图片描述

# 创建安装目录
mkdir /usr/local/zookeeper
cd /usr/local/zookeeper
# 通过刚刚复制的链接下载
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz
# 解压
tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz
# 打开文件编辑环境变量
vim /etc/profile

在末尾添加如下内容

#zookeeper
export ZOOKEEPER_HOME=/usr/local/zookeeper/apache-zookeeper-3.6.1-bin
export PATH=$PATH:$ZOOKEEPER_HOME/bin
# 使配置文件生效
source /etc/profile

生成zookeeper配置文件

cd /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/conf/ 
cp zoo_sample.cfg zoo.cfg
# 编写配置
vim zoo.cfg
# 注意配置文件中的dataDir,后面要在这个数据文件夹中写入本节点是server几, 
# 想要把数据文件目录放到
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值