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)

相关推荐

  • 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程序实现

    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

  • 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

  • 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. j

  • 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#并行编程之数据并行Tasks.Parallel类

    目录 一.并行概念 1.并行编程 2.数据并行 二.Parallel.Invoke():并行调用多个任务 . 三.Parallel.For(): for 循环的并行运算 四.Parallel.ForEach():foreach 循环的并行运算 五.线程局部变量 1.Parallel.For中定义局部变量: 2.Parallel.Each中定义局部变量: 六.Break.Stop中断与停止线程 七.Cancel取消循环 八.Handel Exceptions异常处理 一.并行概念 1.并行编程 在

  • C#并行编程之信号量

    一:CountdownEvent 这种采用信号状态的同步基元非常适合在动态的fork,join的场景,它采用“信号计数”的方式,就比如这样,一个麻将桌只能容纳4个人打麻将,如果后来的人也想搓一把碰碰运气,那么他必须等待直到麻将桌上的人走掉一位.好,这就是简单的信号计数机制,从技术角度上来说它是定义了最多能够进入关键代码的线程数. 但是CountdownEvent更牛X之处在于我们可以动态的改变“信号计数”的大小,比如一会儿能够容纳8个线程,一下又4个,一下又10个,这样做有什么好处呢?还是承接上

  • python中的多cpu并行编程

    目录 多cpu并行编程 安装 使用 submit 函数定义 多核cpu并行计算 多cpu并行编程 python多线程只能算并发,因为它智能使用一个cpu内核 python下pp包支持多cpu并行计算 安装 pip install pp 使用 #-*- coding: UTF-8 -*- import math, sys, time import pp def IsPrime(n): """返回n是否是素数""" if not isinstance

  • C#并行编程Task类用法介绍

    Task和ThreadPool的功能类似,可以用来创建一些轻量级的并行任务.对于将一个任务放进线程池 ThreadPool.QueueUserWorkItem(A); 这段代码用Task来实现的话,方式如下: Task.Factory.StartNew(A); 这两端代码的使用和实现的功能都十分相似.但和TheadPool相比,Task有着更多的功能,更加方便我们使用. 假如我们要创建三个任务,并等待它们完成.这个功能用TheadPool实现如下: using (ManualResetEvent

  • Python并行编程多线程锁机制Lock与RLock实现线程同步

    目录 什么是锁机制? Lock() 管理线程 RLock() 与Lock()的区别 什么是锁机制? 要回答这个问题,我们需要知道为什么需要使用锁机制.前面我们谈到一个进程内的多个线程的某些资源是共享的,这也是线程的一大优势,但是也随之带来一个问题,即当两个及两个以上的线程同时访问共享资源时,如果此时没有预设对应的同步机制,就可能带来同一时刻多个线程同时访问同一个共享资源,即出现竞态,多数情况下我们是不希望出现这样的情况的,那么怎么避免呢? Lock() 管理线程 先看一段代码: import t

随机推荐