MapReduce

能用通俗的话跟别人讲解mapReduce是个什么

我与影子孤独终老i 提交于 2020-02-27 14:30:24
mapreduce是hadoop中实现海量分析的一个功能,主要功能就是分析计算,它通过一个mapreduce的代码公式,来实现分布式中的计算,例如统计文章中单词的个数,使用hadoop自带的一个代码公式,使用wordcount把分布式中block中的数统计出来。 来源: oschina 链接: https://my.oschina.net/u/4434424/blog/3164639

Hadoop入门

心不动则不痛 提交于 2020-02-27 07:46:06
概述 Hadoop是一个由Apache基金会所开发的 分布式系统 基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个 分布式文件系统 (Hadoop Distributed File System),简称HDFS。HDFS有高 容错性 的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问 应用程序 的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。 Hadoop能做什么? hadoop擅长日志分析,facebook就用Hive来进行日志分析,2009年时facebook就有非编程人员的30%的人使用HiveQL进行数据分析;淘宝搜索中的自定义筛选也使用的Hive;利用Pig还可以做高级的数据处理,包括Twitter、LinkedIn 上用于发现您可能认识的人,可以实现类似Amazon.com的协同过滤的推荐效果。淘宝的商品推荐也是!在Yahoo!的40

MapReduce初级编程实践

时间秒杀一切 提交于 2020-02-27 02:36:56
1. 实验目的和要求 1.1 实验目的 通过实验掌握基本的MapReduce编程方法; 掌握用MapReduce解决一些常见的数据处理问题,包括数据去重、数据排序和数据挖掘等。 1.2 实验软硬件环境 操作系统:Linux(建议Ubuntu16.04) Hadoop版本:2.7.1 1.3 实验要求 (一)编程实现文件合并和去重操作 对于两个输入文件,即文件A和文件B,请编写MapReduce程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新的输出文件C。下面是输入文件和输出文件的一个样例供参考。 输入文件A的样例如下: 20170101 x 20170102 y 20170103 x 20170104 y 20170105 z 20170106 x 输入文件B的样例如下: 20170101 y 20170102 y 20170103 x 20170104 z 20170105 y 根据输入文件A和B合并得到的输出文件C的样例如下: 20170101 x 20170101 y 20170102 y 20170103 x 20170104 y 20170104 z 20170105 y 20170105 z 20170106 x 在hdfs中创建input文件夹,创建f1,f2文件,上传文件到hdfs中input文件夹中,查看上传结果, 编译代码: 运行代码成功界面

MapReduce源码分析

*爱你&永不变心* 提交于 2020-02-27 02:28:56
mapreduce计算流程: 首先将block块切片,每个切片对应一个任务. 切片的目的 是将block数量和map任务数量解耦. map读取切片数据,默认按行读取,作为键值对交给map方法,其中key是当前读取的行在文件中的字节偏移量,value就是读取的当前行. map开始计算,自定义的逻辑 map将输出的kv首先写道环形缓冲区,在写之前计算分区号(默认按照key得hash值对reduce的个数取模) 环形缓冲区默认100MB,阈值80%,如果写入得kv对达到了80%则发生溢写,溢写到磁盘,如果溢写的文件数量达到了3个,则发生map端归并操作,此时如果指定了combiner,则按照combiner压缩数据. 当一个map任务完成之后,所有得reduce向其发生http get请求,下载他们所属的分区数据,此过程称为shuffle,洗牌. 当所有map任务运行结束,开始reduce任务 在reduce任务开始之前,如果有时间则进行shuffle文件的归并并落磁盘,如果没有时间,则直接归并按组发送给reduce方法,reduce迭代计算 reduce计算结束后将结果写道HDFS. 作业提交流程 1.客户端向RM取号 2.客户端检查作业输入输出,计算切片,解析配置信息 3.客户端将jar包\配置信息以及切片信息上传到HDFS 4.客户端向RM发送提交作业的请求 5.RM调度一个NM

HBase应用(一):数据批量导入说明

╄→尐↘猪︶ㄣ 提交于 2020-02-26 22:14:39
版本说明: 通过 HDP 3.0.1 安装的 HBase 2.0.0 一、概述 HBase 本身提供了很多种数据导入的方式,目前常用的有三种常用方式: 使用 HBase 原生 Client API 使用 HBase 提供的 TableOutputFormat,原理是通过一个 Mapreduce 作业将数据导入 HBase 使用 Bulk Load 方式:原理是使用 MapReduce 作业以 HBase 的内部数据格式输出表数据,然后直接将生成的 HFile 加载到正在运行的 HBase 中。 <!--more--> 二、方式对比 **前两种方式:**需要频繁的与数据所存储的 RegionServer 通信,一次性导入大量数据时,可能占用大量 Regionserver 资源,影响存储在该 Regionserver 上其他表的查询。 **第三种方式:**了解过 HBase 底层原理的应该都知道,HBase 在 HDFS 中是以 HFile 文件结构存储的,一个比较高效便捷的方法就是先生成 HFile,再将生成的 HFile 加载到正在运行的 HBase 中。即使用 HBase 提供的 HFileOutputFormat2 类或者 importtsv 工具来完成上述操作。 经过对比得知:如果数据量很大的情况下,使用第三种方式(Bulk Load)更好。占用更少的 CPU

快速读取非常大的表作为数据框

ε祈祈猫儿з 提交于 2020-02-26 16:09:15
我有非常大的表(3000万行),我想将其作为R中的数据帧加载 read.table() 具有许多方便的功能,但似乎实现中有很多逻辑会减慢速度事情下来。 就我而言,我假设我提前知道了列的类型,该表不包含任何列标题或行名,并且没有任何我要担心的病理字符。 我知道使用 scan() 以列表的形式读取表的速度非常快,例如: datalist <- scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0))) 但是我将其转换为数据帧的一些尝试似乎使上述性能降低了6倍: df <- as.data.frame(scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0)))) 有更好的方法吗? 还是完全不同的解决方法? #1楼 奇怪的是,即使这是很重要的问题,多年来也没有人回答问题的最底层部分 data.frame 只是具有正确属性的列表,因此,如果您有大量数据,则不想将其用作 as.data.frame 或类似的列表。 只需将列表“就地”转换为数据框就可以更快: attr(df, "row.names") <- .set_row_names(length(df[[1]])) class(df) <- "data.frame"

调度系统设计精要

喜欢而已 提交于 2020-02-26 01:12:31
导读 :本文作者写这篇文章前前后后大概 2 个月的时间,全文大概 2w 字,建议收藏后阅读或者通过电脑阅读。 调度是一个非常广泛的概念,很多领域都会使用调度这个术语,在计算机科学中, 调度 就是一种将任务(Work)分配给资源的方法。任务可能是虚拟的计算任务,例如线程、进程或者数据流,这些任务会被调度到硬件资源上执行,例如:处理器 CPU 等设备。 图 1 - 调度系统设计精要 本文会介绍调度系统的常见场景以及设计过程中的一些关键问题,调度器的设计最终都会归结到一个问题上 — 如何对资源高效的分配和调度以达到我们的目的,可能包括对资源的合理利用、最小化成本、快速匹配供给和需求。 图 2 - 文章脉络和内容 除了介绍调度系统设计时会遇到的常见问题之外,本文还会深入分析几种常见的调度器的设计、演进与实现原理,包括操作系统的进程调度器,Go 语言的运行时调度器以及 Kubernetes 的工作负载调度器,帮助我们理解调度器设计的核心原理。 设计原理 调度系统其实就是调度器(Scheduler),我们在很多系统中都能见到调度器的身影,就像我们在上面说的,不止操作系统中存在调度器,编程语言、容器编排以及很多业务系统中都会存在调度系统或者调度模块。 这些调度模块的核心作用就是对有限的资源进行分配,以实现最大化资源的利用率或者降低系统的尾延迟,调度系统面对的就是资源的需求和供给不平衡的问题。 图

分布式计算框架

北战南征 提交于 2020-02-25 22:21:23
MapReduce 简介 概念 面向批处理的分布式计算框架 一种编程模型: MapReduce程序被分为Map(映射)和Reduce(化简)阶段 核心思想 分而治之, 并行计算 移动计算而非移动数据 特点 MapReduce有几个特点: 移动计算而不移动数据:分布式计算,计算跟着数据走,数据存放在哪就在哪里进行计算,极大的减少了IO的开销。 良好的扩展性:分布式计算框架拥有相当良好的扩展性,随着节点数量的增加,单个节点的计算量减小,整体的计算能力近乎线性的递增。 高容错性:计算任务失败,会自动恢复计算,拥有良好的容错性。 状态监控:提交任务之后,任务具体执行在哪个节点,具体执行到哪个阶段,在后台或者监控界面,我们都能实时的进行监控。 适合于海量数据的离线批处理:MapReduce在设计之初的目标就是面向离线批处理,特别是大吞吐量的离线处理场景,更适合于MapReduce。 降低了分布式编程的门槛:大部分操作MapReduce已经实现,我们仅仅需要在特定的部分编写我们自己的业务逻辑,极大的减少了工作量,同时也降低了编程的门槛。 MR原理 1. 作业(job):作业是客户端提交请求执行的一个单元,它包括数据、计算框架以及一些配置信息等。 2. 任务(task):是作业细分之后的细分工作单元,如MapReduce中的Map Task和Reduce Task。

Hadoop--Hadoop基准测试(读/写)

*爱你&永不变心* 提交于 2020-02-25 22:20:53
Hadoop自带了几个基准测试,本文使用的是hadoop-2.6.0 一、Hadoop Test 的测试 [root@master hadoop-2.6.0]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.0-tests.jar An example program must be given as the first argument. Valid program names are: DFSCIOTest: Distributed i/o benchmark of libhdfs. DistributedFSCheck: Distributed checkup of the file system consistency. JHLogAnalyzer: Job History Log analyzer. MRReliabilityTest: A program that tests the reliability of the MR framework by injecting faults/failures SliveTest: HDFS Stress Test and Live Data Verification. TestDFSIO: Distributed i/o

大数据的技术生态圈:Hadoop,hive,spark

冷暖自知 提交于 2020-02-24 23:14:22
一文教你看懂大数据的技术生态圈:Hadoop,hive,spark 责任编辑:editor005 | 来源: 企业网D1Net 2015-03-02 13:50:51 本文摘自:中国大数据 /*--> */ /*--> */ 大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的。你可以把它比作一个厨房所以需要的各种工具。锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的特性,虽然奇怪的组合也能工作,但是未必是最佳选择。 大数据,首先你要能存的下大数据。 传统的文件系统是单机的,不能横跨不同的机器。HDFS(Hadoop Distributed FileSystem)的设计本质上是为了大量的数据能横跨成百上千台机器,但是你看到的是一个文件系统而不是很多文件系统。比如你说我要获取/hdfs /tmp/file1的数据,你引用的是一个文件路径,但是实际的数据存放在很多不同的机器上。你作为用户,不需要知道这些,就好比在单机上你不关心文件分散在什么磁道什么扇区一样。HDFS为你管理这些数据。 存的下数据之后,你就开始考虑怎么处理数据。虽然HDFS可以为你整体管理不同机器上的数据,但是这些数据太大了。一台机器读取成T上P的数据(很大的数据哦