Hadoop3.1.0伪分布式集群环境安装
【实验名称】
Hadoop3.1.0伪分布式集群环境安装
【实验目的】
(1)熟悉掌握Hadoop项目体系结构及其组成原理,通过对各个组件的学习掌握各个组件的运行机制和原理。
(2)能够搭建大数据hadoop底层平台,熟练掌握Hadoop平台的安装和hadoop常用命令使用方法;
【实验要求】
要求实验结束时,已构建出以下HDFS集群:
- hadoop1上部署主服务NameNode;
- hadoop2、hadoop3上部署从服务DataNode;
【实现功能】
搭建hadoop3.1.0版本大数据平台
【实验环境】
实验设备包括3台Linux虚拟机、实验所需安装包
【实验步骤】
1.基础环境准备
1.1 集群规划
本节实验搭建hadoop分布式集群环境,通过三台hadoop主机建立整个hadoop3.1.0集群,其中hadoop1作为主节点(NameNode),hadoop2和hadoop3作为数据节点(DataNode)。平台提供已安装好系统的Linux虚拟机,底层系统为centos6.8 X64。
序号 | 主机 | 角色 | Ip | 主机名 | 账户 | 密码 |
1 | hadoop1 | Master
NameNode JobTracker |
172.16.16.108 | hadoop1 | root | 123456 |
2 | hadoop2 | Slave
DataNode SecondaryNameNode TaskTracker |
172.16.16.109 | hadoop2 | root | 123456 |
3 | hadoop3 | Slave
DataNode TaskTracker |
172.16.16.110 | hadoop3 | root | 123456 |
1.2 系统准备
本实验中,Linux系统已经准备好,包括安装Linux系统以及安装vmware Tools等操作。
软件安装包存放于/opt/hadoop-package目录下
1.3 网络配置
为每个Hadoop主机配置相应的IP地址,每台的操作方法相同。IP地址根据实验环境进行配置,如果实验环境使用的是动态IP地址则可以跳过网络配置部分,进入下一步操作。如果有疑问请联系授课老师
1.3.1修改网络配置文件
1、首先,确保在root用户下进行操作。通过vi命令修改网络配置文件
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
2、然后按i键进入编辑模式,我们需要将其中的BOOTPROTO=dhcp改为BOOTPROTO=static意思是设置为静态IP,将ONBOOT=no改为ONBOOT=yes意思是将网卡设置 为开机启用,同时在文字下方添加如下命令:
IPADDR=172.16.16.108 #静态IP
GATEWAY=172.16.16.254 #默认网关
NETMASK=255.255.255.0 #子网掩码
DNS1=114.114.114.114 #DNS 配置
3、修改完成以后按Esc键退出编辑模式,按 Shift + : 输入wq进行保存并退出!
修改好的配置截图:
1.3.2重启网络服务
通过service network restart重启网络服务,使修改的配置生效
[root@localhost ~]# service network restart
1.3.3查看配置是否修改成功
通过ifconfig命令来查看当前的IP地址信息
通过上面的操作以后分别将三台hadoop主机的配置改为172.16.16.108、172.16.16.109、172.16.16.110
三台hadoop主机配置好:
hadoop1 IP地址:172.16.16.108
hadoop2 IP地址:172.16.16.109
hadoop3 IP地址:172.16.16.110
1.4 关闭防火墙
三台hadoop主机都需要操作关闭防火墙
1、首先,输入service iptables stop命令停止防火墙的运行,再通过输入chkconfig iptables off命令关闭防火墙开机运行
2、执行命令如下:
[root@localhost ~]# service iptables stop
[root@localhost ~]# chkconfig iptables off
查看防火墙状态:
[root@localhost ~]# service iptables status
iptables: Firewall is not running.
1.5 修改主机名称
修改主机名称目的是为了方便管理,将第一台hadoop主机的名称改为hadoop1,第二台改为hadoop2,第三台改为hadoop3。在三台hadoop主机上按下面的方法修改每台的主机名称
1、首先,确保在root用户下进行操作。通过vi命令修改network文件
[root@localhost ~]# vi /etc/sysconfig/network
2、然后按i键进入编辑模式,将HOSTNAME=localhost改为HOSTNAME=hadoop1也就是将该机器名称改为hadoop1。修改完成以后按Esc键退出编辑模式,按 Shift + : 输入wq进行保存并退出。修改完成后需要输入reboot命令重启生效
修改好的配置截图:
重启命令:
[root@localhost ~]# reboot
查看当前主机名命令:
[root@localhost ~]# hostname
hadoop1
1.6修改hosts文件
每台hadoop主机都加入相同的hosts主机记录
1、打开hosts文件
[root@hadoop1 ~]# vi /etc/hosts
2、在第三行添加下面的参数
172.16.16.108 hadoop1
172.16.16.109 hadoop2
172.16.16.110 hadoop3
修改好的配置截图:
1.7 配置SSH免密码登录
hadoop在执行配置过程中,master需要对salves进行操作,所以我们需要在hadoop1节点配置ssh免密码登录hadoop2、hadoop3.
在hadoop1主机上执行以下的命令
1、进入root管理员目录,执行ssh-keygen -t -rsa一直回车生成密钥
[root@hadoop1 ~]# cd ~
[root@hadoop1 ~]# ssh-keygen -t rsa
2、进入 ~/.ssh目录,将生成好的密钥同步到hadoop2和hadoop3中,在执行ssh-copy-id 命令后需要输入对应hadoop主机的密码
[root@hadoop1 ~]# cd ~/.ssh
[root@hadoop1 .ssh]# ssh-copy-id hadoop2
[root@hadoop1 .ssh]# ssh-copy-id hadoop3
3、执行
[root@hadoop1 .ssh]# cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
4、验证SSH免密码登录是否成功
在hadoop1主机上可以不用输入密码即可远程访问hadoop2和hadoop3,验证验证可以连接以后记得使用exit命令退出ssh连接
验证免密码登录hadoop2:
[root@hadoop1 .ssh]# ssh hadoop2
退出hadoop2连接:
[root@hadoop2 ~]# exit
验证免密码登录hadoop3:
[root@hadoop1 .ssh]# ssh hadoop3
[root@hadoop2 ~]# exit
退出hadoop3连接:
[root@hadoop3 ~]# exit
1.8 安装JDK环境
三台hadoop主机都需要按照下面步骤安装JDK环境
注:安装所需要的软件都在/opt/hadoop-package目录下
1、首先执行java -version 查看jdk是否已经安装,如果看到以下内容则表示已经安装了则可以跳过这一步骤,进入环境部署环节,另外如果版本低于java version “1.8.0_131″则需要升级到对应版本
[root@hadoop1]# java -version
java version “1.8.0_131”
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
2、进入软件包位置,将jdk安装包复制到/usr/lib/
[root@hadoop1 ~]# cd /opt/hadoop-package/
[root@hadoop1 hadoop-package]# cp jdk-8u131-linux-x64.tar.gz /usr/lib
3、进入/usr/lib目录并解压jdk-8u131-linux-x64.tar.gz
[root@hadoop1 hadoop-package]# cd /usr/lib
[root@hadoop1 lib]# tar -zxvf jdk-8u131-linux-x64.tar.gz
4、修改环境变量
[root@hadoop1 lib]# vi /etc/profile
添加以下内容:
export JAVA_HOME=/usr/lib/jdk1.8
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
修改好的配置截图:
5、更新环境变量
[root@hadoop1 lib]# source /etc/profile
6、执行java -version查看是否安装或者更新成功
[root@hadoop1]# java -version
java version “1.8.0_131”
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
2.集群环境部署
注:安装所需要的软件都在/opt/hadoop-package目录下
2.1 安装hadoop3.1.0
我们通过在hadoop1进行安装hadoop,然后配置相应的配置文件,最后将hadooop所有文件同步到其它hadooop节点(hadoop2、hadoop3)。Hadoop路径配置为/opt/hadoop-3.1.0
在hadoop1执行以下操作:
1、 首先进入软件包目录
[root@localhost ~]# cd /opt/hadoop-package/
2、通过cp命令将hadoop安装包(hadoop-3.1.0.tar.gz)复制到/opt目录下
[root@localhost hadoop-package]# cp hadoop-3.1.0.tar.gz /opt/
3、 进入/opt目录,并解压hadoop-3.1.0.tar.gz压缩包
[root@localhost hadoop-package]# cd /opt/
[root@localhost opt]# tar -zxvf hadoop-3.1.0.tar.gz
2.2 配置hadoop配置文件
2.2.1修改core-site.xml配置文件
通过vi命令修改core-site.xml配置文件,在 <configuration> </configuration>中间添加以下命令,fs.defaultFS是用来定义HDFS的默认名称节点路径。就是我们将来访问HDFS文件时,如果没有指定路径,就会联系这里定义的路径的主机,去联系这台主机去寻找其路径。
1、打开core-site.xml配置文件命令:
[root@hadoop1]# vi /opt/hadoop-3.1.0/etc/hadoop/core-site.xml
2、添加内容:
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-3.1.0/tmp</value>
</property>
3、修改好的配置截图:
2.2.2修改hdfs-site.xml配置文件
通过vi命令修改hdfs-site.xml配置文件,在 <configuration> </configuration>中间添加第2步的内容
1、打开hdfs-site.xml配置文件:
[root@hadoop1]# vi /opt/hadoop-3.1.0/etc/hadoop/hdfs-site.xml
2、添加内容:
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///opt/hadoop-3.1.0/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///opt/hadoop-3.1.0/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop2:9001</value>
</property>
3、修改好的配置截图:
2.2.3修改workers配置文件
通过vi命令修改workers配置文件,删除里面的localhost在第二行中加入hadoop2和hadoop3
1、打开workers配置文件
[root@hadoop1]# vi /opt/hadoop-3.1.0/etc/hadoop/workers
2、添加内容
hadoop2
hadoop3
3、修改好的配置截图
2.2.4修改mapred-site.xml配置文件
通过vi命令修改mapred-site.xml配置文件,在 <configuration> </configuration>中间添加第2步的内容
1、打开mapred-site.xml配置文件命令:
[root@hadoop1]# vi /opt/hadoop-3.1.0/etc/hadoop/mapred-site.xml
2、添加内容
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>
/opt/hadoop-3.1.0/etc/hadoop,
/opt/hadoop-3.1.0/share/hadoop/common/*,
/opt/hadoop-3.1.0/share/hadoop/common/lib/*,
/opt/hadoop-3.1.0/share/hadoop/hdfs/*,
/opt/hadoop-3.1.0/share/hadoop/hdfs/lib/*,
/opt/hadoop-3.1.0/share/hadoop/mapreduce/*,
/opt/hadoop-3.1.0/share/hadoop/mapreduce/lib/*,
/opt/hadoop-3.1.0/share/hadoop/yarn/*,
/opt/hadoop-3.1.0/share/hadoop/yarn/lib/*
</value>
</property>
3、修改好的配置截图
2.2.5修改yarn-site.xml配置文件
通过vi命令修改yarn-site.xml配置文件,在 <configuration> </configuration>中间添加第2步的内容
1、打开yarn-site.xml配置文件命令:
[root@hadoop1]# vi /opt/hadoop-3.1.0/etc/hadoop/yarn-site.xml
2、添加内容
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
3、修改好的配置截图
2.2.6修改hadoop-env.sh配置文件
通过vi命令修改hadoop-env.sh配置文件,在第二行中添加第2步的内容
1、打开hadoop-env.sh配置文件命令:
[root@hadoop1]# vi /opt/hadoop-3.1.0/etc/hadoop/hadoop-env.sh
2、添加内容
export JAVA_HOME=/usr/lib/jdk1.8
3、修改好的配置截图
4、更新配置文件
[root@hadoop1 ~]# source /opt/hadoop-3.1.0/etc/hadoop/hadoop-env.sh
2.2.7修改start-dfs.sh和stop-dfs.sh配置文件
1、打开start-dfs.sh配置文件,在第二行中添加以下命令
[root@localhost ~]# vi /opt/hadoop-3.1.0/sbin/start-dfs.sh
添加内容:
export HDFS_NAMENODE_SECURE_USER=root
export HDFS_DATANODE_SECURE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
修改好的start-dfs.sh截图:
2、打开stop-dfs.sh配置文件,在第二行中添加以下命令
[root@localhost ~]# vi /opt/hadoop-3.1.0/sbin/stop-dfs.sh
添加内容:
export HDFS_NAMENODE_SECURE_USER=root
export HDFS_DATANODE_SECURE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
修改好的stop-dfs.sh截图:
2.2.8修改start-yarn.sh和stop-yarn.sh配置文件
1、打开start-yarn.sh配置文件,在第二行中添加以下命令
[root@localhost ~]# vi /opt/hadoop-3.1.0/sbin/start-yarn.sh
添加内容:
export YARN_RESOURCEMANAGER_USER=root
export HADOOP_SECURE_DN_USER=root
export YARN_NODEMANAGER_USER=root
修改好的start-yarn.sh截图:
2、打开stop-yarn.sh配置文件,在第二行中添加以下命令
[root@localhost ~]# vi /opt/hadoop-3.1.0/sbin/stop-yarn.sh
添加内容:
export YARN_RESOURCEMANAGER_USER=root
export HADOOP_SECURE_DN_USER=root
export YARN_NODEMANAGER_USER=root
修改好的sotp-yarn.sh截图:
2.2.9取消打印警告信息
由于系统预装的glibc库时2.12版本,而hadoop3.1.0期待的是2.14版本,所以后期启动服务的时候会打印报警信息,我们可以配置取消打印警告信息
1、打开log4j.properties配置文件,在首行中添加第2步的内容
[root@hadoop1 ~]# vi /opt/hadoop-3.1.0/etc/hadoop/log4j.properties
2、添加内容
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
3、修改好的配置截图
2.2.10同步hadoop1配置到hadoop2和hadoop3中
1、同步已经配置好的hadoop文件到hadoop2上
[root@hadoop1 ~]# cd /opt/
[root@hadoop1 opt]# scp -r hadoop-3.1.0 root@hadoop2:/opt/
2、同步已经配置好的hadoop文件到hadoop3上
[root@hadoop1 ~]# cd /opt/
[root@hadoop1 opt]# scp -r hadoop-3.1.0 root@hadoop3:/opt/
2.2.11配置三台hadoop主机的profile文件
1、打开profile文件,在最后面添加第2步的参数内容
[root@hadoop1 ~]# vi /etc/profile
2、添加内容
#SET HADOOP
HADOOP_HOME=/opt/hadoop-3.1.0
PATH=$HADOOP_HOME/bin:$PATH
export HADOOP_HOME PATH
3、修改好的配置截图
4、更新环境变量
[root@localhost ~]# source /etc/profile
[root@localhost ~]# source /opt/hadoop-3.1.0/etc/hadoop/hadoop-env.sh
2.3 格式化HDFS文件系统
在hadoop1上通过hdfs namenode -format命令来格式化HDFS文件系统
[root@hadoop1 ~]# hdfs namenode -format
成功格式化截图:表示格式化HDFS文件系统完成
3.启动集群
3.1 启动集群
1、启动hadoop集群验证是否能正常启动,进入到/opt/hadoop-3.1.0/sbin/目录下通过./start-all.sh命令执行启动
[root@hadoop1 ~]# cd /opt/hadoop-3.1.0/sbin/
[root@hadoop1 sbin]# ./start-all.sh
2、在各hadoop节点上执行jps命令查看hadoop进程
[root@hadoop1 ~]# jps
hadoop1运行jps截图:
hadoop2运行jps截图:
hadoop3运行jps截图:
3、通过web访问HDFS文件系统和yarn
可以通过以下链接访问hdfs和yarn
http://172.16.16.108:8088/cluster