完全分布式部署Hadoop操作步骤:
任务:
1.配置集群要求:
hadoop201 | hadoop202 | hadoop203 | |
---|---|---|---|
HDFS | DataNode | DataNode,SecondaryNameNode | DataNode,NameNode |
YARN | ResourceManager,NodeManager | NodeManager | NodeManager |
1. 准备 3 台客户机(关闭防火墙、静态 ip、主机名称)(root用户)
新建一台虚拟机,进行简单配置
1.1 新建虚拟机
1.2 启动虚拟机
root用户登录,密码为hadoop
1.3 修改网关
右键虚拟机右上方小电脑图标设置网络和IP地址。
1.4 修改为静态IP
1.4.1 修改虚拟机的MAC地址
在终端命令窗口中输入:
vim /etc/udev/rules.d/70-persistent-net.rules
复制MAC地址
1.4.2 修改IP地址
执行命令:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
1.4.3 重启网卡
执行命令:
service network restart
如果报错reboot重启虚拟机,如果没有就继续。
reboot
1.4.4 将hadoop201客户机关闭,然后再克隆两台虚拟机hadoop202、hadoop203。
克隆虚拟机
1.5 重复克隆步骤再克隆出hadoop203
进行简单配置
1.6 启动虚拟机,在hadoop202和hadoop203上重复操作1.4
注意1.4.1的步骤有变。由于克隆的原因,此时文件中有两行这样的内容,将第一行删除,将第二行的eth1改为eth0即可。
1.7 修改主机名(3台虚拟机一样的操作)
1.7.1 以root权限修改 Linux 的 hosts 文件
- 进入Linux 系统查看本机的主机名。通过 hostname 命令查看。
hostname
- 如果感觉此主机名不合适,我们可以进行修改。通过编辑 /etc/sysconfig/network 文件。
vim /etc/sysconfig/network
修改文件中主机名称,3台虚拟机名称分别改为hadoop201、hadoop202、hadoop203.
如:HOSTNAME=hadoop201
注意:主机名称不要有“_”下划线
- 保存退出。
- 打开/etc/hosts
vim /etc/hosts
添加如下内容:
192.168.178.201 hadoop201
192.168.178.202 hadoop202
192.168.178.203 hadoop203
- 并重启设备,重启后,查看主机名,已经修改成功
reboot
1.7.2修改 window7 的 hosts 文件,目的是为了让主机能够识别虚拟机,方便从Windows系统传文件到虚拟机上。
进入 C:\Windows\System32\drivers\etc 路径
打开 hosts 文件并添加如下内容:
192.168.178.201 hadoop201
192.168.178.202 hadoop202
192.168.178.203 hadoop203
1.8 3个节点关闭防火墙
- 查看防火墙开机启动状态
chkconfig iptables --list
- 关闭防火墙
chkconfig iptables off
1.9 3个节点在opt目录下创建文件夹
- 创建hadoop用户(由于在最初创建虚拟机的时候,我们就使用的是hadoop用户,可省略这一步)
adduser hadooop
passwd hadoop
- 设置hadoop用户具有root权限,:wq! 强制保存。
vim /etc/sudoers
- 在/opt目录下创建文件夹
(1) 在 root 用户下创建 module、software 文件夹
cd /opt
mkdir module
mkdir software
(2)修改 module、software 文件夹的所有者
chown hadoop:hadoop module
chown hadoop:hadoop software
ls -al
修改前:
修改后:
2. hadoop201上安装 jdk
2.1 安装上传工具lrzsz
yum -y install lrzsz
2.2 卸载现有 jdk
(1)查询是否安装 java 软件:
rpm -qa|grep java
(2)如果安装的版本低于 1.7,卸载该 jdk:
rpm -e 软件包
2.3 上传jdk-8u151-linux-x64.tar到/opt/software目录
2.4 解压 jdk 到/opt/module 目录下
tar -zxf jdk-8u151-linux-x64.tar.gz -C ../module/
查看是否解压成功:
3. hadoop201上配置java环境变量
(1)先获取 jdk 路径:
cd /opt/module/jdk1.8.0_162
pwd
复制jdk路径
(2)打开/etc/profile 文件:
vim /etc/profile
在 profie 文 件 末 尾 添 加 jdk 路 径 :
##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin
(3)保存后退出
(4)让修改后的文件生效:
source /etc/profile
(5)测试 jdk 安装成功
java -version
4. hadoop201上安装 hadoop
4.1 上传hadoop-2.7.6.tar.gz到/opt/software目录下
4.2 解压 hadoop 到/opt/module 目录下
tar -zxf hadoop-2.7.6.tar.gz -C ../module/
查看是否解压成功:
4.3 在/opt/module/hadoop-2.7.6/etc/hadoop 路径下配置hadoop-env.sh
cd /opt/module/hadoop-2.7.6/etc/hadoop/
获取jdk的安装路径并复制
修改 hadoop-env.sh 文件中 JAVA_HOME 路径:
vim hadoop-env.sh
修改内容如图:
5. hadoop201上配置hadoop环境变量
(1)获取 hadoop 安装路径:
cd /opt/module/hadoop-2.7.6
pwd
复制hadoop路径
(2)打开/etc/profile 文件:
vim /etc/profile
在 profie 文件末尾添加 hadoop 路径:
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
(3)保存后退出:
:wq
(4)让修改后的文件生效:
source /etc/profile
hadoop version ##检查hadoop是否安装成功
修改/opt 目录下的所有文件所有者为hadoop
chown hadoop:hadoop -R /opt/
切换到hadoop 用户
su hadoop
6. 安装 ssh,SSH免密码登录(hadoop用户)
1.配置 ssh
(1)基本语法
ssh 另一台电脑的ip地址
(2)ssh 连接时出现Host key verification failed 的解决方法
ssh hadoop102
The authenticity of host ‘192.168.1.103 (192.168.1.103)’ can’t be established. RSA key fingerprint is cf:1e??d7:d0:4c:2d:98:60:b4:fd:ae:b1:2d:ad:06.
Are you sure you want to continue connecting (yes/no)? Host key verification failed.
(3)解决方案如下:直接输入 yes
2.无密钥配置
hadoop201(ResourceManager节点)上操作
hadoop203(NameNode节点)上操作
(1)进入到我的 home 目录
cd ~
(2)生成公钥和私钥:
ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
(3)将公钥拷贝到要免密登录的目标机器上
hadoop203的公钥就拷贝到201和202上。
ssh-copy-id hadoop202
ssh-copy-id hadoop203
免密登录原理:
3…ssh 文件夹下的文件功能解释
(1)~/.ssh/known_hosts记录ssh访问过计算机的公钥(public key)
(2)id_rsa生成的私钥
(3)id_rsa.pub生成的公钥
(4)authorized_keys存放授权过得无秘登录服务器公钥
rsync命令讲解
rsync 远程同步工具,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp 是把所有文件都复制过去。
- 查看rsync 使用说明
man rsync | more - 基本语法
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
命令 命令参数 要拷贝的文件路径/名称 目的用户@主机:目的路径选项
-r 递归
-v 显示复制过程
-l 拷贝符号连接 - 案例实操
把本机/opt/tmp 目录同步到 hadoop102 服务器的 root 用户下的/opt/tmp 目录
rsync -rvl /opt/tmp root@hadoop02:/opt/
编写集群分发脚本xsync(root用户)
- 需求分析:循环复制文件到所有节点的相同目录下。
(1)原始拷贝:
rsync -rvl /opt/module root@hadoop102:/opt/
(2)期望脚本:
xsync 要同步的文件名称
(3)在 /usr/local/bin 这个目录下存放的脚本,可以在系统任何地方直接执行。
- 案例实操:
(1)在 /usr/local/bin 目录下创建 xsync 文件,文件内容如下:
touch xsync
vim xsync
内容如下:
(2)修改脚本 xsync 具有执行权限
chmod 777 xsync
chown hadoop:hadoop -R xsync
(3)调用脚本形式:xsync 文件名称
xsync temp
编写集群操作脚本xcall(root用户)
- 需求分析:在所有主机上同时执行相同的命令xcall +命令
- 具体实现
(1)在/usr/local/bin 目录下创建 xcall 文件,文件内容如下:
cd /usr/local/bin
touch xcall
vim xcall
内容如下:
(2)修改脚本 xcall 具有执行权限
chmod 777 xcall
chown hadoop:hadoop xcall
(3)调用脚本形式: xcall 操作命令
xcall rm -rf /opt/tmp/
7. 配置集群
- 集群部署计划:
hadoop201 | hadoop202 | hadoop203 | |
---|---|---|---|
HDFS | DataNode | DataNode,SecondaryNameNode | DataNode,NameNode |
YARN | ResourceManager,NodeManager | NodeManager | NodeManager |
- 配置文件
cd /opt/module/hadoop-2.7.6/etc/hadoop/
(1) core-site.xml
vim core-site.xml
(2) hdfs(hadoop-env.sh、hdfs-site.xml、slaves)
vim hadoop-env.sh
vim hdfs-site.xml
vim slaves
(3) yarn(yarn-env.sh、yarn-site.xml)
vim yarn-env.sh
vim yarn-site.xml
(4) mapreduce (mapred-env.sh、mapred-site.xml)
vim mapred-env.sh
修改mapred-site.xml.template 文件后缀为 mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
8. 文件传送
将hadoop201的module、software目录,/etc/profile 文件同步到hadoop202和hadoop203上
xsync module/
xsync software/
xsync /etc/profile
在hadoop202和hadoop203上分别执行source,以使配置文件生效。
source /etc/profile
检查环境是否配置成功
java -version
hadoop version
如果都成功说明文件同步成功。
9. Hadoop启动停止方式(hadoop用户)
1.各个服务组件逐一启动
(1)分别启动 hdfs 组件
hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
(2)启动 yarn
yarn-daemon.sh start|stop resourcemanager|nodemanager
2.各个模块分开启动(配置 ssh 是前提)常用
(1)整体启动/停止 hdfs
start-dfs.sh
stop-dfs.sh
(2)整体启动/停止 yarn
start-yarn.sh
stop-yarn.sh
3.全部启动(不建议使用)
start-all.sh
stop-all.sh
10. 测试集群是否配置成功(hadoop用户)
hadoop203(Namenode节点)上执行
start-dfs.sh
hadoop201(resourcemanager节点)上执行
start-yarn.sh
xcall同时查看进程
xcall /opt/module/jdk1.8.0_151/bin/jps
执行到以上内容说明完全分布式环境部署成功。
11.总结
在部署环境中都会出现很多问题,尤其是细节问题,有可能就是哪个小的步骤出错,都会导致最终结果出错,还可能使你找不到问题所在。所以在操作时切勿急躁,一步一步来,就会避免一些细节错误。这里我例出一些我遇到的问题:
权限使用问题:在环境部署过程中,我们会多次切换用户,这也难免出现用户混乱情况,注意,我们在启动集群时用的是hadoop用户,所以如果你在期间使用过root用户启动集群,在重新使用hadoop用户启动时,最好把root用户产生文件统统删除,这样就不会影响集群启动与关闭。
文件发送问题:在使用xsync同步文件后,一定要在另外两台机子上检查文件是否传送成功,配置文件是否生效。在一切检查完毕后,方能进行下一步骤。