本节和大家一起学习一下有关使用Linux和ApacheHadoop进行云计算的相关内容,主要包括Hadoop集群的概念视图和MapReduce的流程,欢迎大家一起来学习有关云计算方面的知识。
Hadoop集群的概念视图和MapReduce的流程
设置ApacheHadoop
现在在LinuxVM上设置Hadoop集群,然后就可以在Hadoop集群上运行MapReduce应用程序。
ApacheHadoop支持三种部署模式:
单独模式:在默认情况下,Hadoop以非分布的单独模式运行。这个模式适合应用程序调试。
伪分布模式:Hadoop还可以以单节点的伪分布模式运行。在这种情况下,每个Hadoop守护进程作为单独的Java?进程运行。
全分布模式:Hadoop配置在不同的主机上,作为集群运行。
要想以单独或伪分布模式设置Hadoop,请参考Hadoop的网站。在本文中,我们只讨论以全分布模式设置Hadoop。
准备环境
在本文中,我们需要三台GNU/Linux服务器;一个作为主节点,另外两个作为从节点。
表1.服务器信息
服务器IP服务器主机名角色
9.30.210.159Vm-9-30-210-159主节点(NameNode和JobTracker)
9.30.210.160Vm-9-30-210-160从节点1(DataNode和TaskTracker)
9.30.210.161Vm-9-30-210-161从节点2(DataNode和TaskTracker)
每台机器都需要安装JavaSE6和Hadoop二进制代码。更多信息见参考资料。本文使用Hadoopversion0.19.1。
还需要在每台机器上安装SSH并运行sshd。SUSE和RedHat等流行的Linux发行版在默认情况下已经安装了它们。
设置通信
更新/etc/hosts文件,确保这三台机器可以使用IP和主机名相互通信。
因为Hadoop主节点使用SSH与从节点通信,所以应该在主节点和从节点之间建立经过身份验证的无密码的SSH连接。在每台机器上执行以下命令,从而生成RSA公共和私有密钥。
ssh-keygen–trsa
这会在/root/.ssh目录中生成id_rsa.pub。重命名主节点的id_rsa.pub(这里改名为59_rsa.pub)并把它复制到从节点。然后执行以下命令,把主节点的公共密钥添加到从节点的已授权密钥中。
cat/root/.ssh/59_rsa.pub>>/root/.ssh/authorized_keys
现在尝试使用SSH连接从节点。应该可以成功连接,不需要提供密码。
设置主节点
把Hadoop设置为全分布模式需要配置<Hadoop_home>/conf/目录中的配置文件。
在hadoop-site.xml中配置Hadoop部署。这里的配置覆盖hadoop-default.xml中的配置。
表2.配置属性
属性解释
fs.default.nameNameNodeURI
mapred.job.trackerJobTrackerURI
dfs.replication复制的数量
hadoop.tmp.dir临时目录
通过配置hadoop-env.sh文件指定JAVA_HOME。注释掉这一行并指定自己的JAVA_HOME目录。
exportJAVA_HOME=<JAVA_HOME_DIR>
在master文件中添加主节点的IP地址。
9.30.210.159
在slave文件中添加从节点的IP地址。
9.30.210.160
9.30.210.161
设置从节点
把hadoop-site.xml、hadoop-env.sh、masters和slaves复制到每个从节点;可以使用SCP或其他复制工具。
对HDFS进行格式化
运行以下命令对HDFS分布式文件系统进行格式化。
<Hadoop_home>/bin/hadoopnamenode-format
检查Hadoop集群
现在,可以使用bin/start-all.sh启动Hadoop集群。命令输出指出主节点和从节点上的一些日志。检查这些日志,确认一切正常。如果弄乱了什么东西,可以格式化HDFS并清空hadoop-site.xml中指定的临时目录,然后重新启动。
访问以下URL,确认主节点和从节点是正常的。
NameNode:http://9.30.210.159:50070
JobTracker:http://9.30.210.159:50030
现在,已经在云中设置了Hadoop集群,该运行MapReduce应用程序了。
建MapReduce应用程序
MapReduce应用程序必须具备“映射”和“缩减”的性质,也就是说任务或作业可以分割为小片段以进行并行处理。然后,可以缩减每个子任务的结果,得到原任务的结果。这种任务之一是网站关键字搜索。搜索和抓取任务可以分割为子任务并分配给从节点,然后在主节点上聚合所有结果并得到最终结果。
试用示例应用程序
Hadoop附带一些用于测试的示例应用程序。其中之一是单词计数器,它统计某一单词在几个文件中出现的次数。通过运行这个应用程序检查Hadoop集群。
首先,把输入文件放在分布式文件系统中(conf/目录下面)。我们将统计单词在这些文件中出现的次数。
$bin/hadoopfs–putconfinput
然后,运行这个示例应用程序,以下命令统计以“dfs”开头的单词出现的次数。
$bin/hadoopjarhadoop-*-examples.jargrepinputoutput'dfs[a-z.]+'
命令的输出说明映射和缩减过程:
前两个命令会在HDFS中生成两个目录,“input”和“output”。可以使用以下命令列出它们。
$bin/hadoopfs–ls
查看分布式文件系统中已经输出的文件。它以键-值对的形式列出以“dfs*”开头的单词出现的次数。
$bin/hadoopfs-catouput/*
现在,访问JobTracker站点查看完成的作业日志。
创建LogAnalyzerMapReduce应用程序:
现在创建一个Portal(IBMWebSphere?Portalv6.0)LogAnalyzer应用程序,它与Hadoop中的WordCount应用程序有许多共同点。这个分析程序搜索所有Portal的SystemOut*.log文件,显示在特定的时间段内应用程序在Portal上启动了多少次。在Portal环境中,所有日志分割为5MB的片段,很适合由几个节点并行地分析。本节关于使用Linux和ApacheHadoop进行云计算中Hadoop集群方面的内容介绍完毕。
【编辑推荐】