MapReduce

一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了

南笙酒味 提交于 2020-02-18 11:27:16
转载: 大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的。 你可以把它比作一个厨房所以需要的各种工具。锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的特性,虽然奇怪的组合也能工作,但是未必是最佳选择。 大数据,首先你要能存的下大数据。 传统的文件系统是单机的,不能横跨不同的机器。HDFS(Hadoop Distributed FileSystem)的设计本质上是为了大量的数据能横跨成百上千台机器,但是你看到的是一个文件系统而不是很多文件系统。比如你说我要获取/hdfs/tmp/file1的数据,你引用的是一个文件路径,但是实际的数据存放在很多不同的机器上。你作为用户,不需要知道这些,就好比在单机上你不关心文件分散在什么磁道什么扇区一样。HDFS为你管理这些数据。 存的下数据之后,你就开始考虑怎么处理数据。 虽然HDFS可以为你整体管理不同机器上的数据,但是这些数据太大了。一台机器读取成T上P的数据(很大的数据哦,比如整个东京热有史以来所有高清电影的大小甚至更大),一台机器慢慢跑也许需要好几天甚至好几周。对于很多公司来说,单机处理是不可忍受的,比如微博要更新24小时热博,它必须在24小时之内跑完这些处理。那么我如果要用很多台机器处理

一文教你看懂大数据的技术生态圈:Hadoop,hive,spark

左心房为你撑大大i 提交于 2020-02-18 11:17:29
转自:https://www.cnblogs.com/reed/p/7730360.html 大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的。你可以把它比作一个厨房所以需要的各种工具。锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的特性,虽然奇怪的组合也能工作,但是未必是最佳选择。 大数据,首先你要能存的下大数据。 传统的文件系统是单机的,不能横跨不同的机器。HDFS(Hadoop Distributed FileSystem)的设计本质上是为了大量的数据能横跨成百上千台机器,但是你看到的是一个文件系统而不是很多文件系统。比如你说我要获取/hdfs /tmp/file1的数据,你引用的是一个文件路径,但是实际的数据存放在很多不同的机器上。你作为用户,不需要知道这些,就好比在单机上你不关心文件分散在什么磁道什么扇区一样。HDFS为你管理这些数据。 存的下数据之后,你就开始考虑怎么处理数据。虽然HDFS可以为你整体管理不同机器上的数据,但是这些数据太大了。一台机器读取成T上P的数据(很大的数据哦,比如整个东京热有史以来所有高清电影的大小甚至更大),一台机器慢慢跑也许需要好几天甚至好几周。对于很多公司来说,单机处理是不可忍受的,比如微博要更新24小时热博

MAPREDUCE原理篇2

99封情书 提交于 2020-02-17 08:52:42
mapreduce 的 shuffle 机制 概述: mapreduce 中, map 阶段处理的数据如何传递给 reduce 阶段,是 mapreduce 框架中最关键的一个流程,这个流程就叫 shuffle ; shuffle: 洗牌、发牌——(核心机制:数据分区,排序,缓存) ; 具体来说:就是将 maptask 输出的处理结果数据,分发给 reducetask ,并在分发的过程中, 对数据按 key 进行了分区和排序 ; 主要流程: Shuffle 缓存流程: shuffle 是 MR 处理流程中的一个过程,它的每一个处理步骤是分散在各个 map task 和 reduce task 节点上完成的,整体来看,分为 3 个操作: 1、 分区 partition 2、Sort 根据 key 排序 3、Combiner 进行局部 value 的合并 详细流程 1、 maptask 收集我们的 map() 方法输出的 kv 对,放到内存缓冲区中 2、 从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件 3、 多个溢出文件会被合并成大的溢出文件 在溢出过程中,及合并的过程中,都要调用 partitoner 进行分组和针对 key 进行排 序 4、 reducetask 根据自己的分区号,去各个 maptask 机器上 取相应的结果分区数据 5、 reducetask

Custom Mapper and Reducer vs HiveQL

瘦欲@ 提交于 2020-02-16 06:18:57
问题 Problem Statement:- I need to compare two tables Table1 and Table2 and they both store same thing. So I need to compare Table2 with Table1 as Table1 is the main table through which comparisons need to be made. So after comparing I need to make a report that Table2 has some sort of discrepancy. And these two tables has lots of data, around TB of data. So currently I have written HiveQL to do the comparisons and get the data back. So my question is which is better in terms of PERFORMANCE ,

Custom Mapper and Reducer vs HiveQL

╄→гoц情女王★ 提交于 2020-02-16 06:16:22
问题 Problem Statement:- I need to compare two tables Table1 and Table2 and they both store same thing. So I need to compare Table2 with Table1 as Table1 is the main table through which comparisons need to be made. So after comparing I need to make a report that Table2 has some sort of discrepancy. And these two tables has lots of data, around TB of data. So currently I have written HiveQL to do the comparisons and get the data back. So my question is which is better in terms of PERFORMANCE ,

Custom Mapper and Reducer vs HiveQL

ぐ巨炮叔叔 提交于 2020-02-16 06:16:11
问题 Problem Statement:- I need to compare two tables Table1 and Table2 and they both store same thing. So I need to compare Table2 with Table1 as Table1 is the main table through which comparisons need to be made. So after comparing I need to make a report that Table2 has some sort of discrepancy. And these two tables has lots of data, around TB of data. So currently I have written HiveQL to do the comparisons and get the data back. So my question is which is better in terms of PERFORMANCE ,

YARN的架构及原理

梦想的初衷 提交于 2020-02-15 11:14:45
1.YARN产生背景 1.1 MapReduce本身存在的问题 JobTracker单点故障问题;如果Hadoop集群的JobTracker挂掉,则整个分布式集群都不能使用了。 JobTracker承受的访问压力大,影响系统的扩展性。 不支持MapReduce之外的计算框架,比如Storm、Spark、Flink等。 1.2 MRv1 JobTracker:用户程序提交了一个Job,任务(job)会发给JobTracker,JobTracker是Map-Reduce框架中心,它负责把任务分解成map和reduce的作业(task);需要与集群中的机器定时心跳(heartbeat)通信;需要管理那些程序应该跑在那些机器上;需要管理所有job失败、重启操作。 Tasktracker是JobTracker和Task之间的桥梁,Tasktracker可以配置map和reduce的作业操(task slot)。TaskTracker通过心跳告知JobTracker自己还有空闲的作业Slot时,JobTrackr会向其分派任务。它将接收并执行JobTracker的各种命令:启动任务、提交任务、杀死任务。 TaskScheduler工作再JobTracker上。根据JobTracker获得的slot信息完成具体的分配工作,TaskScheduler支持多种策略以提高集群工作效率。 局限性

MapReduce的shuffle过程详解

筅森魡賤 提交于 2020-02-14 13:40:43
shuffle概念   shuffle的本意是洗牌、混洗的意思,把一组有规则的数据尽量打乱成无规则的数据。而在MapReduce中,shuffle更像是洗牌的逆过程,指的是将map端的无规则输出按指定的规则“打乱”成具有一定规则的数据,以便reduce端接收处理。其在MapReduce中所处的工作阶段是map输出后到reduce接收前,具体可以分为map端和reduce端前后两个部分。在shuffle之前,也就是在map阶段,MapReduce会对要处理的数据进行分片(split)操作,为每一个分片分配一个MapTask任务。接下来map()函数会对每一个分片中的每一行数据进行处理得到键值对(key,value),其中key为偏移量,value为一行的内容。此时得到的键值对又叫做“中间结果”。此后便进入shuffle阶段,由此可以看出shuffle阶段的作用是处理“中间结果”。 此处应该想一下,为什么需要shuffle,它的作用是什么? 在了解shuffle的具体流程之前,应先对以下两个概念有所了解: block块(物理划分)   block是HDFS中的基本存储单位,hadoop1.x默认大小为64M而hadoop2.x默认块大小为128M。文件上传到HDFS,就要划分数据成块,这里的划分属于物理的划分(实现机制也就是设置一个read方法

MapReduce的介绍和使用

一曲冷凌霜 提交于 2020-02-11 16:37:23
1. MapReduce介绍 1.1 MapReduce的基本思想 MapReduce思想在生活中处处可见。或多或少都曾接触过这种思想。MapReduce的思想核心是“ 分而治之 ”,适用于大量复杂的任务处理场景(大规模数据处理场景)。 MapReduce分为Map和Reduce两个阶段, Map负责“分” ,即 把复杂的任务分解为若干个“简单的任务”来并行处理,这些小任务可以并行计算,彼此间几乎没有依赖关系 。 Reduce负责“合” ,即 对map阶段的结果进行全局汇总 。 MapReduce运行在yarn集群 下图用介绍了类似MapReduce思想的一个实现过程 在实际的MapReduce执行过程中,可能有多个Reduce 1.2 MapReduce的设计 MapReduce是一个分布式运算程序的编程框架,核心功能是 将 用户编写的业务逻辑代码 和自带默认组件整合成一个完整的分布式运算程序,并发运行在Hadoop集群上 。 MapReduce设计并提供了 统一的计算框架 ,为程序员隐藏了绝大多数系统层面的处理细节。 为程序员提供一个抽象和高层的编程接口和框架。程序员仅需要关心其应用层的具体计算问题,仅需编写少量的处理应用本身计算问题的程序代码。如何具体完成这个并行计算任务所相关的诸多系统层细节被隐藏起来,交给计算框架去处理 :

hadoop 集群调优实践总结

不问归期 提交于 2020-02-10 03:12:37
调优概述 # 几乎在很多场景,MapRdeuce或者说分布式架构,都会在IO受限,硬盘或者网络读取数据遇到瓶颈.处理数据瓶颈CPU受限.大量的硬盘读写数据是海量数据分析常见情况. IO受限例子: 索引 分组 数据倒入导出 数据移动和转换 CPU受限例子: 聚类/分类 复杂的文本挖掘 特征提取 用户画像 自然语言处理 我们需要从硬件规划和软件规划等多方面结合实现性能和效率的提升。 硬件规划 # 评估集群规模 # 我们需要搭建多少节点的hadoop集群?回答这个问题考虑的因素比较多:预算?数据量?计算资源? 需要多少计算资源可能不是特别好评估,推荐横向扩展,随业务规模和应用发展再考虑扩展。开始可以就按照数据量来评估数据规模,估计一下每天的数据增量?保存数据的周期是多少?有没有冷数据方案? 假设每天增长的数据为600G、3备份存储,以一年规划为例,大概存储为600G 3 360天=633T, 再考虑增加%20的预留,考虑未来数据增长的趋势,考虑应用计算等空间需求。为节省空间可考虑压缩存储(大概可以节省70%空间)。 同时考虑一定冗余量,如果集群一部分节点不可用也要保证业务正常使用(根据集群规模评估冗余比例)。 然后结合节点硬件规划和预算,确定集群规模。假如我们需要650T存储,可以采用30台12 x 2TB的存储配置或者 60台6 x 2TB配置,但是节点数量翻翻