写在前面:学习记录3~免得以后忘了
前情提要:
https://blog.csdn.net/l1682686/article/details/107713274
最好先搭个伪分布式练练手。
假如你搭好了,那么
关闭防火墙systemctl stop firewalld.service
1 克隆前配置
1.1先修改一下 /etc/hadoop下的core-site.xml:
我决定主机名用“master”,所以用master替代了原来的localhost。
1.2修改yarn-site.xml:
新增一个property,指定resoucemanager的hostname主机名
<property>
<name>yarn.resourcemanager.hostnamename>
<value>mastervalue>
property>
1.3修改 etc/hadoop下的workers文件:
3.0.0以后的版本都不让用slaves了,现在是workers,但功能没差(
2.2 修改hostname
切换到管理员用户,在每台虚拟机上,
vim /etc/hostname,把localhost改成对应的名字
2.3 配置网络信息
在每台机器上,
vim /etc/sysconfig/network-scripts/ifcfg-ens33
(没找到就去network-scripts下找找差不多的文件来改)
这么做是取消dhcp自动分配,设置一个固定的地址,根据Vmware设置好的NAT模式下的网关来给每台虚拟机分配一个固定的IP。
我这里就是192.168.188.101,192.168.188.102,192.168.188.103 。
配置好了,nmcli c reload ens33 重启网络服务。(用的是CentOS 8)
(ens33是网卡名)
ifconfig 查看是否生效。
2.4 修改host文件
修改每一台的hosts文件,vim /etc/hosts
192.168.188.101 master
192.168.188.102 worker1
192.168.188.103 worker2
记得要一一对应。
2.5 配置ssh免密登陆。
配置ssh免密登录
原理:通过创建无密码公钥的方式,将公钥传给对方。使用ssh协议连接时,会寻找authorized_keys文件中存放的公钥,如果有目标主机的公钥则将公钥传给目标主机,目标主机用自己的私钥和公钥进行匹配,正确匹配之后则认为两者可信,即不需要密码就可以登录
实现节点之间免密服务原理:
通过把所有节点的公钥写入authorized_keys文件中,再把这个文件传输给每一台节点,此时所有节点都有了其他节点的公钥,则登录时就不需要输入密码
在每台主机上输入 ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
创建一个无密码的公钥,-t是类型的意思,dsa是生成的密钥类型,-P是密码,’’表示无密码,-f后是秘钥生成后保存的位置创建完成后,会出现两个文件
id_dsa 存放私钥
id_dsa.pub 存放公钥
输入 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
将公钥id_dsa.pub添加进authorized_keys执行后会创建authorized_keys文件,这个文件用来放其他节点的公钥。
在非master节点上输入 ssh-copy-id -i ~/.ssh/id_dsa.pub master
将自己的公钥传输给master节点。这时,master节点拥有所有节点的公钥。
在master中输入
scp -r /home/hadoop/.ssh/authorized_keys root@master:/home/hadoop/.ssh/
scp -r /home/hadoop/.ssh/authorized_keys root@worker1:/home/hadoop/.ssh/
scp -r /home/hadoop/.ssh/authorized_keys root@worker2:/home/hadoop/.ssh/
在每一台主机上输入 chmod 600/home/hadoop/.ssh/authorized_keys 修改文件权限
重启服务 service sshd restart
此时每个节点都保存了所有的公钥,节点之间也就可以ssh免密登录了(第一次仍然需要密码)
参考:https://blog.csdn.net/qq_43605654/article/details/90746563 ,略做修改。
2.6 启动hadoop集群
在master上运行一次 hdfs namenode -format
在hadoop根目录下,sbin/start-all.sh。
启动完成后,master上输入jps应有 namenode,secondarynamenode,resourcemamage,
worker上输入jps应有 datanode,nodemanager。
用浏览器看看 master:9870
->DataNode
两个节点active。
试试放点东西:
bin/hdfs dfs -mkdir /test
bin/hdfs dfs -put test.txt /test
bin/hdfs dfs -ls /
全文完。
后记:
踩了坑看看logs。