虚拟环境下快速部署Hadoop 集群的探讨
2020-11-26孔瑞平天津工业职业学院
孔瑞平 天津工业职业学院
一、 Hadoop 介绍
1.Hadoop 框架
Hadoop 是Apache 旗下的一个分布式计算的开源平台,它详细的为用户提供了系统底层的细节,是一种分布式的基础架构。Hadoop 框架是采用JAVA 语言来编写的,因此它具有较好的跨平台性,且能够很好的适用于各种廉价的集群中。
分布式文件系统HDFS 和分布式计算系统MR 是Hadoop 框架中两个较为重要的组件,重要应用在于这两个重要组件的分布式处理功能。由于Hadoop 框架具有的明显优点,各个领域中已逐步在采用Hadoop 来处理大量的企业历史数据等,其中以互联网行业为主。目前,国内大量应用Hadoop框架来完成数据处理的主要有淘宝、中国移动、京东、华为和百度等大型网站。
2.Hadoop 核心组件
(1)MapReduce(分布式计算系统):MR 主要负责作业的批处理和分布式的计算,完成了海量数据的大量计算和处理工作。
(2)HDFS(分布式存储系统):采用HDFS 实现了超大数据集的存储,可采用廉价的成千上百台普通服务器同时存储大量数据。实际上,海量数据是同时存储在很多台分布式的主机中,实现了在集群主机之间很好的通过网络共享文件系统,但在用户看来仍像是存储在同一台主机中。
(3)YARN:属于Hadoop 框架的资源调度系统,它主要负责调度集群中各主机的CPU、内存等资源。
(4)HBase:是一种分布式的超大型数据库,用户在处理数据时主要依赖HBase 来实现随机读写操作,而HDFS 只是实现了顺序读写,不是真正意义上的存储。
(5)Spark:Spark 的逻辑和MR 类似,不同点在于MR 是基于硬盘方面的计算,而Spark 框架是内存方面的计算,所以从一定程度上来说,Spark 框架的性能占有优势。
(6)Hive:它主要实现了数据仓库的作用。数据仓库一般主要用于存储海量的历史数据,用于企业决策、统计分析等情况下,从多种维度出发使用、分析、统计数据,最终满足用户的数据处理要求。Hive 的功能主要是基于MR,把SQL 语句转换为相应的MR 作业。
(7)Flume:主要用做日志收集,负责收集分析流式数据时产生的众多实时流数据。
二、虚拟环境准备
1.安装VMware 虚拟机
本部署采用的是VMware 14 版本的虚拟机,它要求本地主机的CPU 必须要支持虚拟化功能。按照步骤,设置虚拟机名称、指定磁盘容量(如果机器许可, 可以设置为略大的空间,如30G)。为了性能考虑,将虚拟机磁盘存储为单个文件,并进行光驱的镜像索引。结合本机的性能设置,选择合适的处理器数量和每个处理器的内核数量,完成一系列的配置后成功安装虚拟机软件。
2.安装centos7 系统
本文以centos7 版本进行研究,在安装centos7 之前,需要保证BIOS 中虚拟化功能已正确打开。若虚拟机正确安装后,但打开时没有反应,一般是 Windows 防火墙的问题。首先要把防火墙关闭,如果表现正常了,再将VMware 加入到防火墙的例外中。
安装CentOS 7 按需设置虚拟机的主机名、启动后设置等,安装成功后,能够正常打开图形化的Linux 桌面。然后,选择合适的网络工作模式,进行虚拟机网络配置:当你的电脑所处网络不是DHCP方式,而是为每台虚拟机固定IP 地址,采用NAT 模式。满足以上条件,但仍上不去外网,改用桥接方式,桥接方式需要处在DHCP 环境下,否则不设置静态IP 地址,则不能连通网络。配置完成后打开终端,测试网络的连通性,达到虚拟机能和本地主机、外网之间都能够正常通信。
按照以上方法,需要准备好三台虚拟主机,主机名分别为:master、slave1 和slave2,并确保三台虚拟主机之间的网络是连通的。
三、Hadoop 环境准备
在部署Hadoop 之前,必须要明确其安装方式,按照确定的运行模式进行相应的环境变量等配置,完成Hadoop 平台的部署。
1.选择运行模式
在单机模式下,程序都运行同一个主机中。开发阶段大多会选用单机模式来调试和运行程序;在集群模式中,将使用虚拟环境安装多个虚拟主机,来模拟一个集群中的多台主机。
2.运行 Hadoop 的用户
一般情况下,需要指定系统的用户来操作Hadoop 集群,本集群中三台虚拟主机都默认使用stu 用户 。
3.相关配置
Hadoop 框架主要使用XML 文件,来配置Hadoop 生态系统中的众多组件,其中部分关键的XML 配置文件如下。
(1)core-site.xml:属于hadoop 的核心配置文件 。
(2)hdfs-site.xml:是HDFS 组件的配置文件,主要用于完成HDFS 的相关配置。
(3)mapred-site.xml:是MR 组件的配置文件。
(4)yarn-site.xml:是YARN 组件的配置文件, 主要用于完成YARN 的相关配置。
以上XML 配置文件,全部保存在Hadoop 框架安装路径中的etc/hadoop 子目录下。
四、Hadoop 平台的安装与部署
(一)单机配置与部署
在master 虚拟主机中,默认都是使用stu 用户来操作。
1.通过Xshell 软件,把Hadoop 的安装包上传到master 主机下的相应目录中。
2.通过tar 命令解压至安装的目录中:tar zvxf 安装文件的名称。
3.配置JDK:基于JAVA 语言的Hadoop 框架,需要JDK 运行环境。Hadoop 局限于某个用户,如果这个用户在登录后未进到shell的情况下需要环境生效,就需要同时配置.bash_ profile 文件。经修改后,需要通过source 命令使得设置的环境变量生效。
4.配置虚拟机的环境变量
(1)配置 Hadoop 的 环境变量:在hadoop-env.sh 文件的JAVA_HOME 变量中,中加入JDK 的安装路径。命令为:export JAVA_HOME=/usr/java/jdk1.8.0_211。
(2)配置 Linux 的环境变量:编辑./bash_profile 文件,增加JAVA_HOME 和HADOOP_HOME 目录,在PATH 路径中添加JAVA_HOME/bin, HADOOP_HOME/bin, HADOOP_HOME/sbin。最后,使用source 命令让环境变量生效。
5.运行和验证:以stu 用户来验证环境变量是否设置成功,使用命令hadoop version 来验证。
(二)集群模式配置和部署
按照(一)中方法部署好master 虚拟主机后,打开master 主机,将已配置成功的hadoop 配置文件复制到集群中其他虚拟主机slave1 和slave2 中。复制完成后,所有虚拟主机的环境配置均完成,各虚拟主机相互之间的网络也是互通的。最后,通过jps 命令查看集群中三台虚拟主机的守护进程,来验证Hadoop 部署是否成功。
五、实现 ssh 免密登录
为了实现集群中主机之间快速、方便的实现远程访问、批量复制文件等操作,本集群中的三台虚拟主机必须正确实现ssh 免密登录的功能。
免密登录的实现思路如下。
1.为master 虚拟主机生成公钥、私钥文件:使用ssh-keygen-t rsa 命令。命令执行后,回车三次,分别设置秘钥的存储路径和密码等。
2.将master 主机的公钥内容,复制给slave1 主机,并追加到其authorized_keys 文件下,从而实现了master 主机在远程登录slave1 主机时不再需要输入账号和口令。复制命令为:scp ~/.ssh/authorized_keys stu@slave1:~/。
3.接着为slave1 主机生成公钥与私钥, 同样把该公钥的文件复制给slave2 主机,并追加到其authorized_keys 文件下,从而实现了master 和slave1 主机在远程登录slave2 主机时不再需要输入账号和口令。复制命令为:scp ~/.ssh/authorized_keys stu@slave2:~/。
4.复 制slave2 主 机 的authorized_keys 文 件,给master 与slave1 主机,并存于.ssh 目录目录下,成功覆盖两台接收主机的已有的authorized_keys 文件内容。命令如下:
scp authorized_keys stu@slave1:~/.ssh/
scp authorized_keys stu@master:~/.ssh/
5.验证免密是否实现之前,需要先检查master、slave1 和slave2 三台主机中秘钥文件的权限。在master、slave1 和slave2 每台虚拟主机中的.ssh/目录下, 使用ls -l, authorized_keys 查看,确保各自的秘钥文件的权限都必须是600,否则使用chmod 进行修改。
6.经以上设置后,最后分别在三台虚拟主机中查看authorized_keys 文件中的内容, 此时该秘钥中包含了三台主机的公钥信息,在master、slave1、slave2 分别进行查看: cat /home/stu/.ssh/authorized_keys。
7.验证ssh 免密登录:在三台虚拟主机的终端中, 分别执行以下命令: ssh master、ssh slave1、ssh slave2,查看是否自动的远程登录到了其他主机中。
经验证后,三台主机之间进行远程登录时,都不再需要输入对方的密码,即可直接操作对方,最终实现了集群的ssh 免密登录。
若以上设置没有问题,仍不能远程访问彼此,需要检查各虚拟机的防火墙是否处于关闭状态,关闭防火墙操作, CentOS 7 的防火墙以系统服务的形式存在,建议在root 用户下执行关闭操作,以上集群中的三台虚拟主机都需要执行该操作。
六、小结
本文探讨了虚拟环境下Hadoop 集群的快速部署方法,从单机模式向集群模式进行递进式的探讨,实现了Hadoop 集群的快速部署。