Hadoop集群安装配置
当hadoop采用分布式模式部署和运行时,存储采用分布式文件系统HDFS,此时HDFS名称节点和数据节点位于不同的机器上;
数据就可以分布到多个节点,不同的数据节点上的数据计算可以并行执行了,这时候MR才能发挥其本该有的作用;
没那么多机器怎么办~~~~多几个虚拟机不就行了
克隆虚拟机
电脑存储不够的可以使用链接克隆的方式
修改虚拟机的网络配置~
以其中一个slave节点为例
- 启动虚拟机
- 关闭网卡服务,然后修改节点的ip
由于本节点启动时默认没有启动网卡,所以就不关闭了,
- 修改节点ip为静态IP
vi /etc/sysconfig/network-scripts/ifcfg-ens160
修改成如下地址:
- 设置网卡自动启动后启动网卡
[root@node1 hadoop]# vi /etc/sysconfig/network-scripts/ifcfg-ens160
[root@node1 hadoop]# systemctl enable NetworkManager
Created symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service → /usr/lib/systemd/system/NetworkManager.service.
Created symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service → /usr/lib/systemd/system/NetworkManager-dispatcher.service.
Created symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service → /usr/lib/systemd/system/NetworkManager-wait-online.service.
[root@node1 hadoop]# systemctl start NetworkManager
[root@node1 hadoop]#
- ping一下其他节点
可以正常ping通,我们的机器就准备好了
为了便于区分节点,我们还需要修改各个节点的主机名
修改之后的具体配置如下
节点 | 节点名 | ip |
---|---|---|
master | master | 192.168.8.135 |
slave1 | slave1 | 192.168.8.136 |
slave2 | slave2 | 192.168.8.137 |
slave3 | slave3 | 192.168.8.138 |
然后在虚拟机各个节点中添加映射关系
记得修改之后重启虚拟机
之后登录虚拟机就很容易辨认出当前是处于Master节点上进行操作,不会和Slave节点产生混淆。
重启之后测试一下配置是否成功
- 在master节点上ping一下slave*节点
#ping 3次就停止
ping slave1 -c 3
其他的节点自己测试一下就可以,这里不再展示
如果ping不通:
1,可能你没有重启机器
2,配置的文件内容检查一下
接下来就是跟分布式操作一样~
SSH无密码登陆节点
cd ~/.ssh
ssh-keygen -t rsa
重新生成公钥
删除原来的authorized_keys文件,然后将公钥保存到 新建的authorized_keys文件中
cat ./id_rsa.pub >> ./authorized_keys
接下来验证一下
ssh master
仍然需要密码;
不要慌,这里是因为权限的问题,
首先,授予 .ssh文件夹 700权限
[hadoop@master .ssh]$ chmod 700 ../.ssh
授予authorized_keys600权限
[hadoop@master .ssh]$ chmod 600 authorized_keys
[hadoop@master .ssh]$ ssh master
Activate the web console with: systemctl enable --now cockpit.socket
然后再次登录~成功不需要密码登录了
接下来将master节点公钥传输到slave*节点上
以slave1为例
[hadoop@master .ssh]$ scp id_rsa.pub hadoop@slave1:~/.ssh/
The authenticity of host 'slave1 (192.168.8.136)' can't be established.
ECDSA key fingerprint is SHA256:OvrL3M2MTclz6YoLzMEf7HZBZceFwTMe2s8YSsdPExo.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'slave1,192.168.8.136' (ECDSA) to the list of known hosts.
hadoop@slave1's password:
id_rsa.pub 100% 567 108.9KB/s 00:00
[hadoop@master .ssh]$
下面进入salve1节点
将公钥内容保存到authorized_keys
然后授权 .ssh文件夹 700 authorized_keys文件 600
[hadoop@slave1 ~]$ cd ~/.ssh
[hadoop@slave1 .ssh]$ ls
id_rsa.pub known_hosts
[hadoop@slave1 .ssh]$ cat id_rsa.pub >> authorized_keys
[hadoop@slave1 .ssh]$ chmod 700 ../.ssh
[hadoop@slave1 .ssh]$ chmod 600 authorized_keys
然后在master节点上登录salve1节点,
可以看到不需要密码登录
接下来如法炮制其他节点课,可以直接将slave1的公钥和authorized_keys文件传到其他节点上;
发现这种方法并不可行,只能从master节点操作,
因为这里有一步忽略了 sha256
下面从master节点操作:
同理slave3也是这么操作~略
配置path变量
这个就像配置javahome那样,可以使得hadoop命令可以在任何位置运行
有很多种方式配置path变量
选一种即可:
进入etc/profile.d,新建一个hadoop文件
保存后退出
注意:如哦保存时提示没有权限,则切换root用户
source hadoop.sh
验证hadoop环境变量配置是否成功