注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

和申的个人主页

专注于java开发,1985wanggang

 
 
 

日志

 
 

Linux和ApacheHadoop实现云计算,有关Hadoop集群概念介绍  

2011-04-07 23:20:50|  分类: Hadoop |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
    现在云计算是一个热点话题,IBM?、Google、VMWare和Amazon等公司已经开始提供云计算产品和战略,本文向大家介绍一下使用Linux和ApacheHadoop进行云计算的相关知识。

    本节和大家一起学习一下有关使用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集群方面的内容介绍完毕。

  评论这张
 
阅读(810)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016