购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 Hadoop伪分布式环境准备

Hadoop伪分布式,即在单机模式下运行Hadoop。我们需要运行5个守护进程,说明如下。

负责HDFS存储的进程三个(见图2-1):

· NameNode进程:作为主节点,主要负责分配数据存储到位置。

· SecondaryNameNode进程:作为NameNode日志备份和恢复进程,避免数据丢失。

· DataNode进程:作为数据的存储节点,接收客户端的数据读写请求。

图2-1 HDFS存储进程

负责MapReduce计算的进程以下两个:

· ResourceManager进程:负责分配计算任务由哪一台主机执行。

· NodeManager进程:负责执行计算任务。

在真实集群环境下,部署的一般规则是:

· 由于NodeManager需要读取DataNode上的数据,用于执行计算,所以一般DataNode与NodeManager并存。

· 由于NameNode在运行时,需要在内存中大量缓存文件块的数据。因此,NameNode节点应该部署到内存比较大的主机上。

· 在真实的集群环境下,一般部署多个NameNode节点,相互之间互为备份和切换关系,且不再部署SecondaryNameNode进程。

伪分布式可以让读者快速学习HDFS的命令及开发MapReduce应用。对于学习Hadoop有很大的帮助。在安装之前,笔者有以下建议:

· 配置静态IP地址。虽然是单机模式,但也建议配置静态的IP地址,这样做有助于以后配置集群环境时固定IP,养成良好的习惯。

· 修改主机名称为一个便于记忆的名称,如server201,修改规则一般为本机的IP地址最后一段作为服务器的后缀,如192.168.56.201主机可以修改本主机的名称为server201。

· 由于启动Hadoop的各个进程使用的是SSH。所以,必须配置本机免密码登录。本章后面的步骤会讲到如何配置SSH免密码登录。配置SSH免密码登录的规则是在启动的集群的主机上,向其他主机配置SSH免密登录,以便于操作机可以在不登录其他主机的情况下,启动所需要的进程。

· 关闭防火墙。如果CentOS7没有安装防火墙,可以不用关闭;如果已经安装,请检查防火墙的状态,如果是运行状态请关闭防火墙并禁用防火墙。注意,在生产环境下,不要直接禁用防火墙,可以指定Hadoop的某些端口开放。

· 使用非root用户。前面章节我们创建了一个名为hadoop用户,此用户同时属于wheel组(拥有此组的用户可以使用sudo命令,执行一些root用户的操作)。我们就以此用户作为执行命令的用户。

步骤01 配置静态IP地址。

前面的章节已经讲解静态IP的设置,此处再做详细讲解。使用SSH登录CentOS7。然后使用ifconfig查看IP地址,如果没有ifconfig命令,可以使用sudo yum -y install net-tools安装ifconfig命令。其实在CentOS7中,已经使用ip addr命令显示当前主机的IP地址。所以,也可以不安装net-tools。

上例显示为两块网卡,其中enp0s3的IP地址为10.0.2.15,此网卡为NAT网络,用于上网。enp0s8的IP地址为192.168.56.201,此网卡为Host Only网络,用于与宿主机进行通信。我们要修改的就是enp0s8这个网卡,将它的IP地址设置为固定IP。

IP设置保存在文件中,这个文件为/etc/sysconfig/network-scripts/ifcfg-enp0s8。使用cd命令切换到这个目录下。使用ls命令显示这个目录下的所有文件,读者可能会发现只有ifcfg-enp0s3这个文件,现在使用cp命令将ifcfg-enp0s3复制一份并命名为ifcfg-enp0s8。由于etc目录不属于hadoop用户,所以操作时需要添加sudo前缀。

使用vim命令修改为静态IP地址:

将原来的dhcp修改成static,即静态的地址,并设置具体的IP地址。其中,每一个网卡都应该具有唯一的UUID,所以建议修改其上的任意一个值,以便与之前enp0s3的UUID不同。部分内容修改如下:

现在重新连接网络:

重新连接网络后,再次查看,IP地址已经发生变化:

步骤02 修改主机名称。

使用hostname命令检查当前主机的名称:

使用hostnamectl命令修改主机名称:

步骤03 配置hosts文件。

hosts文件是本地DNS解析文件。配置此文件可以根据主机名找到对应的IP地址。

使用vi命令打开这个文件,并在文件中追加以下配置:

步骤04 关闭防火墙。

CentOS7默认情况下,没有安装防火墙。可以通过sudo firewall-cmd --state命令检查防火墙的状态,如果显示command not found,一般为没有安装防火墙,此步可以忽略。使用以下命令检查防火墙的状态:

running表示防火墙正在运行。以下命令用于停止和禁用防火墙:

步骤05 配置免密码登录。

配置免密码登录的主要目的就是在使用hadoop脚本启动Hadoop的守护进程时,不需要再提示用户输入密码。SSH免密码登录的主要实现机制就是在本地生成一个公钥,然后将公钥配置到需要被免密登录的主机上,登录时自己持有私钥与公钥进行匹配,如果匹配成功,则登录主机,否则登录失败。

可以使用ssh-keygen命令生成公钥和私钥文件,并将公钥文件复制到被SSH登录的主机上。使用ssh-keygen命令输入以后直接按两次回车键即可生成公钥和私钥文件:

如上述提示信息得知,生成的公钥和私钥文件将被放到~/.ssh/目录下。其中id_rsa文件为私钥文件,rd_rsa.pub为公钥文件。现在我们再使用ssh-copy-id命令将公钥文件发送到目标主机。由于是登录本机,所以直接输入本机即可:

输入密码后按回车键,将会看到提示成功信息:

此命令执行以后,会在~/.ssh目录下多出一个用于认证的文件,其中保存了某个主机可以登录的公钥信息,这个文件为~/.ssh/authorized_keys。如果读者感兴趣,可以使用cat命令查看这个文件的具体内容。此文件中的内容就是id_rsa.pub文件中的内容。

现在再使用ssh server201命令登录本机,会发现不需要输入密码即可显示登录成功。 ilvU1XtHmiCnrpHG8zahIvVUh464pOhWKG0ujMIXuMBhEhD/m0WEDanlCRzID1Hm

点击中间区域
呼出菜单
上一章
目录
下一章
×