hadoop概述

一、简介

Hadoop是一个实现了MapReduce计算模式的能够对大量数据进行分布式处理的软件框架,是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop计算框架最核心的设计是HDFS(Hadoop Distributed File System)和MapReduce,HDFS单看全称就知道,实现了一个分布式的文件系统,MapReduce则是提供一个计算模型,基于分治策略。

二、Hadoop特性

第一,它是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。

其次,Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop 还是可伸缩的,能够处理 PB 级数据。

此外,Hadoop 依赖于社区服务器,因此它的成本比较低,且开源,任何人都可以使用。

hadoop是适合大数据的分布式存储和计算平台,作者Doug Cutting ,受google三篇大数据论文启发。

Google File System中文版

http://blog.bizcloudsoft.com/wp-content/uploads/Google-File-System%E4%B8%AD%E6%96%87%E7%89%88_1.0.pdf

Google MapReduce中文版

http://blog.bizcloudsoft.com/wp-content/uploads/Google-MapReduce%E4%B8%AD%E6%96%87%E7%89%88_1.0.pdf

Google Bigtable中文版

http://blog.bizcloudsoft.com/wp-content/uploads/Google-Bigtable%E4%B8%AD%E6%96%87%E7%89%88_1.0.pdf

Hadoop生态系统

三、Hadoop的核心项目

HDFS: hadoop distributed file system 分布式文件系统

MapReduce: 并行计算框架,基于文件系统进行数据计算。

四、HDFS的架构

主从结构

主节点只有一个:namenode,从节点有很多个:datanodes.

namenode负责接收用户操作请求,维护文件系统的目录结构。管理文件与block之间的关系,block与datanode之间的关系。

datanode负责存储文件,文件被分割成block存储在磁盘上。为保证数据安全,文件会有多个副本。

五、MapReduce

Map阶段:首先是读数据,数据来源可能是文本文件,表格,MySQL数据库。这些数据通常是成千上万的文件(叫做shards),这些shards被当做一个逻辑输入源。然后Map阶段调用用户实现的函数,叫做Mapper,独立且并行的处理每个shard。对于每个shard,Mapper返回多个键值对,这是Map阶段的输出。

Shuffle阶段:把键值对进行归类,也就是把所有相同的键的键值对归为一类。这个步骤的输出是不同的键和该键的对应的值的数据流。

Reduce阶段: 输入当然是shuffle的输出。然后Reduce阶段调用用户实现的函数,叫做Reducer,对每个不同的键和该键的对应的值的数据流进行独立、并行的处理。每个reducer遍历键对应的值,然后对值进行“置换”。这些置换通常指的的是值的聚合或者什么也不处理,然后把键值对写入数据库、表格或者文件中。

原文发布于微信公众号 - JKXQJ(bclsj-cn)

原文发表时间:2017-11-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编舟记

一名Clojurian的Emacs配置

我是一名热衷于函数式编程的Clojurian(Clojure粉),网络ID是lambeta(λβ),读作/‘læmeitə/,个人的博客网站是https://l...

54420
来自专栏施炯的IoT开发专栏

微软移动 Nokia Lumia SensorCore SDK 介绍及上手体验

    早在今年的BUILD大会上,诺基亚就宣布了SensorCore以及它的部分演示。今天,它终于面世了,大家可以去Building Apps for Win...

28270
来自专栏祝威廉

Spark Sort Based Shuffle内存分析

目前Sort Based Shuffle 是作为默认Shuffle类型的。Shuffle 是一个很复杂的过程,任何一个环节都足够写一篇文章。所以这里,我尝试换个...

18130
来自专栏CDA数据分析师

Hadoop中的Python框架的使用指南

最近,我加入了Cloudera,在这之前,我在计算生物学/基因组学上已经工作了差不多10年。我的分析工作主要是利用Python语言和它很棒的科学计算栈来进行的。...

25770
来自专栏大数据和云计算技术

Codegen技术学习

Codegen在spark中的应用 除了前面查询优化中讲到逻辑优化器之外,Spark在1.5版本中引入了比较大的一个动作就是DataFrame执行后端的优化,引...

65650
来自专栏web前端教室

最快速度搞懂:Js观察者模式,为学习vue源码而准备

观察者模式嘛,大段的概念我就不贴了。 大体上是, 1、松耦合的代码; 2、一对多的关系; 3、主体状态变化时,所有依赖被通知; 4、主体和观察者互不知晓。 基本...

25180
来自专栏me的随笔

Visual Studio 代码风格约束

注意,这里的错误是IDE1006:Naming rule violation,编译时依然能通过(没找到在哪里设置不允许通过编译):

22220
来自专栏我是攻城师

Apache Pig如何通过自定义UDF查询数据库(五)

38340
来自专栏点滴积累

geotrellis使用(七)记录一次惨痛的bug调试经历以及求DEM坡度实践

     眼看就要端午节了,屌丝还在写代码,话说过节也不给轻松,折腾了一天终于解决了一个BUG,并完成了老板安排的求DEM坡度的任务,那么就分两段来表。 一、B...

33750
来自专栏纯洁的微笑

小明历险记:规则引擎Drools教程一

15430

扫码关注云+社区

领取腾讯云代金券