Mapreduce分布式并行编程

目录
  • 1.什么是并行计算
  • 2.现在mapreduce能做什么?
    • map:映射
    • reduce:做比较,工作整合,上下游
    • 有些操作放在map、reduce里面都可以
      • 1.project(投射)map完成
      • 2.filter(过滤)map完成
      • 3.key(汇集)
  • 数据SQL:
    • oss和hive的区别?
      • 1. 搭建各类环境
      • 2. 搭建、配置zookeeper
      • 3. 启动zookeeper
      • 4. 安装配置java
      • 5. 主从节点格式化
      • 6. 启动集群
      • 7. 安装Scala
      • 8. 启动spark集群
      • 9. jps查看已经启动的
  • 实验部分:

1.什么是并行计算

传统并行计算:共享同一个数据,通过锁来控制数据的读写,难度大,容易导致死锁,拓展性差。但是是实时的,细颗粒度计算,计算密集型

Mapreduce:对机器的要求低,拓展性难,便宜,拓展性强,批处理场景,非实时,数据密集型(傻大)

map:分配工作任务给不同的人,并让其完成工作(工作相互独立,不互相为上下环节)

reduce:把不同的结果集合并 再加上分布式

2.现在mapreduce能做什么?

map:映射

1.如小写字母变成大写字母 map

2.把年龄小于16岁的都去掉 map

3.把美元变成人民币 y=x∗6.3y=x * 6.3y=x∗6.3 map

4.地址库的一个翻译:省市县 map

5.(只要是一些处理数据相关的,都应当是在map上)

reduce:做比较,工作整合,上下游

1.统计年薪最高的人 (一个组)key

2.按照男女计算平均年龄 (俩个组)key

3.排序 reduce

有些操作放在map、reduce里面都可以

a-------->a----->A

map--------- reduce ×

前提:尽量要减少数据的流动,reduce阶段数据越少越好,能在map做就在map做掉

数据SQL:

Select name ,age,gender from people where id =3

1.project(投射)map完成

Select name ,age,gender

2.filter(过滤)map完成

id=3

3.key(汇集)

如:Select avg(age),gender from peoplemap:age,gender ---project
key:gender(F,M) //分为man和female

reduce:按照key进行汇集 F(25,38,23),M(45,23)

reduce:avg

如:Select max(age),gender from people这里和上面差不多,但是就没有key了放在同一个地方

oss和hive的区别?

在文件系统上

实验部分:

1. 搭建各类环境

为了模拟真实情况,我这里搭建了分布式的hadoop集群,分别有三台机器。一台做master,一台做slave。

2. 搭建、配置zookeeper

3. 启动zookeeper

/usr/zookeeper/zookeeper-3.4.10/bin/zkServer.sh start

4. 安装配置java

5. 主从节点格式化

6. 启动集群

/usr/hadoop/hadoop-2.7.3/sbin/start-all.sh

7. 安装Scala

8. 启动spark集群

/usr/spark/spark-2.4.0-bin-hadoop2.7/sbin/start-all.sh

9. jps查看已经启动的

以上就是Mapreduce分布式并行编程的详细内容,更多关于Mapreduce分布式的资料请关注我们其它相关文章!

(0)

相关推荐

  • java 矩阵乘法的mapreduce程序实现

    java 矩阵乘法的mapreduce程序实现 map函数:对于矩阵M中的每个元素m(ij),产生一系列的key-value对<(i,k),(M,j,m(ij))> 其中k=1,2.....知道矩阵N的总列数;对于矩阵N中的每个元素n(jk),产生一系列的key-value对<(i , k) , (N , j ,n(jk)>, 其中i=1,2.......直到i=1,2.......直到矩阵M的总列数. map package com.cb.matrix; import stati

  • MapReduce核心思想图文详解

    MapReduce核心编程思想,如图1-1所示. 图1-1 MapReduce核心编程思想 1)分布式的运算程序往往需要分成至少2个阶段. 2)第一个阶段的MapTask并发实例,完全并行运行,互不相干. 3)第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出. 4)MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序,串行运行. 小结:分析WordC

  • Java/Web调用Hadoop进行MapReduce示例代码

    Hadoop环境搭建详见此文章http://www.jb51.net/article/33649.htm. 我们已经知道Hadoop能够通过Hadoop jar ***.jar input output的形式通过命令行来调用,那么如何将其封装成一个服务,让Java/Web来调用它?使得用户可以用方便的方式上传文件到Hadoop并进行处理,获得结果.首先,***.jar是一个Hadoop任务类的封装,我们可以在没有jar的情况下运行该类的main方法,将必要的参数传递给它.input 和outpu

  • Java基础之MapReduce框架总结与扩展知识点

    一.MapTask工作机制 MapTask就是Map阶段的job,它的数量由切片决定 二.MapTask工作流程: 1.Read阶段:读取文件,此时进行对文件数据进行切片(InputFormat进行切片),通过切片,从而确定MapTask的数量,切片中包含数据和key(偏移量) 2.Map阶段:这个阶段是针对数据进行map方法的计算操作,通过该方法,可以对切片中的key和value进行处理 3.Collect收集阶段:在用户编写map()函数中,当数据处理完成后,一般会调用OutputColle

  • java实现MapReduce对文件进行切分的示例代码

    比如有海量的文本文件,如订单,页面点击事件的记录,量特别大,很难搞定.那么我们该怎样解决海量数据的计算? 1.获取总行数2.计算每个文件中存多少数据3.split切分文件4.reduce将文件进行汇总 例如这里有百万条数据,单个文件操作太麻烦,所以我们需要进行切分在切分文件的过程中会出现文件不能整个切分的情况,可能有剩下的数据并没有被读取到,所以我们每个切分128条数据,不足128条再保留到一个文件中 创建MapTask import java.io.*; import java.util.Ha

  • 云计算实验:Java MapReduce编程

    目录 [实验作业]简单流量统计 [实验作业]索引倒排输出行号 实验题目: MapReduce:编程 实验内容: 本实验利用 Hadoop 提供的 Java API 进行编程进行 MapReduce 编程. 实验目标: 掌握MapReduce编程. 理解MapReduce原理 [实验作业]简单流量统计 有如下这样的日志文件: 13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 2481 24681 200 13726

  • Guava - 并行编程Futures详解

    Guava为Java并行编程Future提供了很多有用扩展,其主要接口为ListenableFuture,并借助于Futures静态扩展. 继承至Future的ListenableFuture,允许我们添加回调函数在线程运算完成时返回值或者方法执行完成立即返回. 对ListenableFuture添加回调函数: Futures.addCallback(ListenableFuture<V>, FutureCallback<V>, Executor) 其中 FutureCallbac

  • 异步/多线程/任务/并行编程之一:如何选择合适的多线程模型?

    异步.多线程.任务.并行编程之一:选择合适的多线程模型 本篇概述: @FCL4.0中已经存在的线程模型,以及它们之间异同点: @多线程编程模型的选择. 1:异步.多线程.任务.并行的本质 这四个概念对应在CLR中的本质,本质都是多线程. 异步,简单的讲就是BeginInvoke.EndInvoke模式,它在CLR内部线程池进行管理: 多线程,体现在C#中,可以由类型Thread发起.也可以由ThreadPool发起.前者不受CLR线程池管理,后者则是.FCL团队为了各种编程模型的方便,还另外提供

  • 浅谈在Java中使用Callable、Future进行并行编程

    使用Callable.Future进行并行编程 在Java中进行并行编程最常用的方式是继承Thread类或者实现Runnable接口.这两种方式的缺点是在任务完成后无法直接获取执行结果,必须通过共享变量或线程间通信,使用起来很不方便. 从Java1.5开始提供了Callable和Future两个接口,通过使用它们可以在任务执行完毕后得到执行结果. 下面我们来学习下如何使用Callable.Future和FutureTask. Callable接口 Callable接口位于java.util.co

  • 关于Tensorflow分布式并行策略

    tensorFlow中主要包括了三种不同的并行策略,其分别是数据并行.模型并行.模型计算流水线并行,具体参考Tenssorflow白皮书,在接下来分别简单介绍三种并行策略的原理. 数据并行 一个简单的加速训练的技术是并行地计算梯度,然后更新相应的参数.数据并行又可以根据其更新参数的方式分为同步数据并行和异步数据并行,同步的数据并行方式如图所示,tensorflow图有着很多的部分图模型计算副本,单一的客户端线程驱动整个训练图,来自不同的设备的数据需要进行同步更新.这种方式在实现时,主要的限制就是

  • c#并行编程示例分享

    ParallelTest.cs 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Threading;using System.Threading.Tasks; namespace ParallelTest{    class ParallelTest    {        private static int Timed_Message(String arg_Mess

  • python 多进程并行编程 ProcessPoolExecutor的实现

    使用 ProcessPoolExecutor from concurrent.futures import ProcessPoolExecutor, as_completed import random 斐波那契数列 当 n 大于 30 时抛出异常 def fib(n): if n > 30: raise Exception('can not > 30, now %s' % n) if n <= 2: return 1 return fib(n-1) + fib(n-2) 准备数组 nu

  • Hadoop组件简介

    安装hbase 首先下载hbase的最新稳定版本 http://www.apache.org/dyn/closer.cgi/hbase/ 安装到本地目录中,我安装的是当前用户的hadoop/hbase中 tar -zxvf hbase-0.90.4.tar.gz 单机模式 修改配置文件 conf/hbase_env.sh 配置JDK的路径 修改conf/hbase-site.xml hbase.rootdir file:///home/${user.name}/hbase-tmp 完成后启动 b

  • JavaScript mapreduce工作原理简析

    谷歌在2003到2006年间连续发表了三篇非常有影响力的文章,分别是2003年在SOSP上发布的GFS,2004年在OSDI上发布的MapReduce,以及2006年在OSDI上发布的BigTable.GFS是文件系统相关的,其对后来的分布式文件系统设计具有指导意义:MapReduce是一种并行计算的编程模型,用于作业调度:BigTable是一个用于管理结构化数据的分布式存储系统,构建在GFS.Chubby.SSTable等Google技术之上.相当多的Google应用使用了这三种技术,比如Go

  • C#并发编程入门教程之概述

    写在前面 并发编程一直都存在,只不过过去的很长时间里,比较难以实现,随着互联网的发展,人口红利的释放,更加友好的支持并发编程已经成了主流编程语言的标配,而对于软件开发人员来说,没有玩过并发编程都会有点不好意思.本系列文章将会以C#语言为主,详细介绍并发编程. 什么是并发编程,其实很简单,并发编程就是在一台处理器上同时做多件事情,并发编程的目标就是充分利用处理器的每一个核,以达到最高的处理性能.举个例子,服务器在响应第一个请求的同时响应第二个请求. 关于并发编程的几个误解 误解一:并发编程就是多线

  • .NET Core 中的并发编程

    并发编程 - 异步 vs. 多线程代码 并行编程是一个广泛的术语,我们应该通过观察异步方法和实际的多线程之间的差异展开探讨. 尽管 .NET Core 使用了任务来表达同样的概念,一个关键的差异是内部处理的不同. 调用线程在做其他事情时,异步方法在后台运行.这意味着这些方法是 I/O 密集型的,即他们大部分时间用于输入和输出操作,例如文件或网络访问. 只要有可能,使用异步 I/O 方法代替同步操作很有意义.相同的时间,调用线程可以在处理桌面应用程序中的用户交互或处理服务器应用程序中的同时处理其他

随机推荐

其他