hadoop完全分布
规划:
ip | 主机名 | 服务 |
192.168.79.7 | hadoop01 | namenode\datanode\resourcemanager\nodemanager\jobhistoryserver |
192.168.79.8 | hadoop02 | datanode\nodemanager\secondarynamenode |
192.168.79.9 | hadoop03 | datanode\nodemanager |
备注: | NN、RM需要选择较好的服务器安装,两者分开安装 |
前提准备:
基本要求:
1.因为已经搭建完成了伪分布式,所以只需要在伪分布式的基础上进行修改,并对配置的目录进行节点分发即可
2.因为是完全分布式所以完成如下要求
2.1必须所有节点的时间都是同步的(公司开发是同步自己的时间服务器,也可能是ntpdate远程用同步) ntpdate -u ntp1.aliyun.com 同步阿里云时间服务器
2.2所有的节点必须安装JDK1.8,因为hadoop是Java写的,所有需要JDK支持 2.3防火墙关闭,并且每台机器之间可以互相通信 ping通 (在公司中严禁!!!!严禁!!!严禁!!! 关闭防火 墙)
安装:
1.需要修改Hadoop01节点中 hdfs-site.xml文件中的配置
跳转到 hadoop配置目录: cd /opt/software/hadoop2.7.1/etc/hadoop/ 2.修文件配置 vi hdfs-site.xml
<property> <!-- 指定HDFS文件系统中副本的数量 --> <name>dfs.replication</name>
<!-- 具体的数量值 -->
<value>2</value>
</property>
<property>
<!-- 指定SecondaryNameNode的启动 --> <name>dfs.namenode.secondary.http-address</name>
<!-- 配置的启动 -->
<value>hadoop02:50090</value>
</property>
3.完全分布式 datanode被规划到 hadoop02,hadoop03,hadoop04 修改slaves文件 vi slaves 把原有01删除 添加如下信息: hadoop02 hadoop03 hadoop04 保存并退出
4.所有机器的免密的登录 先进入 .ssh隐藏目录下,因为hadoop01配置过 伪分布式,所以不需要再次生成 秘钥
HDFSShell命令
直接发送给 hadoop02,03,04即可 ssh-copy-id hadoop02/03/04 --> 这个是简写 ps:剩余节点需要相互免密并且包含自身
5.因为是在伪分布式上修改的完全分布式 所以伪分布式已经格式化过namenode 为了让其他机器上的节点能记录namenode,所以需要将生成data删 除 rm -rf /opt/software/hadoop-2.7.1/data/ 查看一下 ls /opt/software/hadoop-2.7.1/
6.因为hadoop01节点已经完成了配置,所以只需要将hadoop01节点上的hadoop文件分发给02,03,04节点
即可
scp 远程拷贝,可以块节点对文件进行拷贝传输
scp -r 递归拷贝目录的时候使用
scp -r 当前节点文件存在的路径 root@拷贝到节点IP地址:拷贝节点的存储位置
scp -r /opt/software/hadoop-2.7.1 root@hadoop02:$PWD
使用这个命了代替
scp -r /opt/software/hadoop-2.7.1 root@hadoop02(03,04):/opt/software/
ps:$PWD 代表的是和原来拷贝路径和相同的路径 --> 拷贝到相同目录下 03,04也要拷贝一份
7.因为每台节点的角色不同可能需要在不同的节点上启动不同个角色
所以需要配置hadoop环境变量,因为hadoop01是配置好的,所以直接发送文件即可 scp -r /etc/profile root@hadoop02(03,04):/etc/ 需要在其他节点执行 source /etc/profile
8.在namenode的节点上 我们需要执行格式化namenode hadoop namenode -format
9.启动hdfs start-dfs.sh 停止hdfs stop-dfs.sh 单个角色启动 hadoop-daemon.sh start 角色名称
WebUI网址 通过namenode的IP地址:50070可以访问webUI