虚拟机配置hadoop攻略(上)

笔者查阅大量资料,非常草狗,内心非常崩溃的终于搞好了。。。为了防止以后忘了。。特意写此博客,做总结

 

首先声明硬件环境

1. 多台电脑,每台电脑上一个虚拟机,挂载一个ubuntu linux系统。。

2. 每台电脑的windows系统有一个静态ip,每个虚拟机也有一个自己的静态ip

3. 电脑之间连接采用hub连接。 (如果你和笔者一样没有hub,可以使用路由器,把所有的网线都插到LAN口,关闭路由器的dhcp功能,避免自动分配ip就可以啦)

 

基本框架

我的节点配置 (完全分布式集群)

Master (job tracker/namenode) 

192.168.0.32

h1

Slave (task tracker/datanode)

192.168.221.131

h2

- 所有虚拟机的用户名: hadoop_admin

 

 

---------------华丽的分割线----------------

 

安装VMware以及ubuntu

 

这种东西请自己百度安装,如果这个东西也搞不定,其他的请不要往下看了,真的不适合你。

需要注意的是:如果你电脑本身的系统是64位的,cpu也支持64位,但是安装64位ubuntu的时候,提示cpu报错! 说明你需要在bios里设置一下cpu的虚拟机兼容模式,具体修改项请百度。

 

下载备用软件

 

1. 先去下载一个jdk,笔者在这里使用的是jdk1.7.0_79。 (链接:  http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

2.下载hadoop, 笔者这里使用的是 hadoop-2.6.4. (链接:略。 这里需要注意的是,应该下载后缀为tar.gz 的文件,切莫下载src.tar.gz的,因为那个需要重新编译的版本)

3. 更新ssh以及apt-get

为什么要干这个?因为你的电脑如果一旦开始改了静态ip,可能就不能上网了。。。

 

首先保证你的电脑能够上网。虚拟机默认是VAT模式,如果你的电脑本身能够上网,那么虚拟机也可以。

之后,虚拟机中,打开terminal,输入命令

sudo apt-get update

(如果询问你密码,直接输入电脑进入的密码即可。)

更新完毕后,继续输入指令

sudo apt-get upgrade

完毕后,继续。。我们更新ssh

sudo apt-get install openssh-server

之后运行

sudo apt-get install ssh

至此,我们已经更新了ssh,可以正式开始安装了!!!!(虐心的还在后面)

 

配置静态ip

 

配置静态IP,我们需要将虚拟机的虚拟网卡设置成“桥接模式”。

(这里补充一下,虚拟机网卡设置模式一共是三种,默认是NAT模式,该模式下虚拟机对外和主机使用同样的IP。 桥接模式是将虚拟机像一台独立的计算机一样接入网络。 而“仅主机模式” 是仅仅使得虚拟机可以和宿主机相互ping通)

 

(注意,在下面的配置中,所有的IP,必须在同一网段,包括虚拟机和宿主机)

 

首先我们要确保,在打开虚拟机之前,我们所有的宿主机之间能够ping通,也就是宿主机所在的网络是没有问题的。

如果你不知道怎么检查,请自行百度。

 

接着,我们在Vmware顶部的菜单栏中,点击虚拟机 ===> 设置 ===> 网络适配器,之后在右边选择“桥接模式”,同时选中“复制物理网络连接状态”

 

 

接下来,我们开始配置虚拟机的静态IP。

进入虚拟机后,打开terminal,运行如下命令

sudo vi /etc/network/interfaces

之后在该文件中添加如下代码

 

auto lo #localhost

iface lo inet loopback #这一段配置的是localhost/127.0.0.1,可保留

#加上eth0, 网卡0的配置

auto eth0

iface eth0 inet static #静态ip

address 192.168.0.32

netmask 255.255.255.0

gateway 192.168.0.1

dns-nameserver 192.168.0.1 8.8.8.8

 

重启网络

 

sudo /etc/init.d/networking restart #重启后,才能establish eth0

whereis ifup #...

sudo /sbin/ifup eth0 #手动修改eth0后必须启用eth0才有效,此文有讲

sudo /sbin/ifdown eth0

sudo /etc/init.d/networking restart #再重启

ifconfig #查看IP,显示eth0信息

 

接下来,配置DNS

sudo vi /etc/resolv.conf

在其中加入如下 google的公共DNS,

nameserver 192.168.0.1
nameserver 8.8.8.8

 

在下来,配置HOST

sudo vi /etc/hosts

加上

192.168.0.32    h1

192.168.221.131 h2

(这里,h1是我master的名称和地址,h2是我唯一一个slave的名称和地址,你可以自己取名和填写地址,但是请保证全局一致)

 

再下来配置host name

whereis hostname
sudo vi /etc/hostname

在文件中,写上h1

(注意,如果是h2 h3……等等机器,这里就写h2, h3)

运行 sudo hostname h1,使hostname文件更改生效。

 

 

截止这里,我们已经配置完h1,请在其他的机器上相同配置。

之后检查是否成功,如果成功,所有虚拟机之间应该能够ping通,如果不能,请检查

 

 

为hadoop创建特定操作用户

1. 创建用户
sudo adduser hadoop_admin –home /home/hadoop_admin –u 545
2. 将用户加入到可以执行sudo的用户列表

sudo vi /etc/sudoers

将如下信息加入到文件中(白字部分),这样切换到hadoop_admin账户时也有权限使用sudo指令了

clip_image013

 

 

生成RSA KEY,完成SSH无密码互通

 SSH无密码原理

        Master(NameNode |JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode |Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。

        当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。

        重要过程是将客户端Master复制到Slave上。

 

下面我们开始

1. 输入 su hadoop_admin 命令,切换到hadoop_admin账户。这时候,屏幕应该显示 hadoop_admin@h1:

2. Master机器(h1)上生成密码对

ssh-keygen –t rsa –P

  这条命令是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsaid_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下。

看到如下图案,说明生成成功。

+--[ RSA 2048]----+    

|.   E.=.o        |    

|.o = @ o .       |    
|. * * =          |    
| o o o =         |    
|  .   = S        |    
|       .         |    
|                 |    
|                 |    
|                 |    
+-----------------+

 

 

 我们这时候可以查看"/home/hadoop_admin/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个刚生产的无密码密钥对

 

3. 生成授权文件

hadoop_admin@h1:~/.ssh$ cat id_rsa.pub >> authorized_keys

cat命令是将公钥文件id_rsa.pub加入到授权文件authorized_keys中。

同时我们还有一件事儿,我们还需要给新生成的授权文件以及.ssh文件夹提高权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能)。

备注:如果不设置,一会用ssh登入的时候依然需要密码,笔者在这里浪费很多时间。

hadoop_admin@h1:~/.ssh$ chmod 644 authorized_keys
hadoop_admin@h1:~/.ssh$ cd ~
hadoop_admin@h1:~$ chmod 700 .ssh

 

4. 设置SSH配置

root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。

RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile /home/hadoop_admin/.ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

有一些系统已经有这三行,但是可能被#注释了起来,请把前面的#去掉。

 

 

 

(未完待续)

posted @ 2016-08-22 14:11  baymax(●—●)  阅读(2254)  评论(0编辑  收藏  举报