实验一 Hadoop 集群的安装

实验目的
1、熟练 Linux 的基本操作
2、理解 Hadoop 中有 master,slave,namenode,datanode 等的概念
3、掌握 Hadoop 的配置方法
4、掌握 Hadoop 的测试方法
实验环境
1、64 位电脑,8G 以上内存
2、win10 系统 课时: 6 课时
实验步骤:
1、节点分工

机器名称IP地址软件进程
hadoop1(主机master)192.168.202.129JDKdatanode、namenode
hadoop2(克隆机slaves)192.168.202.130JDKdatanode
hadoop3(克隆机slaves)192.168.202.131JDKdatanode

2、 软件准备。
(1)虚拟机 VMWare,版本是 VMware® Workstation 15 Pro 以上,太低了不支持在 win10 上运行。
(2)Linux 系统 CentOS7
(3)Jdk,参考:jdk-8u251-linux-x64.tar.gz
(4)Hadoop,参考:hadoop-2.7.1.tar.gz 与hbase-1.1.5-bin.tar.gz 兼容
(5)finalshell
3、新建虚拟机
虚拟机硬件设置按NAT方式,设备状态为启动时连接,用于共享主机的IP地址,如下图所示。
在这里插入图片描述

4、安装 CentOS 按默认方式,不安装图形界面。
5、进行网络设置
设置静态 IP,与主机的网络在一个网段,如果主机为 192.168.202.19,虚拟机的 IP 地址可以设置 为:192.168.202.129
(1)输入 ip add 查看本机网卡名称。
(2)进入/etc/sysconfig/network-scripts/目录,编辑 ifcfg-ens33,如下图所示。将 BOOTPROTO 改为静态。将 ONBOOT 改变为 yes。增加 IPADDR 等的设置,保存退出。(注:有些可能是ens32,则需要编辑ifcfg-ens32,本人的虚拟机就需要编辑ifcfg-ens32)

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

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=7a312588-d504-4e2c-a6ab-7f7e5bab45a3
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.202.129
GATEWAY=192.168.202.2
NETMASK=255.255.255.0
DNS1=192.168.202.2

(3)重启网卡服务:service network restart ,用 ip add 命令检查设置是否生效。
(4)在 win10 中用 ping 命令检查与虚拟机是否连通。(Ctrl+c终止ping命令)
在这里插入图片描述
6、 在 win10 中安装 finalshell
7、安装 jdk.
(1)首先检查 centOS 中是否有 jdk。命令:java -version
(2)通过finalshell上传 jdk 到home/lib目录,执行以下命令进行解压。

tar -zxvf jdk-8u251-linux-x64.tar.gz

(3)删除压缩包,节省空间:

rm jdk-8u251-linux-x64.tar.gz

(4)编辑/etc/profile (在配置文件头部加入jdk的配置环境变量)

export JAVA_HOME=/home/lib/jdk1.8.0_251
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
export PATH= P A T H : PATH: PATH:JAVA_HOME/jre/bin

(4)使配置生效,输入命令

source /etc/profile

(5)输入命令,java -version,完成。
在这里插入图片描述8、安装 Hadoop2.7.1
(1)通过 finalshell 将 hadoop-2.9.2.tar,放到/home/lib 目录下
(2)解压,输入命令,tar -xzvf hadoop-2.7.1.tar.gz
(3)删除压缩包,节省空间
(4)配置 hadoop
①编辑/etc/profile (在配置文件头部加入hadoop的配置环境变量)

export JAVA_HOME=/home/lib/jdk1.8.0_251
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/jre/bin
export HADOOP_HOME=/home/lib/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

②配置home/lib/hadoop-2.7.1/etc/hadoop 目录下的 core-site.xml

<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://192.168.202.129:9000</value>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>file:/home/hadoop/tmp</value>
	</property>
	<property>
		<name>io.file.buffer.size</name>
		<value>131702</value>
	</property>
</configuration>

③配置/home/lib/hadoop-2.7.1/etc/hadoop 目录下的 hdfs-site.xml

<configuration>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/home//lib/hadoop-2.7.1/dfs/name</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/home/lib/hadoop-2.7.1/dfs/data</value>
	</property>
	<property>
		<name>dfs.replication</name>
		<value>2</value>
	</property>
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>192.168.202.129:9001</value>
	</property>
	<property>
		<name>dfs.webhdfs.enabled</name>
		<value>true</value>
	</property>
</configuration>

④ 配置/home/lib/hadoop-2.7.1/etc/hadoop 目录下的 mapred-site.xml

<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>192.168.202.129:10020</value>
	</property>
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>192.168.202.129:19888</value>
	</property>
</configuration>

⑤ 配置/home/lib/hadoop-2.7.1/etc/hadoop 目录下的 yarn-site.xml

<configuration>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<property>
		<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
		<value>org.apache.hadoop.mapred.ShuffleHandler</value>
	</property>
	<property>
		<name>yarn.resourcemanager.address</name>
		<value>192.168.202.129:8032</value>
	</property>
	<property>
		<name>yarn.resourcemanager.scheduler.address</name>
		<value>192.168.202.129:8030</value>
	</property>
	<property>
		<name>yarn.resourcemanager.resource-tracker.address</name>
		<value>192.168.202.129:8031</value>
	</property>
	<property>
		<name>yarn.resourcemanager.admin.address</name>
		<value>192.168.202.129:8033</value>
	</property>
	<property>
		<name>yarn.resourcemanager.webapp.address</name>
		<value>192.168.202.129:8088</value>
	</property>
	<property>
		<name>yarn.nodemanager.resource.memory-mb</name>
		<value>567</value>
	</property>
</configuration>

⑥配置/home/lib/hadoop-2.7.1/etc/hadoop 目录下 hadoop-env.sh、yarn-env.sh 的 JAVA_HOME,不设置的话,启动不了

export JAVA_HOME=/home/lib/jdk1.8.0_251

⑦配置/home/lib/hadoop-2.7.1/etc/hadoop 目录下的 slaves,删除默认的 localhost,增加 3 个从节点,这 3 个节点都是 datanode,如果要将删除某个 datanode 节点,如:192.168.202.129,删除对应的记录就可以。

vim slaves

hadoop1
hadoop2
hadoop3

9、集群环境搭建
(1)关闭虚拟机,将虚拟机改为 hadoop1,克隆出 hadoop2、hadoop3,现在我已克隆好虚拟机,如下图。在这里插入图片描述
(2)进入 hadoop1 目录 /etc,通过 vi hostname 修改主机名称改为 hostname 为 hadoop1
在这里插入图片描述
(3)进入 hadoop1 目录/etc,通过 vi hosts 打开 hosts 文件,添加 IP 地址和主机的对应关系,方便以后使用主机名进行访问。
在这里插入图片描述
(4)进入 hadoop2 目录 /etc/sysconfig/network-scripts/ifcfg-eth33 修改从机 IP,一般最后一位自增 1,IP 为192.168.202.130,
(5)进入 hadoop2目录 /etc/hostname,修改从机 hostname 为 hadoop2
(6)进入 hadoop2目录,通过 vim/etc/hosts 打开 hosts 文件,添加 IP 地址和主机的对应关系,方便以后使用主机名进行访问。与 hadoop1下的一样。
(7)进入 hadoop3目录进设置,操作过程与 hadoop2 的设置一样。
(8)将 hadoop1,hadoop2,hadoop3 进行重启,使设置生效。
10.SSH 免密码登录
因为 Hadoop 需要通过 SSH 登录到各个节点进行操作,我用的是 root 用户,每台服务器都生成公钥,再合并到 authorized_keys
(1)CentOS 默认没有启动 ssh 无密登录,去掉/etc/ssh/sshd_config 其中 2 行的注释,每台服务器都要设置,

#RSAAuthentication yes
#PubkeyAuthentication yes

(2)输入命令,ssh-keygen -t rsa,生成 key,都不输入密码,一直回车,/root 就会生成.ssh 文件夹,每台服务器都要设置,合并公钥到 authorized_keys 文件,在 Master 服务器,进入/root/.ssh 目录,通过 SSH 命令合并,(在hadoop1、hadoop2、hadoop3均做相同的操作)

ssh-keygen -t rsa
cd /root/.ssh
cat id_rsa.pub >> authorized_keys
chmod 0600 authorized_keys
cd 0700 .ssh
ssh-copy-id root@主机名
ssh 主机名(即在虚拟机上互相访问其他虚拟机,执行ssh hadoop1或ssh Hadoop或ssh hadoop3,如果不需要输入密码,则ssh免密配置成功)

11.启动 hadoop
在 Master 服务器启动 hadoop,从节点会自动启动,进入/home/lib/hadoop-2.7.1目录
(1)初始化,输入命令

hdfs namenode -format

(2)启动hadoop: start-all.sh(同时启动所有节点),也可以分开启动:start-dfs.sh、sbin/start-yarn.sh,
(3)输入jps命令,可以查看每台虚拟机的启动情况

虚拟机进程
hadoop1NameNode、Jps、DataNode、ResourceManager、SecondaryNameNode、NodeManager
hadoop2DataNode、Jps、NodeManager
hadoop3DataNode、Jps、NodeManager

如果进程少于上图所示,请查看启动该进程对应的日志文件,查找该进程没有启动的原因。NodeManage进程设置的内存大小不可过大,否则可能会导致资源不足而关闭。设置 NodeManage 进程内存资源的参数如下,单位是 Mb

	<property>
		<name>yarn.nodemanager.resource.memory-mb</name>
		<value>567</value>
	</property>

12.Web 访问
(1)要先关闭防火墙
设置开机禁用防火墙:

systemctl disable firewalld.service

关闭防火墙:

systemctl stop firewalld

关闭selinux:

vim /etc/selinux/config
SELINUX=disabled

检查防火墙状态(若为active,防火墙未关闭;若为inactive,防火墙关闭成功):

systemctl status firewalld

(2)浏览器打开 http://192.168.202.129:50070/
在这里插入图片描述

(3)浏览器打开 http://192.168.1.50:8088/(如果hadoop版本较高,请输入http://192.168.1.50:9870进行测试)
在这里插入图片描述
本实验相关软件分享:https://pan.baidu.com/s/1vrREumWwNVaP2kipKBPO2A 提取码: 8z4i

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值