Spark+Hadoop集群搭建:(二)集群节点上搭建Hadoop环境

  • 1 集群规划
  • 1.1 节点规划
  • 2 构建data1
  • 2.1 复制生成data1
  • 2.2 设置网卡
  • 2.3 配置data1服务器
  • 2.3.1 编辑hostname主机名
  • 2.3.2 配置core-site.xml
  • 2.3.3 配置YARN-site.xml
  • 2.3.4 配置mapred-site.xml
  • 2.3.5 配置hdfs-site.xml
  • 2.4 通过data1复制产生data2、data3、master
  • 2.5 配置data2服务器
  • 2.5.1 设置主机名
  • 2.6 配置data3服务器
  • 2.6.1 设置主机名
  • 2.7 配置master服务器
  • 2.7.1 设置主机名
  • 2.7.2 设置hdfs-site.xml
  • 2.7.3 设置masters文件
  • 2.7.4 设置slaves文件
  • 3 配置host文件
  • 3.1 查看各个节点的IP
  • 3.2 设置hosts文件
  • 4 创建HDFS目录
  • 4.1 为data1创建HDFS目录
  • 4.2 为data2创建HDFS目录
  • 4.3 为data3创建HDFS目录
  • 4.4 为master创建HDFS目录
  • 5 设置SSH无密码登录
  • 5.1 安装SSH与rsync
  • 5.2 修改ssh配置文件
  • 5.3 产生SSH Key
  • 5.4 测试
  • 5.5 data2、data3
  • 5.6 master本身
  • 5.7 从其他节点免密登录
  • 6 启动集群


1 集群规划

1.1 节点规划

集群由4台服务器组成。其中1台为master,作为HDFS的NameNode、MapReduce的ResourceManager。其余三台为data,作为HDFS的DataNode、MapReduce的NodeManager。规划图如下。

hadoop和spark运行模式 spark和hadoop结合_hadoop


注意,这里4台服务器全部是虚拟机。

2 构建data1

2.1 复制生成data1

这里,我们将直接由之前构建的单节点虚拟机复制过来,加以修改。将Hadoop复制到data1(注意需要Hadoop处于关闭状态)。右击Hadoop,点击复制

hadoop和spark运行模式 spark和hadoop结合_hadoop和spark运行模式_02


设置名称为data1,MAC地址设定:为所有网卡重新生成MAC地址,点击下一步

hadoop和spark运行模式 spark和hadoop结合_xml_03


选择完全复制

hadoop和spark运行模式 spark和hadoop结合_hadoop和spark运行模式_04


复制完成后,得到一个新的虚拟机data1

hadoop和spark运行模式 spark和hadoop结合_hadoop_05

2.2 设置网卡

选中data1,点击设置,选择”网络“。设置网卡1为”NAT“网卡,点击确定,用于通过Host主机与外部连通

hadoop和spark运行模式 spark和hadoop结合_xml_06


设置网卡2为”仅主机适配器“

hadoop和spark运行模式 spark和hadoop结合_HDFS_07

2.3 配置data1服务器

启动data1,进行配置

2.3.1 编辑hostname主机名

sudo gedit /etc/hostname 打开文件,改为data1

hadoop和spark运行模式 spark和hadoop结合_HDFS_08

2.3.2 配置core-site.xml

sudo gedit /usr/local/hadoop/etc/hadoop/core-site.xml

hadoop和spark运行模式 spark和hadoop结合_xml_09

2.3.3 配置YARN-site.xml

sudo gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml

在其中新增如下内容

ResourceManager主机与NodeManager的连接地址:8025

ResourceManager主机与ApplicationMaster的连接地址:8030

ResourceManager主机与客户端的连接地址:8050

hadoop和spark运行模式 spark和hadoop结合_HDFS_10

2.3.4 配置mapred-site.xml

sudo gedit /usr/local/hadoop/etc/hadoop/mapred-site.xml

修改设置如下图所示:

hadoop和spark运行模式 spark和hadoop结合_hadoop和spark运行模式_11

2.3.5 配置hdfs-site.xml

sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml

data1是datanode,修改配置如下.然后重新启动。

hadoop和spark运行模式 spark和hadoop结合_hadoop和spark运行模式_12

2.4 通过data1复制产生data2、data3、master

将data1关机,在virtualbox中复制。复制方式和复制生成data1的一样,只是虚拟机名称有所改变。复制后如下:

hadoop和spark运行模式 spark和hadoop结合_HDFS_13


由于使用的时候,4台服务器需要同时启动,因此,要根据自己的实体主机内存来调整虚拟机的内存设置。

这里使用的实体主机内存为16G,因此master内存设为了4G,其他的data各自设置为2G.

选择data1,点击”设置“-”系统“,调整内存大小为2G。

hadoop和spark运行模式 spark和hadoop结合_hadoop和spark运行模式_14


以相同的方式调整其他虚拟机的内存大小即可

2.5 配置data2服务器

启动data2虚拟机,进行配置

2.5.1 设置主机名

sudo gedit /etc/hostname 然后重新启动

hadoop和spark运行模式 spark和hadoop结合_HDFS_15

2.6 配置data3服务器

启动data3虚拟机,进行配置

2.6.1 设置主机名

sudo gedit /etc/hostname 然后重新启动

hadoop和spark运行模式 spark和hadoop结合_xml_16

2.7 配置master服务器

启动master虚拟机,进行配置
ext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4NjI4MzUw,size_16,color_FFFFFF,t_70)

2.7.1 设置主机名

sudo gedit /etc/hostname

hadoop和spark运行模式 spark和hadoop结合_xml_17

2.7.2 设置hdfs-site.xml

sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml

hadoop和spark运行模式 spark和hadoop结合_xml_18

2.7.3 设置masters文件

sudo gedit /usr/local/hadoop/etc/hadoop/masters

hadoop和spark运行模式 spark和hadoop结合_xml_19

2.7.4 设置slaves文件

sudo gedit /usr/local/hadoop/etc/hadoop/slaves

hadoop和spark运行模式 spark和hadoop结合_hadoop_20

3 配置host文件

3.1 查看各个节点的IP

以master为例,输入命令:ifconfig,获得其IP为:192.168.56.107

hadoop和spark运行模式 spark和hadoop结合_hadoop_21


以相同的方式获得data1、data2、data3的IP地址

3.2 设置hosts文件

在master中输入命令:sudo gedit /etc/hosts

根据之前查询到的IP地址,设置hosts文件如下图所示。重新启动。

hadoop和spark运行模式 spark和hadoop结合_HDFS_22


以相同的方式在data1、data2、data3中配置hosts文件

4 创建HDFS目录

首先启动4个虚拟机。然后通过master连接其他data节点,创建HDFS目录
进入master虚拟机

4.1 为data1创建HDFS目录

输入命令:ssh data1

连接data1,中途需要输入data1的密码

hadoop和spark运行模式 spark和hadoop结合_hadoop和spark运行模式_23


删除HDFS所有目录:sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs

创建DataNode存储目录:mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode

将目录的所有者更改为hduser:sudo chown -R hduser:hduser /usr/local/hadoop

中断连接,返回master:exit

hadoop和spark运行模式 spark和hadoop结合_HDFS_24


然后以相同的方式处理data2、data3

4.2 为data2创建HDFS目录

hadoop和spark运行模式 spark和hadoop结合_hadoop_25

4.3 为data3创建HDFS目录

hadoop和spark运行模式 spark和hadoop结合_xml_26

4.4 为master创建HDFS目录

删除之前的HDFS目录:sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs
创建NameNode目录:mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
将目录的所有者更改为hduser:sudo chown -R hduser:hduser /usr/local/hadoop
格式化NameNode HDFS目录:hadoop namenode -format

5 设置SSH无密码登录

启动Hadoop时候,NameNode需要与DataNode建立连接并管理这些节点,此时系统会要求用户输入密码。为了避免手动输入密码,我们需要将SSH设置为无密码登录。这里,利用SSH Key进行身份验证。
我们以master与data1的连接为例,进行说明。

5.1 安装SSH与rsync

sudo apt-get install ssh
sudo apt-get install rsync

5.2 修改ssh配置文件

sudo gedit /etc/ssh/sshd_config

配置如下

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

RSAAuthentication yes # 启用RSA认证

AuthorizedKeysFile %h/.ssh/authorized_keys # 公钥文件路径

hadoop和spark运行模式 spark和hadoop结合_HDFS_27


保存后,重启SSH服务

sudo service sshd restart

5.3 产生SSH Key

在master中输入:ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ‘’
生成了一对密钥,公钥:id_rsa.pub 私钥:id_rsa
将生成的公钥id_rsa.pub拷贝到data1
命令:ssh-copy-id -i .ssh/id_rsa.pub data1

5.4 测试

命令:ssh data1

可以直接登陆,无需密码了

hadoop和spark运行模式 spark和hadoop结合_hadoop_28

5.5 data2、data3

ssh-copy-id -i .ssh/id_rsa.pub data2
ssh-copy-id -i .ssh/id_rsa.pub data3

5.6 master本身

修改配置文件

sudo gedit /etc/ssh/sshd_config

设置:PermitRootLogin prohibit-password

hadoop和spark运行模式 spark和hadoop结合_xml_29


保存并重新启动SSH服务,命令:service sshd restart

为了master自己连接自己无需密码,也要把公钥添加给自己,命令:

ssh-copy-id -i .ssh/id_rsa.pub localhost

5.7 从其他节点免密登录

设置data1免密登录其他所有节点,可以参照上述方式对data1进行设置。data2、data3同理。

6 启动集群

首先启动全部虚拟机。

在master输入命令:start-all.sh

hadoop和spark运行模式 spark和hadoop结合_HDFS_30


输入jps命令,可以看到进程已开启。

NameNode、SecondaryNameNode、ResourceManager三个进程都已经启动

hadoop和spark运行模式 spark和hadoop结合_hadoop和spark运行模式_31


如果发现NameNode进程未开启,可以重新格式化一下NameNode,然后重启。

格式化命令:hadoop namenode -format

还可以通过ssh连接到data1,输入jps查看data1的进程

输入命令:ssh data1

hadoop和spark运行模式 spark和hadoop结合_hadoop和spark运行模式_32


输入命令:jps

可以看到NodeManager和DataNode进程都已启动

hadoop和spark运行模式 spark和hadoop结合_xml_33