一、新建虚拟机
略(只要建立一个普通的虚拟机即可,虚拟机作为主机:hadoopmaster)
启动此虚拟机如上图所示。
二、VMware VMnet8 模式共享主机网络配置
NAT
网络模式:
宿主机可以看做一个路由器,虚拟机通过宿主机的网络来访问
Internet
;
可以安装多台虚拟机,组成一个小型局域网,例如:搭建
hadoop
集群、分布式服务。
步骤一 VMnet8 设置静态 IP
具体的IP地址需要根据个人情况做相对应改变,我的IP地址是192.168.93.2;默认网关是192.168.93.1
步骤二 Centos 网络设配器为 NAT 模式
应该默认都是NAT模式,如果不是的话,切换成NAT模式;
步骤三 VMware 虚拟网络设置
在VMware中找到虚拟网络编辑器,按上述操作进行配置。
步骤五
修改网络设置
步骤六
验证结果:
ping www.baidu.com 看网络是否通了
如果出现了上面的情况,则说明网络已经通了,配置成功。
3
、 克隆集群节点 hadoopSlave1 与 hadoopSlave2
步骤一
关闭 h
adoopmaster
服务器,在该节点单击鼠标右键,选择【管理】
-
【克隆】选项
步骤二
克隆虚拟机向导:
将虚拟机重命名为
HadoopSlave1
,并选择一个存储位置
同理 再克隆一台虚拟机命名为hadoopslave2;
完成 Hadoop 分布式集群的虚拟硬件环境搭建
4
、 Linux 系统配置 (最好用root用户配置)
步骤一
配置时钟同步
安装 crontab:在命令行里输入 yum install vixie-cron 和 yum install crontabs
配置自动时钟同步 :
0 1 * * * /usr/sbin/ntpdate cn.pool.ntp.org 或者 0 1 * * * /usr/sbin/ntpdate aliyun.com
手动时间同步: /usr/sbin/ntpdate cn.pool.ntp.org 或者 /usr/sbin/ntpdate cn.pool.ntp.org
步骤二
配置主机名
以
root
用户身份登录
HadoopMaster
节点,直接使用
vim
编辑器打开
network
网络配置文件,命令如下:
vim /etc/sysconfig/network
打开
network
文件,配置信息如下,将
HadoopMaster
节点的主机名修改为
master
,即下 面第二行代码所示:
NETWORKING=yes #
启动网络
HOSTNAME=master #
主机名
按
Esc
键,输入
:wq
保存退出。 确认修改生效,命令如下:
hostname master
在操作之前要关闭当前的终端,重新打开一个终端: 输入查看是否修改成功:hostname
步骤三
配置
HadoopSlave1
和
HadoopSlave2
网络环境,并关闭三台主机的防火墙
将虚拟机的网络地址修改为固定的IP地址,不然每次开机时可能导致IP地址不同,导致集群启动失败。
可以用图形化操作(点桌面右上角的小电脑图标配置),如果不行的话用命令行操作:
vi /etc/sysconfig/network-scripts/ifcfg-eth0(etho网卡的配置文件)
修改ONBOOT=yes;BOOTPROTO=static;添加IPADDR,GATEWAY,DNS1(保持与网关一致即可)
(具体要根据自己的电脑的网络来配置,不能照抄!!!!)
修改后,使用service network restart重启网络或者reboot重启虚拟机即可。
需要注意的是:如果用命令行修改时,不仅要把虚拟机的IP地址修改,还要把两台克隆的虚拟机上UUID 和 HWADDR 删掉!!
下次虚拟机开机时会自动分配对应的UUID和HWADDR!
防火墙关闭:
设置关闭即可
步骤四
配置
Hosts
列表
以
root
用户身份登录三个节点,将下面
3
行代码添加到主机列表
/etc/hosts
文件中。
vi /etc/hosts
192.168.93.128 master
192.168.93.129 slave1
192.168.93.130 slave2
验证主机
hosts
是否配置成功
ping master
ping slave1
ping slave2
步骤五
安装
JDK
将
jdk-7u79-linux-x64.tar.gz
复制到新建的
/usr/java
目录下解压
cd /usr
mkdir java
cd java
tar -zxvf jdk-7u79-linux-x64.tar.gz
修改用户的系统环境变量文件/home/hadoop/.bash_profile
vi /home/hadoop/.bash_profile
将下面代码赋值到profile文件中即可;
export JAVA_HOME=/usr/java/jdk1.7.0_79
export JRE_HOME=/usr/java/jdk1.7.0_79/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$JRE_HOME/bin:$JAVA_HOME/bin:$PATH
输入 source/home/hadoop/.bash_profile
使命令生效
输入java -version
说明安装成功!
步骤六
免密钥登录配置
从
root
用户切换到
hadoop
用户,输入
su hadoop
,在终端生成密钥,输入以下命令:
ssh-keygen –t rsa
ssh-keygen
是生成密钥的命令;
-t rsa
表示使用
rsa
算法进行加密
生成的密钥在
/home/hadoop/.ssh/
目录下,私钥为
id_rsa
,公钥为
id_rsa.pub
复制公钥文件到
authorized_keys
文件中,命令如下:
cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
修改
authorized_keys
文件的权限,只有当前用户
hadoop
有权限操作
authorized_keys
文件, 命令如下:
chmod 600 /home/hadoop/.ssh/authorized_keys
将
HadoopMaster
主节点生成的
authorized_keys
公钥文件复制到
HadoopSlave1
和 HadoopSlave2 从节点,命令如下:
scp /home/hadoop/.ssh/authorized_keys hadoop@slave1:/home/hadoop/.ssh/
scp /home/hadoop/.ssh/authorized_keys hadoop@slave2:/home/hadoop/.ssh/
如果出现提示,则输入
yes
并按回车键,输入密码,这里密码是
hadoop
。
此时,
HadoopMaster
节点的公钥文件信息就被复制到
HadoopSlave1
和
HadoopSlave2
节点上了。
以
hadoop
用户身份登录
HadoopSlave1
、
HadoopSlave2
节点,进入到
/home/hadoop/.ssh
目录,修改 authorized_keys
文件的权限为当前用户可读可写,输入以下命令:
chmod 600 /home/hadoop/.ssh/authorized_keys
此时,在
HadoopSlave1
、
HadoopSlave2
节点上就存放了
HadoopMaster
节点的公钥,那 么 HadoopMaster
节点就可以以
SSH
方式直接登录
HadoopSlave1
、
HadoopSlave2
节点。验证 免密钥登录,在 HadoopMaster
节点的
Terminal
终端上输入以下命令验证免密钥登录。
[hadoop@master ~]$ ssh slave1
Last login: Sat Feb 1 01:23:58 2020 from slave1
[hadoop@slave1 ~]$ exit
logout
Connection to slave1 closed.
[hadoop@master ~]$ ssh slave2
Last login: Fri Jan 31 09:23:24 2020 from slave1
[hadoop@slave2 ~]$ exit
logout
Connection to slave2 closed.
[hadoop@master ~]$
5
、 Hadoop 的部署配置(以下都使用hadoop用户进行配置)
步骤一
解压
Hadoop
安装文件
将
Hadoop
安装文件通过
SSH
工具上传到
HadoopMaster
节点
hadoop
用户的主目录下。
进入
hadoop
用户主目录
cd ~
输入以下命令进行解压:
tar –zxvf hadoop-2.5.2.tar.gz
步骤二
配置环境变量
hadoop-env.sh
打开
Hadoop
的环境变量文件,只需要配置
JDK
的路径。
vim /home/hadoop/hadoop-2.5.2/etc/hadoop/hadoop-env.sh
在文件靠前的部分找到以下代码:
export JAVA_HOME=${JAVA_HOME}
将这行代码修改为:
export JAVA_HOME=/usr/java/jdk1.7.0_79
步骤三
配置环境变量
yarn-env.sh
打开
Hadoop
的
YARN
模块的环境变量文件
yarn-env.sh
,只需要配置
JDK
的路径。
vim /home/hadoop/hadoop-2.5.2/etc/hadoop/yarn-env.sh
在文件靠前的部分找到以下代码:
#export JAVA_HOME
将这行代码修改为:
export JAVA_HOME=/usr/java/jdk1.7.0_79
按esc后,:wq!退出
步骤四
配置核心组件
core-site.xml
打开
Hadoop
的核心配置文件
core-site.xml
vim /home/hadoop/hadoop-2.5.2/etc/hadoop/core-site.xml
在
<!-- Put site-specific property overrides in this file. -->
下方,输入
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoopdata</value>
</property>
</configuration>
按esc后,:wq!退出
步骤五
配置文件系统
hdfs-site.xml
打开
hdfs-site.xml
配置文件
vim /home/hadoop/hadoop-2.5.2/etc/hadoop/hdfs-site.xml
在
<!-- Put site-specific property overrides in this file. -->
下方,输入
<configuration>
<property>
<!--
配置数据块的副因子(即副本数)为
2-->
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
按esc后,:wq!退出
步骤六
配置
YARN
资源系统
yarn-site.xml
打开
yarn-site.xml
配置文件
vim /home/hadoop/hadoop-2.5.2/etc/hadoop/yarn-site.xml
在
<!-- Site specific YARN configuration properties -->
下方,输入
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
15
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
步骤七
配置计算框架
mapred-site.xml
通过以下命令打开
mapred-site.xml
配置文件
vim /home/hadoop/hadoop-2.5.2/etc/hadoop/mapred-site.xml
在
<!-- Put site-specific property overrides in this file. -->
下方,输入
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
步骤八
在
HadoopMaster
配置
slaves
,复制
hadoop
到从节点
打开
slaves
配置文件
vim /home/hadoop/hadoop-2.5.2/etc/hadoop/slaves
用下面的内容替换
slaves
文件中的内容:
slave1
slave2
在
Hadoop
集群中,每个节点上的配置和安装的应用都是一样的,这是分布式集群的特性, 所以,此时已经在 HadoopMaster
节点上安装了
Hadoop-2.5.2
的应用,只需要将此应用复制到各个从节点(即 HadoopSlave1
节点和
HadoopSlave2
节点)即可将主节点的
hadoop
复制到从节点上。
scp –r /home/hadoop/hadoop-2.5.2 hadoop@slave1:~/
scp –r /home/hadoop/hadoop-2.5.2 hadoop@slave2:~/
步骤九
配置
Hadoop
启动的系统环境变量
此配置需要同时在 HadoopMaster
、
HadoopSlave1
和
HadoopSlave2
上进行操作,操作命令如下:
vim /home/hadoop/.bash_profile
将下面的代码追加到
.bash_profile
文件的末尾:
#Hadoop Path configuration
export HADOOP_HOME=/home/hadoop/hadoop-2.5.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
输入
:wq
保存退出,并执行生效命令:
source /home/hadoop/.bash_profile
登录
HadoopSlave1
和
HadoopSlave2
节点,依照上述配置方法,配置
Hadoop
启动环境变量
步骤十
配置数据目录
HDFS
分布式文件系统存储数据最终落地到各个数据节点上的本地磁盘位置信息 /home/hadoop/hadoopdata,该目录是需要自己创建的。
要在
HadoopMaster
、
HadoopSlave1
和
HadoopSlave2
上分别创建数据目录
/home/hadoop/hadoopdata。
mkdir /home/hadoop/hadoopdata
6
、 Hadoop 集群的启动
步骤一
格式化文件系统(只在第一次运行时输入即可)
启动集群时,首先要做的就是在
HadoopMaster
节点上格式化分布式文件系统
HDFS
:
hdfs namenode –format
步骤二
启动
Hadoop
Hadoop
是主从架构,启动时由主节点带动从节点,所以启动集群的操作需要在主节点 HadoopMaster 完成,命令如下:
cd /home/hadoop/hadoop-2.5.2
sbin/start-all.sh
执行命令后,在提示处输入
yes
步骤三
查看进程是否启动
在
HadoopMaster
的
终端执行
jps
命令,在打印结果中会看到
4
个进程,分别是
ResourceManager
、
Jps
、
NameNode
和
SecondaryNameNode
。
在
HadoopSlave
的终端执行
jps
命令,在打印结果中会看到
3
个进程,分别是
NodeManager
、 DataNode 和
Jps
。
则表示主、从节点进程启动成功。
步骤四
Web UI
查看集群是否成功启动
在
HadoopMaster
上启动
Firefox
浏览器,在浏览器地址栏中输入
http://master:50070/
,检查 NameNode
和
DataNode
是否正常;在浏览器地址栏中输入
http://master:18088/
,检查
YARN是否正常。
步骤五
运行
PI
实例检查集群是否启动成功
在
HadoopMaster
节点上,进入
hadoop
安装主目录,分别执行下面的命令:
cd hadoop-2.5.2/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.5.2.jar pi 10 10
最后输出为:
Estimated value of Pi is 3.20000000000000000000
最后结束hadoop命令:stop-all.sh
在关闭hadoop后再关闭虚拟机!