本节继续和大家一起学习利用Cloudera实现Hadoop 方法,上节我们介绍了利用Cloudera实现Hadoop 的规划,本节就详细介绍一下其安装设置,希望本节的介绍对你的学习有所帮助。
利用 Cloudera 实现Hadoop
安装
规划好了就开始安装Hadoop,如前言中所说使用Cloudera的Hadoop发布版安装Hadoop是十分方便的,首先当然是在每台主机上一个干净的操作系统(我用的是Ubuntu 8.04,用户设为Hadoop,其它的版本应该差不多),然后就是安装Hadoop了(这样安装的是Hadoop-0.20,也可以安装Hadoop- 0.18的版本,反正安装步骤都差不多。注意,不能同时启用Hadoop-0.20和Hadoop-0.18)。由于每台机器安装步骤都一样,这里就写出了一台主机的安装步骤,主要分为以下几个步骤:
设置Cloudera的源
生成Cloudera源文件(这里采用的是Hadoop-0.20版本):
sudo vi /etc/apt/sources.list.d/cloudera.list#稳定版(Hadoop-0.18)#deb http://archive.cloudera.com/debian hardy-stable contrib#deb-src http://archive.cloudera.com/debian hardy-stable contrib#测试版(Hadoop-0.20)deb http://archive.cloudera.com/debian hardy-testing contribdeb-src http://archive.cloudera.com/debian hardy-testing contrib生成源的密钥:
sudo apt-get install curlcurl -s http://archive.cloudera.com/debian/archive.key | sudo apt-key add -
安装Hadoop
更新源包索引:
sudo apt-get updatesudo apt-get dist-upgrade安装Hadoop:
sudo apt-get install hadoop-0.20 hadoop-0.20-conf-pseudo
部署
安装好这几台主机的Hadoop环境之后,如果要实现Hadoop 还要对它们进行分布式运行模式的部署了,首先是设置它们之间的互联。
主机互联
Hadoop环境中的互联是指各主机之间网络畅通,机器名与IP地址之间解析正常,可以从任一主机ping通其它主机的主机名。注意,这里指的是主机名,即在Hadoop-01主机上可以通过命令ping Hadoop-02来ping通Hadoop-02主机(同理,要求这几台主机都能相互Ping通各自的主机名)。可以通过在各主机的/etc /hosts文件来实现,具体设置如下:
sudo vi /etc/hosts127.0.0.1 localhost10.x.253.201 hadoop-01 hadoop-0110.x.253.202 hadoop-02 hadoop-0210.x.253.203 hadoop-03 hadoop-0310.x.253.204 hadoop-04 hadoop-0410.x.3.30 firehare-303 firehare-303将每个主机的hosts文件都改成上述设置,这样就实现了主机间使用主机名互联的要求。
注:如果深究起来,并不是所有的主机都需要知道Hadoop环境中其它主机主机名的。其实只是作为主节点的主机(如NameNode、 JobTracker),需要在该主节点hosts文件中加上Hadoop环境中所有机器的IP地址及其对应的主机名,如果该台机器作Datanode 用,则只需要在hosts文件中加上本机和主节点机器的IP地址与主机名即可(至于JobTracker主机是否也要同NameNode主机一样加上所有机器的IP和主机名,本人由于没有环境,不敢妄言,但猜想是要加的,如果哪位兄弟有兴趣,倒是不妨一试)。在这里只是由于要作测试,作为主节点的主机可能会改变,加上本人比较懒,所以就全加上了。:) 下面看一下Cloudera实现Hadoop 时的相关设置。
计算机帐号设置
Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同用户名的帐户。由于这里采用的是Cloudera发布的Hadoop包,所以并不需要这方面的设置,大家了解一下即可。
SSH设置
在 Hadoop 分布式环境中,主节点(NameNode、JobTracker) 需要通过 SSH 来启动和停止从节点(DataNode、TeskTracker)上的各类进程。因此需要保证环境中的各台机器均可以通过 SSH 登录访问,并且主节点用 SSH 登录从节点时,不需要输入密码,这样主节点才能在后台自如地控制其它结点。可以将各台机器上的 SSH 配置为使用无密码公钥认证方式来实现。 Ubuntu上的SSH协议的开源实现是OpenSSH, 缺省状态下是没有安装的,如需使用需要进行安装。下面再来看一下利用Cloudera实现Hadoop 过程中如何安装OpenSSH。
安装OpenSSH
安装OpenSSH很简单,只需要下列命令就可以把openssh-client和openssh-server给安装好: sudo apt-get install ssh
设置OpenSSH的无密码公钥认证
首先在Hadoop-01机器上执行以下命令:
hadoop@hadoop-01:~$ ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):Enter passphrase (empty for no passphrase):(在这里直接回车)Enter same passphrase again:(在这里直接回车)Your identification has been saved in /home/hadoop/.ssh/id_rsa.Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.The key fingerprint is:9d:42:04:26:00:51:c7:4e:2f:7e:38:dd:93:1c:a2:d6 hadoop@hadoop-01上述命令将为主机hadoops-01上的当前用户hadoop生成其密钥对,该密钥对被保存在/home/hadoop/.ssh/id_rsa 文件中,同时命令所生成的证书以及公钥也保存在该文件所在的目录中(在这里是:/home/hadoop/.ssh),并形成两个文件 id_rsa,id_rsa.pub。然后将 id_rsa.pub 文件的内容复制到每台主机(其中包括本机hadoop-01)的/home/hadoop/.ssh/authorized_keys文件的尾部,如果该文件不存在,可手工创建一个。
注意:id_rsa.pub 文件的内容是长长的一行,复制时不要遗漏字符或混入了多余换行符。
无密码公钥SSH的连接测试
从 hadoop-01 分别向 hadoop-01, hadoop-04, firehare-303 发起 SSH 连接请求,确保不需要输入密码就能 SSH 连接成功。注意***次 SSH 连接时会出现类似如下提示的信息:
The authenticity of host [hadoop-01] can't be established. The key fingerprint is: c8:c2:b2:d0:29:29:1a:e3:ec:d9:4a:47:98:29:b4:48 Are you sure you want to continue connecting (yes/no)?请输入 yes, 这样 OpenSSH 会把连接过来的这台主机的信息自动加到 /home/hadoop/.ssh/know_hosts 文件中去,第二次再连接时,就不会有这样的提示信息了。本节关于利用Cloudera实现Hadoop 的内容就介绍到这里。
【编辑推荐】