MapReduce

大数据教程(8.2)wordcount程序原理及代码实现/运行

早过忘川 提交于 2020-03-04 11:05:49
上一篇博客分享了mapreduce的编程思想,本节博主将带小伙伴们了解wordcount程序的原理和代码实现/运行细节。通过本节可以对mapreduce程序有一个大概的认识,其实hadoop中的map、reduce程序只是其中的两个组件,其余的组件(如input/output)也是可以重写的,默认情况下是使用默认组件。 一、wordcount统计程序实现: WordcountMapper (map task业务实现) package com.empire.hadoop.mr.wcdemo; import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; /** * KEYIN: 默认情况下,是mr框架所读到的一行文本的起始偏移量,Long, * 但是在hadoop中有自己的更精简的序列化接口,所以不直接用Long,而用LongWritable * VALUEIN:默认情况下,是mr框架所读到的一行文本的内容,String,同上,用Text * KEYOUT

MapReduce概述

不羁的心 提交于 2020-03-03 21:12:24
1 MapReduce定义 MapReduce是一个分布式运算程序的变成框架,是基于Hadoop的数据分析计算的核心框架。 MapReduce处理工程分为两个阶段:Map和Reduce。 Map负责把一个任务分解成多个任务;Reduce负责把分解后的多任务处理的结果汇总。 2 MapReduce优缺点 2.1 优点 1.MapReduce易于编程 它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分不到大量廉价的PC机器上运行。也就是说你写的一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点使得MapReduce编程变得非常流行。 2.良好的扩展性 当你的计算资源不能得到满足的时候,你就可以通过简单的增加机器来扩展它的计算能力。 3.高容错性 MapReduce设计的初衷就是使程序能够部署在廉价的PC机器上,这就要求它有很高的容错性。比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上,不至于这个任务运行失败,而且这个过程不需要人工参与,而完全由Hadoop内部完成的。 4.适合PB级以上海量数据的离线计算 可以实现上千台服务器集群并发工作,提供数据处理能力 2.2 缺点 1.不擅长实时计算 MapReduce无法像Mysql一样,在毫秒或者秒级内返回结果。 2.不擅长流式计算 流式计算的输入数据是动态的

MongoDB Map Reduce

烈酒焚心 提交于 2020-03-03 18:14:43
【mongoDB高级篇②】大数据聚集运算之mapReduce(映射化简) Map-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。 MongoDB提供的Map-Reduce非常灵活,对于大规模数据分析也相当实用。 MapReduce 命令 以下是MapReduce的基本语法: >db.collection.mapReduce( function() {emit(key,value);}, //map 函数 function(key,values) {return reduceFunction}, //reduce 函数 { out: collection, query: document, sort: document, limit: number } ) 使用 MapReduce 要实现两个函数 Map 函数和 Reduce 函数,Map 函数调用 emit(key, value), 遍历 collection 中所有的记录, 将 key 与 value 传递给 Reduce 函数进行处理。 Map 函数必须调用 emit(key, value) 返回键值对。 参数说明: map :映射函数 (生成键值对序列,作为 reduce 函数参数)。 reduce 统计函数,reduce函数的任务就是将key

MapReduce测试wordcount

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-03 17:24:42
1.在mapreduce下新建一个text.txt文件 2.在hdfs上新建输入输出文件夹 3.把text.txt上传到hdfs的input目录中 4.计算 5.显示结果 来源: oschina 链接: https://my.oschina.net/u/4434424/blog/3186704

spark scala - Group by Array column [duplicate]

人走茶凉 提交于 2020-03-03 09:23:27
问题 This question already has an answer here : How to group by common element in array? (1 answer) Closed 2 years ago . I am very new to spark scala. Appreciate your help.. I have a dataframe val df = Seq( ("a", "a1", Array("x1","x2")), ("a", "b1", Array("x1")), ("a", "c1", Array("x2")), ("c", "c3", Array("x2")), ("a", "d1", Array("x3")), ("a", "e1", Array("x2","x1")) ).toDF("k1", "k2", "k3") I am looking for a way to group it by k1 and k3 and collect k2 in an array. However, k3 is an array and I

spark scala - Group by Array column [duplicate]

孤街醉人 提交于 2020-03-03 09:22:32
问题 This question already has an answer here : How to group by common element in array? (1 answer) Closed 2 years ago . I am very new to spark scala. Appreciate your help.. I have a dataframe val df = Seq( ("a", "a1", Array("x1","x2")), ("a", "b1", Array("x1")), ("a", "c1", Array("x2")), ("c", "c3", Array("x2")), ("a", "d1", Array("x3")), ("a", "e1", Array("x2","x1")) ).toDF("k1", "k2", "k3") I am looking for a way to group it by k1 and k3 and collect k2 in an array. However, k3 is an array and I

基于flink的Mapreduce嵌入式开发

眉间皱痕 提交于 2020-03-03 06:06:32
Flink与Apache Hadoop MapReduce接口兼容,因此允许重用Hadoop MapReduce实现的代码。 本文简述实际项目中Mapreduce在flink中的应用,task结构如下: 1.引入依赖 < dependency > < groupId > org . apache . flink < / groupId > < artifactId > flink - streaming - java_2 . 11 < / artifactId > < version > $ { project . version } < / version > < / dependency > 2.task写法 public class CarrierTask { public static void main ( String [ ] args ) { final ParameterTool params = ParameterTool . fromArgs ( args ) ; // 设置环境变量 final ExecutionEnvironment env = ExecutionEnvironment . getExecutionEnvironment ( ) ; // 设置全局参数 env . getConfig ( ) . setGlobalJobParameters

Hadoop伪分布式环境配置与启动

三世轮回 提交于 2020-03-02 07:28:04
1. 环境准备 在一台linux机器上,安装好hadoop运行环境,安装方式请查看: HADOOP运行环境搭建 2. 启动HDFS并运行MapReduce程序 2.1. 配置集群 1. 配置:hadoop-env.sh Linux系统中获取JDK的安装路径: [root@ hadoop101 ~]# echo $JAVA_HOME /opt/module/jdk1.8.0_144 编辑hadoop-env.sh,修改hadoop-env.sh中的JAVA_HOME 路径: export JAVA_HOME=/opt/module/jdk1.8.0_144 2. 配置:core-site.xml 首先文件的存取目录不能停留在本地,要用HDFS上的文件,就需要配置HDFS的NameNode的地址。 所以需要在core-site.xml中增加以下配置 <!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop101:9000</value> </property> <!-- 指定Hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data

Mac 下编译 Hadoop-2.8

ⅰ亾dé卋堺 提交于 2020-03-01 20:03:35
Mac 下编译 Hadoop-2.8 系统基本环境准备 1. maven:Apache Maven 3.5.4 2. jdk:1.8.0_201 3. brew:Homebrew 2.2.6 编译环境准备 1.cmake: 2.openssl: 3.snappy: 4.zlib: 5.protobuf: 编译hadoop 下载hadoop源码 开始编译 编译完成 系统基本环境准备 由于下面列的东西都比较常规,具体的安装过程就不详细列举的,有问题可以自行百度 1. maven:Apache Maven 3.5.4 2. jdk:1.8.0_201 3. brew:Homebrew 2.2.6 编译环境准备 1.cmake: 安装命令 brew install cmake 2.openssl: 安装命令 brew install openssl 3.snappy: 安装命令 brew install snappy 4.zlib: 安装命令 brew install zlib 5.protobuf: 由于必须使用2.5.0版本需要自行下载安装https://github.com/protocolbuffers/protobuf/releases/tag/v2.5.0 下载后解压后进入protobuf目录 执行命令列表,进行编译 $ cd /Users/wx2514/tool

第一个MapReduce程序-词频统计

∥☆過路亽.° 提交于 2020-03-01 16:16:05
最终结果展示: 一.MapReduce的概念   1)MapReduce是一个离线计算的框架   2)MPAReduce是基于HDFS之上的,没有HDFS就没有MapReduce   3)MapReduce由两个阶段组成:Map和Reduce,用户只需实现map()和reduce()即可完成分布式计算   4)Map阶段:逐个遍历【用来收集数据的】   5)Reducer阶段:做合并操作【用来合并数据】 二.具体实现 1.创建maven项目,导入jar包 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!--COMMON是hadoop一切的核心--> <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.7.3</version> </dependency