CentOS的安装
- 首先准备好centos的两个镜像文件,这里我们使用的是centos6.5版本
- 然后打开VMware,创建新的虚拟机(选择经典模式)。这里需要注意的是,要将虚拟磁盘储存为单个文件,这样在以后的移动、复制过程中,文件不容易丢失
- 完成后启动虚拟机,第一次的启动大概需要等待20分钟(因为要更新许多文件QAQ)
网络环境准备nat配置
相关知识:桥接模式和NAT模式的区别
- 右击右下角发亮的两台电脑的图标(网络适配器),进入设置,出现如图界面
选择桥接模式,就相当于把虚拟机当做了和Windows主机并列的计算机。但是桥接模式在一些场合并不合适,如在公司、学校,有时会给每个人的主机分配一个固定的IP地址,这时如果虚拟机当做并列主机连入网络的话,就需要为虚拟机分配一个新的IP地址,就可能与其他计算机的IP地址产生冲突,因此在学校公司我们往往使用NAT模式。
NAT模式在保证了虚拟机上网的同时,又不需要和主机配置相同网段的IP地址。相当于在自己的Windows主机中,构建了一个局域网网络环境,使虚拟机可以通过Windows网络上网。
相关知识:Windows中ipconfig命令不能用如何解决?
在第一次输入ipconfig命令时,出现这种错误:“XX”命令不是内部或是外部命令,也不是可运行的程序
解决方法:
首先在系统中查找ipconfig.exe的位置,并复制这个文件的路径
然后设置环境变量,环境变量中的值相当于一个快捷方式,用于告诉系统,该到那个地方去找一些命令行中输入的命令。控制面板-》系统和安全-》系统-》高级系统设置-》环境变量,编辑系统变量中的PATH变量,加上刚刚ipconfig.exe所在的路径,点击确定,完成配置
这时可能控制台中输入ipconfig仍然报错,这是因为控制台是配置前打开的,仍然保留配置前的设置。我们关闭控制台并重新打开,就可以了
开始配置
- 首先,我们要为NAT模式下的网络重新分配一个网段,防止与主机网段冲突。点击右上角的编辑-》虚拟网络编辑器,移除net模式的VMnet8再重新添加VMnet8,可以看到VMnet8的子网地址为192.168.186.0,与主机的IP地址192.168.0.103不处于一个网段(一个186,一个0),避免了IP地址的冲突
值得注意的是,net模式设置完后需要重新进行初始化,我们先将net模式调到桥接模式,再重新调回net模式,完成初始化
- 然后,我们要对linux系统中的文件进行配置
修改解读
- 本来,默认通过dhcp方式自动获取IP。动态主机配置协议,简称DHCP,是一个应用于局域网的网络协议,该协议允许服务器向客户端动态分配IP地址和配置信息。我们改为static,让IP地址固定
- IPADDR为此虚拟机分配一个IP地址,186是我们设置的网段,14是我们自己取的地址。这里取14是个人习惯,我习惯把第一个取为10,然后后边每台虚拟机+1,这是第四台,所以我取14.
- netmask设置子网掩码。子网掩码不能单独存在,必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
子网掩码的设定必须遵循一定的规则,必须是多个 1 相连,多个 0 相连的形式,总共 8 * 4 = 32 位。如子网掩码 255.255.255.0 ,转为二进制是11111111.11111111.11111111.00000000。1的部分就是网络地址部分,0的部分就是主机地址部分。255.255.255.0这个子网掩码可以容纳2的8次方(台)电脑,也就是256台,但是有两个IP是不能用的,位数全为0为网络号,位数全为1为广播号,减去这两台,就是254台。
IP地址的子网掩码设置不是任意的。如果将子网掩码设置过大,也就是说子网范围扩大,那么,根据子网寻径规则,很可能发往和本地机不在同一子网内的目的机的数据,会因为错误的判断而认为目的机是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃,使数据不能正确到达目的机,导致网络传输错误;如果将子网掩码设置得过小,那么就会将本来属于同一子网内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关的负担,造成网络效率下降。因此,子网掩码应该根据网络的规模进行设置。
4.gateway设置网关,这个数据就是网络编辑器里的数据192.168.186.2。网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192. 168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。
如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此。 所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)
5.dns使用常用的联通域名。域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP数串。
- 配置完成后,另外打开一个控制台,重启网络服务
这时输入ifconfig,发现IP地址与设置的相同,说明文件修改成功
终端secureCRT配置
另外我们工作中一般不会直接登录到机器中操作,而是通过终端远程操作,这里我们使用secureCRT
打开secureCRT,点击new session,在hostname中输入虚拟机IP地址,username输入虚拟机用户名,点击完成。
如何安装并激活secureCRT,参考百度
Hadoop集群搭建
值得注意的是,分布式环境需要多个机器组成集群,我们这里以三个机器为例
我们首先复制两次得到三个虚拟机。这里注意,复制时环境一定要在挂起或者关机状态,因为运行状态下操作系统的环境经常变动,很容易丢失信息。
复制完成后要注意,由于slave1、2与master完全相同,所以IP地址相同发生冲突,上不了网,我们需要先对其进行修改
我们先像配置第一台机器那样,配置1、2的IP地址并重新启动,但是发现还是上不了网。
这是因为我们复制过来,势必把之前网卡的属性也复制过来。ifconfig发现,尽管IP地址改变了,但是网卡还是相同的(hwaddr)。
我们点击网络适配器-》设置,移除网络适配器,重新添加。这时重新ifconfig发现网卡变了,这是就可以上网了
slave2同理,这样三台机器都搭建完成并可以上网
由于Hadoop需要Java支持,我们要先在虚拟机中安装Java
完成后检查是否共享成功,若共享成功我们会在mnt的hgfs目录下发现share_folder文件夹。将这两个文件全部复制到src中,执行jdk。
正式安装Hadoop集群
到目前我们总共配置了6各文件,下一步配置本地网络
打开/etc/hosts,改这个文件的目的:不改的话,访问只能通过IP地址访问,在建立了这种映射关系后,可以通过访问hostname来访问节点
为了避免以后出现网络操作失败的问题(网络传输的问题难以排查),首先把系统防火墙关闭,命令行:/etc/init.d/iptables stop
还有selinux,命令行:setenforce 0
接下来我们需要建立每台机器间的互信关系,即在远程访问其他机器的IP或是hostname时不再需要密码验证
首先ssh-keygen,然后进入ssh隐藏目录,ls发现此时ssh中存在公匙和死匙两个文件。我们首先通过touch创建authorized
_keys文件,然后将三台虚拟机公匙中的内容全部复制到每台虚拟机的authorized_keys中。
最后注意的是,新建后,需要更改authorized_keys文件的用户权限,不然文件无法生效,ssh公钥生效需满足至少下面两个条件:
1 .ssh目录的权限必须是700;
2 .ssh/authorized_keys文件权限必须是600;
我们执行下面命令来实现
chmod 600 ~/.ssh/authorized_keys
问题:总是解决不了 为何authorized_keys创建完成后远程连接仍然要密码