美文网首页
【机器学习实战】大数据与MapReduce

【机器学习实战】大数据与MapReduce

作者: 吵吵人 | 来源:发表于2019-02-27 20:55 被阅读0次

    当运算需求超出了当前资源的运算能力,一、可以考虑购买更好的机器;二、可以将计算转换成并行作业,MapReduce就提供了这种方案的一个具体实施框架。

    MapReduce:分布式计算的框架

    MapReduce是一个软件框架,可以将单个计算工作分配给多台计算机执行。工作流程包括map和reduce阶段。第一阶段,输入数据被切片分发到节点上,各个节点对本地数据进行处理对应的运算代码叫做mapper。第二阶段,每个mapper输出的结果通过某种方式组合后,分发给各个节点进行下一步的处理,相应的代码被称为reducer。以计算一大堆数据的最大值为例,每个mapper产生一个最大值,reducer负责比较所有mapper输出的最大值,得到全局的最大值。

    关于MapReduce的学习要点:

    • 主节点控制 MapReduce 的作业流程
    • MapReduce 的作业可以分成map任务和reduce任务
    • map 任务之间不做数据交流,reduce 任务也一样
    • 在 map 和 reduce 阶段中间,有一个 sort 和 combine 阶段数据被重复存放在不同的机器上,以防止某个机器失效
    • mapper 和 reducer 传输的数据形式为 key/value对

    Hadoop流

    Hadoop是MapReduce框架的一个开源实现,可以运行除Java之外其他语言编写的分布式程序。Hadoop流(http://hadoop.apache. org/ common/docs/current/streaming.html)很像Linux系统中的管道(管道使用符号 | ,可以将一个命令的输出作为另一个命令的输入)。如果用mapper.py调用mapper,用reducer.py调用reducer,那么Hadoop流就可以像Linux命令一样执行。
    例如:

    cat inputFile.txt | python mapper.py | sort | python reducer.py > 
    outputFile.txt
    

    分布式均值和方差计算的mapper


    这是一个简单的例子,测试mapper,在Linux终端执行以下命令:
    cat inputFile.txt | python mrMeanMapper.py
    

    在Windows系统下,在DOS窗口输入以下命令:

    python mrMeanMapper.py < inputFile.txt
    

    分布式均值和方差计算的reducer


    测试reducer,在Linux终端执行以下命令:

    %cat inputFile.txt | python mrMeanMapper.py | python mrMeanReducer.py
    

    在Windows系统下,在DOS窗口输入以下命令:

    %python mrMeanMapper.py < inputFile.txt | python mrMeanReducer.py
    

    在Amazon网络服务上运行Hadoop程序

    如果要在100台机器上同时运行mapReduce作业,那么就需要找到100台机器,可以采取购买方式,或者从其他地方租用。Amazon网络服务(AWS)允许用户按时长租借计算资源。弹性MapReduce(EMR)是Amazon上一个常用的工具,可以帮助用户在AWS上运行Hadoop流工作。

    相关文章

      网友评论

          本文标题:【机器学习实战】大数据与MapReduce

          本文链接:https://www.haomeiwen.com/subject/ppkquqtx.html