加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Hadoop 生态之 MapReduce 及 Hive 简介

发布时间:2019-11-01 03:02:00 所属栏目:建站 来源:李一帆
导读:1.计较框架 Hadoop 是一个计较框架,今朝大型数据计较框架常用的大抵有五种: 仅批处理赏罚框架:Apache hadoop. 仅流处理赏罚框架:Apache Storm、Apache Samza. 殽杂框架:Apache Spark、Apache Flink. 这个中名气最大、行使最广的当属 Hadoop 和 Spark。 固然两

还拿上面例子来说:统计沟通单词在全部输入数据中呈现的次数,一个 Map 只能处理赏罚一部门数据,而热门单词就很也许会呈此刻全部 Map 中了,意味着统一单词必必要归并到一路统计才气获得正确功效。这种数据关联险些在全部的大数据计较场景都必要处理赏罚,假如是例子这种的虽然只对 Key 归并就OK了,但相同数据库 join 操纵这种较伟大的,就需对两种范例(或更多)的数据依据 Key 关联。

这个数据关联操纵在 MapReduce中的叫做:shuffle。

2.4 shuffle

shuffle 从字面意思来看,洗牌。下面是一个完备的MR进程,看一看怎样洗牌。

Hadoop 生态之 MapReduce 及 Hive 简介

先看左半边

1. 从 HDFS 中读取数据,输入数据块到一个个的 map,个中 map 完成计较时,计较功效会存储到当地文件体系。而当 map 将近举办完时,就会启动 shuffle 进程。

2. 如图,shuffle 也可分为两种,在Map端的是 Map shuffle。大抵进程为:Map 使命历程会挪用一个 Partitioner 接口,对 Map 发生的每个

这里就实现了对 Map 功效的分区、排序、支解,以及将统一分区的输出归并写入磁盘,获得一个分区有序的文件。这样不管 Map 在哪个处事器节点,沟通的 Key 必然会被发送给沟通 Reduce 历程。Reduce 历程对收到的

再看右半边

1. Reduce shuffle,又可分为复制 Map 输出、排序归并两阶段。

  • Copy:Reduce 使命从各个 Map 使命拖取数据后,关照父 TaskTracker 状态已更新,TaskTracker 关照 JobTracker。Reduce 会按期向JobTracker 获取 Map 的输出位置,一旦拿到位置,Reduce 使命会以后输出对应的 TaskTracker 上复制输出到当地,不会比及全部的Map使命竣事。
  • Merge sort:
  • Copy 的数据先放入内存缓冲区,若缓冲区放得下就把数据写入内存,即内存到内存 merge。
  • Reduce 向每个 Map 去拖取数据,内存中每个 Map 对应一块数据,当内存缓存区中存储的数据到达必然水平,开启内存中 merge,把内存中数据merge 输出到磁盘文件中,即内存到磁盘 merge。
  • 当属于该 reduce 的 map 输出所有拷贝完成,会在 reduce 上天生多个文件,执行归并操纵,即磁盘到磁盘 merge。而今 Map 的输出数据已经是有序的,Merge 举办一次归并排序,所谓 Reduce 端的 sort 进程就是这个归并的进程。

2. 颠末上一步Reduce shuffle后,reduce举办最后的计较,将输出写入HDFS中。

以上即是 shuffle 大抵四个步调,要害是 map 输出的 shuffle 到哪个 Reduce 历程,它由 Partitioner 来实现,MapReduce 框架默认的 Partitioner 用 Key 哈希值对 Reduce 使命数目取模,沟通 Key 会落在沟通的 Reduce 使命 ID 上。

  1. public int getPartition(K2 key, V2 value, int numReduceTasks) { 
  2.  return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;  
  3.  } 

假如对 Shuffle 总结一句话: 漫衍式计较将差异处事器中的数据归并到一路举办后续计较的进程。

shuffle 是大数据计较进程中神奇的处所,不管是 MapReduce 照旧 Spark,只要是大数据批处理赏罚计较,必然会有 shuffle 进程,只有让数据关联起来,它的内涵相关和代价才会泛起。

3. Hive

上一部门先容了 MapReduce,接下来简朴谈谈 Hive .

我认为任何一项技能的呈现都是为了办理某类题目, MapReduce 毫无疑问简化了大数据开拓的编程难度。但现实长举办数据计较更常用的本领也许是 SQL,那么有没有步伐直接运行 SQL ?

3.1 Hive是什么

基于Hadoop的一个数据客栈体系,界说了一种类SQL查询说话:Hive SQL。

这里有一个名词 数据客栈,数据客栈是指:面向主题(Subject Oriented)、集成(Integrated)、相对不变(Non-Volatile)、回响汗青变革(Time Variant)的数据荟萃,用于支持打点决定。

这么说也许有点抽象,解析一下:

  • 主题:数据客栈针对某个主题来举办组织,指行使数据客栈决定时所体谅的重点方面。好比订阅说明就可以当做一个主题。
  • 集成:数据客栈要将多个数据源数据存到一路,但数据早年的存储方法差异,要颠末抽取、洗濯、转换。(也就是 ETL)
  • 不变:生涯的数据是一系列汗青快照,不应承修改,只能说明。
  • 时变:会按期吸取到新的数据,回响出新的数据变革。

此刻再看下界说:数据客栈是将多个数据源的数据凭证必然的主题集成,举办抽取、洗濯、转换。且处理赏罚整合后的数据不应承随意修改,只能说明,还需按期更新。

3.2 为什么是 Hive

相识了 Hive 的基本界说,想一下:一个依靠于 HDFS 的数据客栈在 Hadoop 情形中可以饰演什么脚色?

前面说到,可不行以让 SQL 直接运行在 Hadoop 平台,这里的谜底即是 Hive。它可以将 Hive SQL 转换为 MapReduce 措施运行。

Hive 初期版本默认 Hive on Mapreduce

启动 hive 前凡是要先启动 hdfs 和 yarn, 同时一样平常必要设置 MySQL,Hive 依靠于 HDFS 的数据存储,但为了能操纵 HDFS 上的数据集,要知道数据切分名目、存储范例、地点等。这些信息通过一张表存储,称为元数据,可以存储到 MySQL 中。

  • 此刻来看下 Hive 的部门呼吁
  • 新建数据库:create database xxx;
  • 删除数据库:drop database xxx;
  • 建表:
  • create table table_name(col_name data_type);
  • Hive 的表有两个观念:**内部表和外部表**。默认内部表,简朴来说,内部表数据存储在每个表响应的HDFS目次下。外部表的数据存在别处,要删除这个外部表,该外部表所指向的数据是不会被删除的,只会删除外部表对应的元数据。
  • 查询:
  • select * from t_table **where** a<100 **and** b>1000;
  • 毗连查询:
  • select a.*,b.* from t_a a join t_b b on a.name=b.name;

看到这里,也许会认为我在写 SQL, 没错,对付认识 SQL 的人来说,Hive 长短常易于上手的。

3.3 HIVE SQL To MapReduce

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读