天天看点

《Hadoop MapReduce实战手册》一1.8 在分布式集群环境中设置Hadoop

本节书摘来异步社区《hadoop mapreduce实战手册》一书中的第1章,第1.8节,作者: 【美】srinath perera , thilina gunarathne 译者: 杨卓荦 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

hadoop mapreduce实战手册

hadoop的部署包括一套hdfs、一个jobtracker和多个tasktracker。在1.5节中,我们讨论了hdfs的部署。为了设置hadoop,我们需要配置jobtracker和tasktracker,然后在hadoop_

home/conf/slaves文件中指定tasktracker列表。当我们启动jobtracker时,它会启动相应的tasktracker节点列表。图1-5描述了一套完整的hadoop部署。

《Hadoop MapReduce实战手册》一1.8 在分布式集群环境中设置Hadoop

准备工作

无论使用的是单台机器还是多台机器,本节都适用。如果你用的是多台机器,则应该选择一台机器作为主节点,用于运行hdfs namenode和jobtracker进程。如果你使用的是单台机器,则可以用它既作主节点,又作从节点。

在所有用于安装hadoop集群的机器上安装java。

操作步骤

让我们通过设置jobtracker和tasktracker来设置hadoop。

在每一台机器上,创建一个目录,用于存放hadoop数据。我们把这个目录称作hadoop_

data_dir。然后创建三个子目录,hadoop_data_dir/data、hadoop_data_dir/local和

hadoop_data_dir/name。

在所有机器上设置ssh密钥,这样我们就可以从主节点登录到所有的节点。1.5节详细介绍了ssh设置。

使用>tar zxvf hadoop-1.x.x.tar.gz命令把hadoop发行包解压缩到所有机器的相同位置。你可以使用任何hadoop的1.0分支发行包。

在所有机器上,编辑hadoop_home/conf/hadoop-env.sh,删除文件中java_home行的注释,并将其指向你的本地java安装目录。例如,如果java安装在/opt/jdk1.6下,那么就要将java_home行改为export java_home=/opt/jdk1.6。

将主节点(运行jobtracker和namenode的机器)的ip地址作为一行放置在hadoop_home/conf/

master中。如果你正在进行单节点部署,则保留当前值,填写为localhost。

然后将所有从节点的ip地址写入hadoop_home/conf/slaves文件,每行一个独立的ip地址。

在每个节点的hadoop_home/conf目录里面,将以下内容添加到core-site.xml、hdfs-

site.xml和mapred-site.xml中。在添加这些配置之前,要先将master_node字符串替换为主节点的ip地址,hadoop_data_dir替换为第一步创建的目录。

将namenode的url添加到hadoop_home/conf/core-site.xml中。

在hadoop_home/conf/hdfs-site.xml内添加元数据(名称空间)和本地数据存储的位置1:

mapreduce本地目录是hadoop用来存储所用临时文件的位置。在hadoop_home/conf/mapred-site.xml中添加jobtracker的位置。hadoop将用这个地址来管理作业。最后一个属性设置每个节点最大的map任务数,该值通常与(cpu)核数相同。

要格式化新的hdfs文件系统,需要在hadoop的namenode(主节点)上运行以下命令。如果在前一节中已经完成了hdfs安装,可以跳过这一步。

在主节点上,将工作目录跳转到hadoop_home,并运行以下命令:

在主节点和从节点上,通过ps | grep java命令(如果你使用的是linux)或通过任务管理器(如果你使用的是windows)验证部署后的进程列表是否已经正常启动。主节点会列出四个进程—namenode、datanode、jobtracker和tasktracker,从节点有datanode和tasktracker。

浏览namenode和jobtracker的web监控页面。

你可以在${hadoop_home}/logs下找到日志文件。

通过使用hdfs命令行列出文件的方式,确认hdfs安装正确。

工作原理

正如本章简介中所描述的,hadoop的安装包括hdfs节点、jobtracker节点和工作节点。当我们启动namenode时,它通过hadoop_home/slaves文件查找datanode配置,并在启动时通过ssh在远程服务器上启动datanode。同样,当我们启动jobtracker时,它通过hadoop_home/slaves文件找到tasktracker配置,进而启动tasktracker。

更多参考在下一节中,我们将讨论如何使用分布式环境执行前面提及的wordcount程序。之后的几节将讨论如何使用mapreduce的监控ui监控分布式hadoop的安装。