Hadoop简单集群搭建,三台虚拟机运行wordcount

Hadoop简单分布式集群搭建,利用三台虚拟机

注:本文用到的hadoop版本是 hadoop-2.5.2,虚拟机是CentOS-6.10,虚拟机安装软件是VMware,java环境是 jdk1.8。三台虚拟机总共分配内存至少是4G,建议笔记本电脑达8G的网友参考。本文很长,请配合浏览器自带搜索功能食用。

一、安装虚拟机并映射主机名与IP

(1)VMware安装虚拟机,简单介绍一下

1、点击创建新的虚拟机,默认典型即可,下一步。
在这里插入图片描述
2、选择稍后安装操作系统,因为提前选择光盘映像文件会自动生成虚拟机的相关配置参数,专业安装强调自定义,所以先自己配置参数,再指定驱动光盘。下一步。
在这里插入图片描述
3、选择Linux、CentOS 6 64。根据自己的CentOS版本而定。下一步。
在这里插入图片描述
4、自定义虚拟机名称和安装路径。由于要安装三台虚拟机并运行,建议选择剩余储存量还有100G的磁盘作为安装路径。下一步。
在这里插入图片描述
我的安装路径。
在这里插入图片描述
5、设定虚拟机储存空间,建议保持默认20G,如果本地磁盘空间较小,可以改为15G或10G,对于简单集群搭建与运行影响不大。下一步。
在这里插入图片描述
6、自定义虚拟机内存大小,默认1G。对于3台虚拟机的简单集群搭建,至少需要其中一台拥有2G的内存。默认创建第一台为2G内存,第二台和第三台可以是1G内存。
如图,点击自定义硬件,修改内存为2G,点击关闭即可保存设置,然后下一步完成。
在这里插入图片描述
7、创建完成,检查存储空间和内存大小,并且指定光盘驱动,指定网络适配器,即可开启虚拟机。
在这里插入图片描述
点击光盘驱动标识、选择驱动所在路径,确定即可。
在这里插入图片描述
网络适配器选择NAT模式。
在这里插入图片描述

(2)开启虚拟机,安装Centos系统

1、保持虚拟机内光标所在第一行,回车进入安装程序。
在这里插入图片描述
2、提示是否检测驱动光盘,先按Tab键,光标切换到Skip后,回车跳过测试即可。
在这里插入图片描述
3、下一步进行安装。
在这里插入图片描述
4、选择中文进行安装。下一步。
在这里插入图片描述
5、键盘规则保持默认即可。下一步。
在这里插入图片描述
6、选择基本存储设备,点击忽略数据。下一步。
在这里插入图片描述
7、自定义Linux主机名,下一步选择时区,保持默认Asia/Shanghai(亚洲上海)即可。下一步。
在这里插入图片描述
8、指定root密码,建议设置简单一下,比如123456。
在这里插入图片描述
系统会提示密码过于简单,点击仍然使用即可
在这里插入图片描述
9、虚拟机硬盘分区,选择第一个即可,简单快速一些。下一步。
在这里插入图片描述
系统会提示将修改的配置写入磁盘,确认修改,下一步即可。
在这里插入图片描述
10、选择Linux主机安装模式,可以选择Desktop(桌面式)的,也可以选择Minimal(最小化终端式)的。建议初学者选择安装桌面式,因为这个模式配置虚拟机静态IP要直观一些。配置静态IP下文会讲到。
接下来是自定义Linux虚拟机要默认安装的软件。点击现在自定义,下一步。
在这里插入图片描述
11、勾选基本系统中的兼容程序库即可。其他的不用过多设置。下一步。
在这里插入图片描述
系统自动启动安装。
在这里插入图片描述
12、安装完毕后,点击重新引导。
在这里插入图片描述
在这里插入图片描述
创建一个普通用户。这里随便创建一个即可。本文搭建集群使用的是虚拟机的root账户。
在这里插入图片描述
设置同步时间,下一步。
在这里插入图片描述
启用Kdump。虚拟机内存为2G时可启用成功,1G会启用失败。但无论成功与否,都不影响个人使用。
在这里插入图片描述
13、安装并运行成功,点击其他,用root账户登录。
在这里插入图片描述
在这里插入图片描述
登录成功。
在这里插入图片描述

(3)配置静态IP并映射主机名

介绍了那么多冗余的安装流程,终于可以切入正题了。
1、配置虚拟机静态IP地址。
首先,查看虚拟网络的网关和子网掩码。可以看到,我的网关是192.168.119.2,子网掩码255.255.255.0
在这里插入图片描述
注:如果你安装的虚拟机是Minimal(最小化终端式)的,没有可视化界面,可以尝试以下命令设置静态IP

vim /etc/sysconfig/network-scripts/ifcfg-eth0 

#文件ONBOOT参数为yes,BOOTPROTO参数为static
ONBOOT=yes
BOOTPROTO=static
#文件需增加静态IP参数IPADDR、NETMASK、GATEWAY
IPADDR=192.168.56.102
NETMASK=255.255.255.0
GATEWAY=192.168.56.255

如果有可视化桌面。直接用鼠标右键网络标识,编辑链接。
在这里插入图片描述
手动指定静态IP地址,根据自己的网关和子网掩码设置。点击应用。
在这里插入图片描述
鼠标左键网络标识,点击默认链接,重连网络。
在这里插入图片描述
打开Linux主机终端,输入ifconfig命令查看配置好的IP,ping百度查看网络是否连通。
在这里插入图片描述
2、可以外部链接虚拟机了,本文用的是Xshell。
链接之前,可以打开电脑本机的cmd窗口,ping虚拟机IP地址。如果ping不通,运行ncpa.cpl,重启VMnet8服务(先禁用、再启动)。
在这里插入图片描述
3、Xshell连接虚拟机后,关闭Linux虚拟机防火墙。

service iptables stop

这种关闭方式不彻底,一旦虚拟机重启,防火墙又会打开。
为了之后使用方便,修改Linux配置文件,永久关闭防火墙。

vim /etc/sysconfig/selinux

参数SELINUX改为disabled,保存退出。
在这里插入图片描述
4、映射主机名,这一步也是为了今后使用方便。如果不想麻烦,也可以不映射,搭建集群时就用IP地址即可。
查看当前主机名

hostname

可以使用命令 “hostname 主机名” 来修改当前会话的主机名,但这是临时的,同样是虚拟机重启后失效。
所以需要修改配置文件,永久修改主机名。

vim /etc/sysconfig/network

参数HOSTNAME修改为自定义的主机名。
在这里插入图片描述

vim /etc/hosts

由于之后还要安装两台虚拟机,所以提前映射好了。
在这里插入图片描述
接下来重启虚拟机。

reboot

最后一步,修改笔记本电脑本机的配置文件,映射虚拟机主机名,即可在Xshell使用主机名而不是IP地址连接虚拟机。
Windows配置文件所在路径:C:\Windows\System32\drivers\etc
在这里插入图片描述
同样提前配置好三台主机名的映射信息。保存退出。
在这里插入图片描述

二、安装JDK并克隆虚拟机

(1)安装JDK

前提,删除Linux虚拟机自带的jdk1.6

rpm -qa | grep java
rpm -e --nodeps JDK程序包名称

其次,在虚拟机的 /opt目录下创建一些专业的目录。

mkdir -p softwares modules datas

1、用Xshell SFTP的连接方式上传 jdk的Linux安装包到 /opt/softwares目录下,并解压到 /opt/modules目录下。

tar -zxvf jdk-8u271-linux-x64.tar.gz -C ../modules

2、配置JAVA_HOME环境变量

vim /etc/profile

在文件末尾追加

#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.8.0_271
export PATH=$PATH:$JAVA_HOME/bin

3、重载配置文件

source /etc/profpile

4、测试安装成果

java -version

在这里插入图片描述

(2)克隆虚拟机

没必要采用上文的安装方式再去安装虚拟机,利用克隆的方式轻松得到第二台与第三台。
1、关闭第一台虚拟机,只有关闭状态才能克隆
2、鼠标右键,管理,克隆
在这里插入图片描述
3、默认选择虚拟机当前状态
在这里插入图片描述
4、选择创建完整克隆
在这里插入图片描述
5、自定义主机名,选择安装路径,点击完成,等待克隆完成即可。
在这里插入图片描述
6、克隆后,先把第二、第三台虚拟机的2G内存改为1G,不然8G的笔记本也够呛。然后再开启虚拟机,按照上文方法配置主机名与主机IP。本文配置的分别是:
hadoop-one 192.168.119.101
hadoop-two 192.168.119.102
hadoop-three 192.168.119.103

三、安装Hadoop并配置

(1)在第一台虚拟机安装hadoop

终于到hadoop了,不容易呀。
1、依然是用Xshell SFTP的连接方式上传 hadoop的安装包到 /opt/softwares目录下,并解压到 /opt/modules目录下。

tar -zxvf hadoop-2.5.2.tar.gz -C ../modules

2、可以删除一下hadoop解压后多余的文件

#删除不必要的文档
rm -rf /opt/modules/hadoop-2.5.2/share/doc
#删除window下的命令
rm -rf /opt/modules/hadoop-2.5.2/bin/*.cmd
rm -rf /opt/modules/hadoop-2.5.2/sbin/*.cmd
rm -rf /opt/modules/hadoop-2.5.2/etc/hadoop/*.cmd
(2)配置Hadoop的分布式文件系统(hdfs)

本文不直接上配置文件,教你利用hadoop官网自力更生。
1、打开hadoop官网:hadoop.apache.org
在这里插入图片描述
2、本文使用的hadoop是2.5.2版本的,所以选择官网的2.x版本对应的文档进行查看。
在这里插入图片描述
在这里插入图片描述
3、要想搞定集群配置,先从单节点配置着手,选择Single Node Setup
在这里插入图片描述
在这里插入图片描述
4、为了方便修改Hadoop配置文件,采用Notepad++连接虚拟机。
如果你没有Notepad++编译工具,直接在Xshell进入hadoop安装目录vim编辑修改对应配置文件也是可行的。
在这里插入图片描述
hadoop-2.5.2/etc/hadoop/目录下的诸多文件就是即将要修改配置的。
在这里插入图片描述
注:通常网上教程会强调,在正式配置Hadoop HDFS之前,需检查所有的 *-env.sh文件中JAVA_HOME路径是否正确,然后才修改核心的 *-site.xml文件。但是,其实主要看的就是 hadoop-env.sh文件,只要保证之前配置Java环境变量用的变量就是“JAVA_HOME”即可,不用修改为死路径,其他 env.sh文件会默认加载hadoop-env.sh文件上的JAVA_HOME对象,其他配置文件也不需要动。
在这里插入图片描述
5、回到hadoop官网,查看需要修改的配置文件 *-site.xml
在这里插入图片描述
可以看到,需要修改core-site.xml文件和hdfs-site.xml
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6、启动Hadoop HDFS的组件NameNode和DataNode,验证配置结果。
如果配置了Hadoop环境变量,可以在任何目录下执行启动HDFS组件命令。
建议新手先不着急配置Hadoop环境变量,毕竟Hadoop环境变量的配置跟Java一样,非常简单。

vim /etc/profile

#HADOOP_HOME
export HADOOP_HOME=/opt/modules/hadoop-2.5.2
export PATH=$PATH:$HADOOP_HOME/bin

新手进入Hadoop安装目录执行启动命令,可以同时熟悉Hadoop目录结构。
启动之前需要格式化,格式化目的是生成Hadoop日志文件,为HDFS分布式文件系统做功能准备。格式化只能执行一次,除非改变Hadoop HDFS数据在本地的存储路径。

#进入hadoop主目录
cd /opt/modules/hadoop-2.5.2

#格式化
bin/hdfs namenode -format

bin/hdfs直接回车可查看到格式化命令
在这里插入图片描述
格式化成功
在这里插入图片描述
启动NameNode和DataNode

#启动NameNode
sbin/hadoop-daemon.sh start namenode

#启动DataNode
sbin/hadoop-daemon.sh start datanode

在这里插入图片描述
验证HDFS启动结果,浏览器进入HDFS监控页面进行验证

#hadoop-one是之前映射的主机名,端口号默认50070
http://hadoop-one:50070/

目前是单结点启动,所以DataNode列表只有一个主机。
在这里插入图片描述
继续验证Hadoop分布式文件系统(HDFS)是否正常,任意上传一个文件到HDFS中,配合浏览器监控页面查看上传结果。
在这里插入图片描述
可以看到分布式文件系统初始为空
在这里插入图片描述
创建一个HDFS目录,上传文件到目录下。命令如下,同样先进入Hadoop主目录

#创建目录
bin/hdfs dfs -mkdir -p /test/file/

#上传文件,此处上传的是之前刚修改的配置文件core-site.xml
bin/hdfs dfs -put etc/hadoop/core-site.xml /test/file/

在这里插入图片描述
在浏览器查看结果
在这里插入图片描述
在这里插入图片描述
用命令查看上传到HDFS的文件。

bin/hdfs dfs -text /test/file/core-site.xml

可以看到,这的确是之前修改过的core-site.xml文件。
在这里插入图片描述

(3)配置Hadoop资源管理器(YARN)

1、继续查看官网,之前的页面往下翻,即可继续配置。
在这里插入图片描述
可以看到,需要配置mapred-site.xml和yarn-site.xml文件。
但是mapred-site.xml文件默认是不存在的,只存在mapred-site.xml.template文件,即模板文件。需要手动cp一份mapred-site.xml文件。
在这里插入图片描述
在这里插入图片描述
在Notepad++刷新连接,修改mapred-site.xml
在这里插入图片描述
修改yarn-site.xml
在这里插入图片描述
2、上述只是对YARN最基础的两处配置。实质上YARN是为MapReduce运算服务的。为了更好的查看MapReduce运算日志,需要添加一些日志配置。
此处也不会直接上配置代码,也是在官网上找配置,授人以渔。
在之前的官网页面左边,有关于 *-site.xml文件的参数文档 *-default.xml。通过查看这些文档可以独立完成YARN的配置。default.xml文档打开过程可能会有点慢,要有点耐心,刷新几次即可。
在这里插入图片描述
第一,在yarn-site.xml文件添加YRAN资源管理组件(ResourceManager)所在主机,因为YARN本来就是起调度资源作用的。另外需要添加日志集合配置,配置后可以在浏览器监控页面查看MapReduce运行后的日志集合。
打开yarn.default.xml文档,浏览器页面搜索yarn.resourcemanager.hostname参数、yarn.log-aggregation-enable参数和yarn.log-aggregation.retain-seconds参数
在这里插入图片描述
在这里插入图片描述
添加配置到yarn-site.xml中。
注:yarn.log-aggregation-enable表示是否集中日志,yarn.log-aggregation.retain-seconds表示日志在分布式文件系统上的生命周期
在这里插入图片描述
第二,在mapred-site.xml文件添加日志生成配置,主要是指定日志保存在那台主机上,一般就是保存在第一台虚拟机上。
打开mapred-default.xml文档,浏览器页面搜索mapreduce.jobhistory.address参数和mapreduce.jobhistory.webapp.address参数
在这里插入图片描述
3、上述配置完成后,启动YARN,检验配置结果。同样是在Hadoop主目录下操作。

#启动ResourceManager组件
sbin/yarn-daemon.sh start resourcemanager
#启动NodeManager组件
sbin/yarn-daemon.sh start nodemanager
#启动日志组件JobHistoryServer
sbin/mr-jobhistory-daemon.sh start historyserver
#查看当前启动的所有组件
jps

可以看到,当前已启动HDFS的NameNode、DataNode以及YARN的ResourceManager、NodeManager以及JobHistoryServer组件
在这里插入图片描述
在浏览器打开YARN监控页面,继续检验配置结果

http://192.168.119.129:8088/

在这里插入图片描述
因为只在一台机器上启动了YARN,所以只有一个节点。
在这里插入图片描述
4、上述配置验证成功后,配置HDFS 和 YARN的最后一步,关于YARN组件默认用户的修改。以及自定义HDFS文件系统数据本地存储路径的配置。
打开HDFS监控页面,发现根目录下增加了 tmp目录,但 tmp目录并不能点击查看。因为YARN默认属于用户并不是 root用户。
在这里插入图片描述
在这里插入图片描述
打开YARN监控页面,可以在右上角看到,当然启动的YARN默认属于 dr.who用户,这个用户是配置文件中默认使用的,实质上我们并未创建过。所以要修改配置,改变YARN默认用户。同时设置YARN启动后生成的 tmp目录为所有用户可见。
在这里插入图片描述
回到 Hadoop官网,继续查找配置参数。
第一,打开 hdfs-default.xml文档,搜索参数dfs.permissions.enabled
在这里插入图片描述
在这里插入图片描述
第二,打开 core-default.xml文档,搜索参数hadoop.http.staticuser.user 和 hadoop.tmp.dir
在这里插入图片描述
在这里插入图片描述
注:hadoop.http.staticuser.user代表YARN启动后所属用户。hadoop.tmp.dir是 HDFS数据本地存储路径,不修改也是可行的,如果只想体验配置的过程,不会深入查看HDFS数据本地存储路径,默认即可。
在Hadoop主目录下创建一个新目录,作为HDFS数据本地存储目录。
在这里插入图片描述
在这里插入图片描述

(4)Hadoop集群配置

上述所有的配置都是针对于第一台虚拟机的单节点配置,要想利用第二台、第三台虚拟机搭建集群配置,非常简单。
1、继续在Notepad++,配置一个特殊的配置文件 slaves
在这里插入图片描述
2、由于之前已经修改了 HDFS数据本地储存位置,所以 HDFS需要重新格式化。如果你没有修改hadoop.tmp.dir参数,请忽略这一步。
注意,重新格式化的前提是关闭之前启动的所有组件。

#关闭启动的所有组件,按后开先关的原则
sbin/mr-jobhistory-daemon.sh stop historyserver
sbin/yarn-daemon.sh stop nodemanager
sbin/yarn-daemon.sh stop resourcemanager
sbin/hadoop-daemon.sh stop datanode
sbin/hadoop-daemon.sh stop namenode

#在第一台虚拟机上,重新格式化
bin/hdfs namenode -format

在这里插入图片描述
可以看到,再次格式化成功
在这里插入图片描述
3、正式启动集群之前,将第一台虚拟机上的 Hadoop-2.5.2整个文件分发给第二台、第三台虚拟机。
由于之前每台虚拟机的 /etc/hosts都配置了3台虚拟机的映射关系,所以三台虚拟机之前可以直接通信,实现文件分发。
在这里插入图片描述返回 /opt/modules目录下,执行分发命令
注:分发命令执行后需要输入yes及密码。

#分发到hadoop-two
scp -r hadoop-2.5.2/ @hadoop-two:/opt/modules/

#分发到hadoop-three
scp -r hadoop-2.5.2/ @hadoop-three:/opt/modules/

4、在hadoop-two 和 hadoop-three启动 DataNode 和 NodeManager,表示它们是 hadoop-one的 HDFS数据节点以及YARN的从节点。从而实现3台虚拟机的Hadoop集群。

#启动DataNode
sbin/hadoop-daemon.sh start datanode

#启动NodeManager
sbin/yarn-daemon.sh start nodemanager

在这里插入图片描述
在这里插入图片描述
5、验证启动结果
浏览器打开HDFS监控页面和YARN监控页面

#HDFS
http://hadoop-one:50070/
#YARN
http://hadoop-one:8088/

在这里插入图片描述
在这里插入图片描述
而且注意到YARN启动后所属用户是root,HDFS根目录下生成的tmp目录可点击查看。说明之前的配置生效
在这里插入图片描述
在这里插入图片描述

(5)设置集群时间同步

注:时间同步在集群中是很重要的配置。如果3台虚拟机的时间不同步,集群将无法正常运行。虽然之前安装虚拟机设置了日期与网络同步,但还会存在意想不到的问题。手动指定日期同步策略,一劳永逸地解决此问题。
1、在 hadoop-one开启时间服务

#查看时间服务器ntp的状态
service ntpd status

#如果没有运行,则启动服务
service ntpd start

#设置开机自启动时间服务
chkconfig ntpd on

2、修改系统配置文件 /etc/ntp.conf
(1)打开一个注释,改为三台虚拟机的公共网段。表示授权192.168.119.0网段上的所有机器都可以通过hadoop-one主机查询与同步时间。
在这里插入图片描述
(2)加上一段注释,server0,server1,server2,server3都注释掉。表示集群在局域网中,不使用其他的网络时间。
在这里插入图片描述
(3)增加一段配置。表示当hadoop-one主机丢失网络连接后,依然可以作为时间服务器为集群中的其他节点提供时间同步。

server 127.127.1.0
fudge 127.127.1.0 stratum 10

3、修改系统配置文件 /etc/sysconfig/ntpd
增加一个配置。表示让硬件时间与系统时间一起同步。

SYNC_HWCLOCK=yes

在这里插入图片描述
4、hadoop-one 重启时间服务

service ntpd restart

5、在hadoop-two、hadoop-three 主机上写个定时任务,每隔一段时间,就同步主服务器hadoop-one 的时间。

#编辑定时任务
crontab -e

#设置每10分钟同步一下时间,wq保存退出即可
*/10 * * * * /usr/sbin/ntpdate hadoop102

6、不想等10分钟,可以马上手动设置时间同步。

#在hadoop-two、hadoop-three手动同步时间
/usr/sbin/ntpdate hadoop-one
(6)运行以下 Hadoop经典的单词统计案例,检测 Hadoop集群是否运行正常。

首先得准备一个单词文件,单词之间以空格或Tab键或回车分开即可。
在这里插入图片描述
将单词文件上传到 /opt/datas 目录下,或者直接vim创建一个简单的单词文件也可以。

#创建wordcount文件输入目录input
bin/hdfs dfs -mkdir -p /test/wordcount/input

#上传wordcount文件
bin/hdfs dfs -put ../../datas/wordcount.txt /test/wordcount/input

在这里插入图片描述
运用Hadoop自带的jar包运算单词统计案例。
注意:运行单词统计案例之前必须保证三台主机的防火墙均关闭。

#关闭防火墙
service iptables stop
#单词统计运行命令
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar wordcount /test/wordcount/input /test/wordcount/output

注:如果单词统计运行失败,需在浏览器检查HDFS是否已经生成了 /test/wordcount/output目录,若已生成,需先删除该目录,再重新尝试执行单词统计运行命令。

bin/hdfs dfs -rm -r /test/wordcount/output

在这里插入图片描述
再次尝试运行单词统计案例,整个过程无任何报错,说明运行成功。
在这里插入图片描述
可以看一看运行后的结果
在这里插入图片描述

bin/hdfs dfs -text /test/wordcount/output/part-*

大功告成,单词统计成功。
在这里插入图片描述
在YARN监控页面可以看到所有的运行记录。
在这里插入图片描述
点击History,Logs可以看到运行日志
在这里插入图片描述
在这里插入图片描述
这说明了之前配置的日志集中的确在生效,可以在浏览器上进行查看。
在这里插入图片描述
本文结束!!!

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值