之前搭建Hadoop集群,总是因为几处小细节,导致整个集群崩了,所以,就想把每个步骤和具体方案写下来,方便以后查阅。也给刚入门的同行一些帮助。这个集群实在是让人头痛~!o(╥﹏╥)o,涉及到很多步骤,所以会比较长,耐心看,会有收获滴~!
一、分析
(1)准备3台客户机(关闭防火墙、静态ip、主机名称)
(2)安装jdk
(3)配置环境变量
(4)安装hadoop
(5)配置环境变量
(6)安装ssh
(7)配置集群
(8)启动测试集群
二、虚拟机准备
1.准备一台被克隆的机器,要求虚拟机网络模式设置为NAT
2.克隆3台虚拟机,这个网上有很多案例,就不叙述了
三、修改静态IP
1)在终端命令窗口输入:vim /etc/udev/rules.d/70-persistent-net.rules
删除eth0行;将eth1修改为eth0,同时复制物理ip地址
2)修改IP地址:vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改IPADDR和HWADDR,其余的行原虚拟机已经配好了,就不用配了。
3)执行service network restart
4)如果报错,reboot,重启虚拟机
四、主机名设置
1)修改linux的hosts文件
(1)进入Linux系统查看本机的主机名:hostname
(2)通过编辑:vi /etc/sysconfig/network,修改主机名
(3)打开/etc/hosts:vim /etc/hosts,添加ip和主机名
(4)重启设备
注:一定要查看防火墙状态:chkconfig iptables --list
关闭防火墙:chkconfig iptables off
五、scp
装好3台虚拟机之后,在被克隆机的/opt目录建立两个文件夹module和software,分别存放包和解压后的文件,这里用hadoop101代表被克隆机,hadoop102,hadoop103,hadoop104代表3台虚拟机。
(1)将hadoop101中/opt/module和/opt/software文件分别拷贝到虚拟机(root)
scp -r /opt/module/ root@hadoop102:/opt
scp -r /opt/software/ root@hadoop102:/opt
注意:很多人都会遇到一个问题,就是用户的切换,这里要特别强调,一定要注意当前用户是谁,然后再进行操作。
(2)将192.168.1.102服务器上的文件拷贝到当前用户下(root)
scp root@hadoop102:/etc/profile /opt/tmp
(3)实现两台远程机器之间的文件传输(hadoop103主机文件拷贝到hadoop104主机上)(atguigu)
scp atguigu@hadoop103:/opt/test/haha atguigu@hadoop104:/opt/test
六、SSH无密码登录(重点)
这块特别重要,必须把所有机器都设置成功
1)配置ssh
基本语法:ssh 另一台电脑的ip地址
2)无密钥配置(注意用户是谁)
(1)进入我的home目录:cd ~/.ssh
(2)生成公钥和私钥:ssh-copy-t rsa
然后桥(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.put(公钥)
(3)将公钥拷贝到要免密登录的目标机器上:shh-copy-id 192.168.1.102
七、rsync
rsync是远程同步工具,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的有点
基本语法:
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
命令 命令参数 要拷贝的文件路径/名称 目的用户@主机:目的路径
将本机/opt/tmp目录同步到103,104服务器的root用户下的/opt/tmp目录
rsync -rvl /opt/tmp/* root@hadoop103:/opt/tmp
八、编写集群分发脚本xsync
1)循环复制文件到所有节点的相同目录下,方便对文件的修改,节省很多时间,但要细心
(1)原始拷贝:rsync /opt/module root@hadoop103:/opt/
(2)期望脚本:xsynv 要同步的文件名称
(3)在/usr/local/bin这个目录下存放的脚本,就可以在系统任何地方直接执行,需要制定路径
①在/usr/local/bin目录下创建xsync文件,文件内容如下:
②修改脚本xsync具有执行权限:chmod 777 xsync
③调用脚本形式:xsync 文件名称
九、编写分发脚本xcall
1)需求分析:在所有主机上同时执行相同命令:xcall +命令
2)具体实现
(1)在./usr/local/bin目录下创建xcall文件,文件内容如下:
(2)修改脚本xcall具有执行权限
(3)调用脚本形式:xcall操作命令:xcall rm -rf 文件目录
十、配置集群(重点)
1)集群部署规划
2)配置文件
这里一共需要配置多个文件,分别是:
core-site.xml;hadoop-env.sh;hdfs-site.xml;slaves;yarn-env.sh;yarn-site.xml;mapred-env.sh;mapred-site.xml;
①core-site.xml
②hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.7.0_79
③hdfs-site.xml
④slaves
hadoop102;hadoop103;hadoop104
⑤yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.7.0_79
⑥yarn-site.xml
⑦mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.7.0_79
⑧mapred-site.xml
3)在集群上分发以上所有文件
xysnc /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml
……
4)查看文件分发情况
xcall cat /opt/module/hadoop-2.7.2/etc/hadoop/slaves
十一、集群启动及测试
1)启动集群
(0)如果集群第一次启动,需要格式化namenode:bin/hdfs namenode -format
(1)启动HDFS:sbin/start-dfs.sh
(2)启动yarn:sbin/start-yarn.sh
注意:Namenode和ResourceManager如果不是同一台机器,不能在NameNode上启动yarn,应该在ResourceManager所在的机器上启动yarn.
如果集群启动失败,则需要删除data和logs文件,然后再次格式化文件;
rm -rf data/ log/
至此,集群搭建完毕。希望此篇能帮助到需要的人。~!