虚拟机搭建hadoop集群的步骤及问题总结
1. 总体描述
尝试使用VMware搭建hadoop集群,共设置四台装有Hadoop环境的虚拟机,其中一台设置为主,其余为从,他们都在同一局域网下,网关为192.168.106.2:,各节点具体信息如下:
主机名 | IP | NameNode | SecondNameNode | DataNode |
---|
node1/hadoop-master | 192.168.106.200 | 是 | | |
node2 | 192.168.106.202 | | 是 | 是 |
node3 | 192.168.106.203 | | | 是 |
node4 | 192.168.106.204 | | | 是 |
2. 虚拟机安装centos7
参考文章: https://blog.csdn.net/qq_41938660/article/details/104184727
3. 虚拟机相关配置
3.1 设置固定IP
默认情况下centos7安装好后,他的IP是通过DHCP协议动态分配的,但在我们实际的使用虚拟机的过程是通过xshell之类的远程连接工具连接虚拟机后操作的,这就带来了一个问题,初始一阵子没问题,但是过几天xshell就连接不上
了,这是因为DHCP获取的动态IP改变
了,不在是我们xshell中记录的那个IP,所以我们需要把IP地址设置成静态的,将它固定下来。
3.2 可能遇到的问题
配置错误:
-
要保证开启vm的服务,重点是nat,(搜索->服务)
-
配置 vmware8虚拟网卡的地址,要和VMware中的网关在同一网段 win10 -> 设置 ->网络和Internet ->更改适配器
**参考文章:**https://www.cnblogs.com/lfhappy/p/10798400.html
3.2 启动centos直接进入命令行界面
-
打开虚拟机,启动centos,默认进入图形界面,使用root用户登录后,右键终端terminal
-
终端输入“init 3” 回车进入命令行
-
输入“systemctl get-default” 获得当前系统启动模式(mult-user.target 为命令行)
-
systemctl set-default multi-user.target 将图形改为命令行
-
systemctl set-default graphical.target 将命令行改成图形
3.3 安装sftp服务
参考文章: https://blog.csdn.net/zhangyingchengqi/article/details/103566761
3.4 关闭防火墙
- 查看防火墙状态
systemctl status firewalld
- 关闭防火墙
systemctl stop firewalld
- 取消开机自动开启防火墙
systemctl disable firewalld.service
4. 基础环境搭建
4.1 jdk安装
参考文章: https://www.cnblogs.com/dai123/p/15736690.html
遇到的问题:
-
自己没有jdk安装包,需要去Oracle的官网下载,下错版本了
错误提示:/bin/java: cannot execute binary file: Exec format error
参考文章:https://blog.csdn.net/qq_45699990/article/details/122004336?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-122004336-blog-78974185.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-122004336-blog-78974185.pc_relevant_antiscanv2&utm_relevant_index=2
4.2 时间同步
**参考文件:**https://blog.csdn.net/Owen_goodman/article/details/122807721
4.3 配置host文件
这个就是为了地址映射,比如说node1就映射成192.168.106.200。
- 在centos 7中的 /etc/hosts中添加一下信息:
192.168.76.200 node1 hadoop-master nn
192.168.76.202 hadoop-node2 snn dn1
192.168.76.203 hadoop-node3 dn2
192.168.76.204 hadoop-node4 dn3
- windows 中的 C:\Windows\System32\drivers\etc\hosts也加入上述信息。
5. 横向扩展虚拟机数量
遇到的问题:
- 将hadoop-master虚拟机复制一份,重命名成hadoop-node2,然后将其IP地址改成192.168.102.4后,使用 xshell还是连接不上。
原因: 当我们通过(service sshd status)命令查看ssh服务,发现其启动失败
解决方案: https://blog.csdn.net/sj349781478/article/details/122859361
6. 免密设置
node1/hadoop-master免密登录
- 第一步,先尝试着在node1节点登录node1节点,我们发现还是需要输入密码的:
- 在node1节点上生成公钥和私钥:
- 将生成的公钥放入受信任的authorized_keys文件中去:
- 再次尝试着登录node1,我们发现不需要密码了:
扩展到所有节点
- 通过scp将node1节点的公钥文件传入node2的/tmp目录,其余节点同理:
查看一下,是否上传成功了:
- node2 节点生成公钥和私钥,并将自己的公钥和node1的公钥存入受信任文件中:
注意:
这个图中的authorized_key是个错的还需要加一个‘s’。
- 其余节点同理操作,测试一下,可见不需要密码了:
遇到问题
-
scp命令不存在
注意:发送方和接受方都必须安装好scp
参考文章: https://blog.csdn.net/h254541060/article/details/48378489
7 Hadoop配置
在/etc/profile中配置hadoop的环境信息
注意两点:1. HADOOP_NAME 的路径配置正确
2.记得发布HADOOP_NAME ( export )
验证:
- 查看hadoop的版本信息和输入一个常用命令(hdfs)是否有如下提示:
修改hadoop配置文件
- 在hadoop271/etc/hadoop/hadoop-env.sh中添加 JAVA_HOME
- 在hadoop271/etc/hadoop/core-site.xml中添加如下配置,
注意:hadoopdata文件夹是不存在的,有hadoop自己创建,如果有请删除。
- 在hadoop271/etc/hadoop/slaves 中指定 三台datanode:
- 自己创建masters文件,添加如下信息,指定secondaryNameNode:
运行
在hadoop-master(node1)节点中输入start-dfs.sh运行hadoop,看看自己的那么node,secondaryName,DataNode是不是和当初设想对的上(在总体描述中的表格里面)。
8 测试
进程信息
- node1/hadoop-master
-
hadoop-node2(它既是datanode也是secondaryNameNode ,所以有两个进程)
-
hadoop-node3
- hadoop-node4和hadoop-node3类似
web页面测试
- 浏览器测试namenode http://node1:50070
- 浏览器测试node2 http://hadoop-node2:50090
注意:
如果访问不了,先关闭node1和node2的防火墙。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)