前提条件: 1.jdk的安装成功 并且 执行 echo $JAVA_HOME 时可以显示正确的环境变量
2.ssh可无密码登陆
这个操作是要让master节点可以无密码SSH登陆到slave01节点上。
首先生成 master 的公匙,在 master 节点终端中执行:
1. cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost
2. ssh-keygen -t rsa # 一直按回车就可以,生成的密钥保存为.ssh/id_rsa
master 节点需能无密码 ssh 本机,这一步还是在 master 节点上执行:
1. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
完成后可以使用 ssh master 验证一下。接着将公匙传输到 slave01 节点:
1. scp ~/.ssh/id_rsa.pub hadoop@slave01:/home/hadoop/.ssh/authorized_keys
如果有其他 Slave 节点,也要执行 将公匙传输到 Slave 节点、在 Slave 节点上加入授权 这两步。
最后在 Master 节点上就可以无密码SSH到Slave1节点了。
ssh Slave1 即可实现 ssh的无密码登录
集群/分布式模式需要修改 etc/hadoop 中的5个配置文件,后四个文件可点击查看官方默认设置值,这里仅设置了正常启动所必须的设置项: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。
1, 文件 slave
1. cd /usr/local/hadoop/etc/hadoop
2. sudo gedit slaves
将原来 localhost 删除,把所有Slave的主机名写上,每行一个。例如:我只有master 和 slave01 就分两行 分别写入 master与 slave01
2, 文件 core-site.xml ,加入如下内容:
3, 文件hdfs-site.xml,因为只有一个Slave,所以dfs.replication的值设为2(包括本机)。
4, 文件mapred-site.xml,这个文件不存在,首先需要从模板中复制一份:
1. cp mapred-site.xml.template mapred-site.xml
然后配置修改如下:
5, 文件yarn-site.xml:
配置好后,将 master 上的 Hadoop 文件复制到各个节点上(虽然直接采用 scp 复制也可以正确运行,但会有所不同,如符号链接 scp 过去后就有点不一样了。所以先打包再复制比较稳妥)。因为之前有跑过伪分布式模式,建议在切换到集群模式前先删除之前的临时文件。
1. cd /usr/local
2. rm -r ./hadoop/tmp # 删除 Hadoop 临时文件
3. scp -r ./hadoop hadoop@slave01:/etc/local/
在slave01上执行:
sudo chown -R hadoop:hadoop /usr/local/hadoop
然后再master中启动hadoop
1. cd /usr/local/hadoop/
2. bin/hdfs namenode -format # 首次运行需要执行初始化,后面不再需要
3. sbin/start-dfs.sh
4. sbin/start-yarn.sh
通过命令jps可以查看各个节点所启动的进程。
即:配置成功!
在ssh无密码可登录的条件下,以及jdk,hadoop都可直接执行的情况下
执行
· sbin/start-dfs.sh
· sbin/start-yarn.sh
可能会出现 无法找到配置文件目录 /etc/hadoop的 错误信息 导致 hadoop配置失败
解决方法: 执行 sudo gedit /etc/environment
改写成如下配置 重新编译hadoop配置文件 即可完成配置