Hadoop介绍-1.基本原理
了解大数据
首先,搞清楚hadoop在处理大数据的定位在哪里
什么是大数据?为什么要处理大数据?
数据量大(Volume) 数据类别复杂(Variety) 数据处理速度快(Velocity) 数据真实性高(Veracity) 合起来被称为4V。
处理大数据是为了挖掘数据中的隐含价值
如何处理大数据?
集中式计算VS分布式计算
集中式计算:通过不断增加处理器的个数来增强耽搁计算机的计算能力,从而提高处理的速度。需要的内存很大,计算的速度很快。
分布式计算:一组通过网络连接的计算机,形成一个分散的系统。将需要处理的大量数据分散成多个部分,交由系统中的耽搁计算机分别处理,最后将这些计算结果合并得到最终结果。(MapReduce的核心思想)
Hadoop是怎么产生的
技术基础
google三驾马车:GFS、MapReduce和BigTable。Hadoop是在google三驾马车基础上的开源实现。
- GFS(Google File System)分布式文件系统,对应Hadoop当中的HDFS。
- MapReduce分布式计算框架,也是Hadoop处理大数据的核心思想。
- BigTable是基于GFS的数据存储系统,对应Hadoop的HBase。
三大分布式计算系统
Hadoop,Spark,Storm是主流的三大分布式计算系统
Spark VS Hadoop
Hadoop使用硬盘来存储数据,而Spark是将数据存在内存中的,因此Spark何以提供超过Hadoop 100倍的计算速度。内存断电后会丢失,所以Spark不
适用于需要长期保存的数据。
Storm VS Hadoop
Storm在Hadoop基础上提供了实时运算的特性,可以实时处理大数据流。不同于Hadoop和Spark,Storm不进行数据的搜集和存储工作,直接通过网络接受并实时处理数据,然后直接通过网络实时传回结果。
所以三者适用于的应用场景分别为:
- Hadoop常用于离线的复杂的大数据处理
- Spark常用于离线的快速的大数据处理
- Storm常用于在线实时的大数据处理
Hadoop定义
Hadoop是什么
Hadoop是一个能够对大量数据进行分布式处理的软件框架
Hadoop特点
- 可靠。Hadoop假设计算元素和存储会失败,所以会维护多个工作数据的副本,对失败的节点会重新处理
- 高效。通过并行方式工作,加快处理速度。
- 可伸缩。可以处理PB级的数据。
- 高扩展。可以方便地扩展到数以千计的节点。
- 低成本。Hadoop是开源的,Hadoop节点可以是很便宜的机器。
应用场景
Hadoop适用于:海量数据,离线数据,复杂数据
场景1:数据分析,如海量日志分析,商品推荐,用户行为分析
场景2:离线计算,(异构计算+分布式计算)天文计算
场景3:海量数据存储,如Facebook的存储集群。
Hadoop原理
HDFS
HDFS(Hadoop File System),是Hadoop的分布式文件存储系统
- 将大文件分解为多个Block,每个Block保存多个副本。提供容错机制,副本丢失或者宕机时自动恢复。
- 默认每个Block保存3个副本,64M为1个Block。
- 将Block按照key-value映射到内存当中。
HDFS架构图如下:
NameNode
HDFS使用主从结构,NameNode是Master节点,是领导。所有的客户端的读写请求,都需要首先请求NameNode。
NameNode存储
- fsimage:元数据镜像文件(文件系统的目录树,文件的元数据信息)。元数据信息包括文件的信息,文件对应的block信息(版本信息,类型信息,和checksum),以及每一个block所在的DataNode的信息。
- edits:元数据的操作日志
DataNode
DataNode是Slave,负责真正存储所有的block内容,以及数据块的读写操作
NameNode,DataNode,rack只是一些逻辑上的概念。NameNode和DataNode可能是一台机器也可能是,相邻的一台机器,很多DataNode可能处于同一台机器。rack是逻辑上比DataNode更大的概念,可能是一台机器,一台机柜,也可能是一个机房。通过使文件的备份更广泛地分布到不同的rack,DataNode上可以保证数据的可靠性。
HDFS写入数据
- Client拆分文件为64M一块。
- Client向NameNode发送写数据请求。
- NameNode节点,记录block信息。并返回可用的DataNode。
- Client向DataNode发送block1,2,3….;发送过程是以流式写入。流式写入,数据流向为DataNode1->DataNode2->DataNode3(1,2,3为通过规则选出来的可用的DataNode)
- 发送完毕后告知NameNode
- NameNode告知Client发送完成
在写数据的时候:
- 写1T文件,我们需要3T的存储,3T的网络流量贷款。
- 在执行读或写的过程中,NameNode和DataNode通过HeartBeat进行保存通信,确定DataNode活着。如果发现DataNode死掉了,就将死掉的DataNode上的数据,放到其他节点去。读取时,要读其他节点去。
- 挂掉一个节点,没关系,还有其他节点可以备份;甚至,挂掉某一个机架,也没关系;其他机架上,也有备份。
HDFS读取数据
- Client向NameNode发送读请求
- NameNode查看MetaData信息,返回文件的block位置
- 根据一定规则(优先选择附近的数据),按顺序读取block
MapReduce
Map是把一组数据一对一的映射为另外的一组数据,其映射的规则由一个map函数来指定。Reduce是对一组数据进行归约,这个归约的规则由一个reduce函数指定。
整个的MapReduce执行过程可以表示为:
(input)<k1, v1> => map => <k2, v2> => combine => <k2, v2’> => reduce => <k3, v3>(output)
也可以表示为流程图:
- 分割:把输入数据分割成不相关的若干键/值对(key1/value1)集合,作为input
- 映射:这些键/值对会由多个map任务来并行地处理。输出一些中间键/值对key2/value2集合
- 排序:MapReduce会对map的输出(key2/value2)按照key2进行排序(便于归并)
- conbine:属于同一个key2的所有value2组合在一起作为reduce任务的输入(相当于提前reduce,减小key2的数量,减小reduce的负担)
- Partition:将mapper的输出分配到reducer;(Map的中间结果通常用”hash(key) mod R”这个结果作为标准)
- 规约:由reduce任务计算出最终结果并输出key3/value3。
程序员需要做的
- 单机程序需要处理数据读取和写入、数据处理
- Hadoop程序需要实现map和reduce函数
- map和reduce之间的数据传输、排序,容错处理等由Hadoop MapReduce和HDFS自动完成。
Hadoop介绍-1.基本原理的更多相关文章
- [Hadoop入门] - 1 Ubuntu系统 Hadoop介绍 MapReduce编程思想
Ubuntu系统 (我用到版本号是140.4) ubuntu系统是一个以桌面应用为主的Linux操作系统,Ubuntu基于Debian发行版和GNOME桌面环境.Ubuntu的目标在于为一般用户提供一 ...
- Hadoop介绍及最新稳定版Hadoop 2.4.1下载地址及单节点安装
Hadoop介绍 Hadoop是一个能对大量数据进行分布式处理的软件框架.其基本的组成包括hdfs分布式文件系统和可以运行在hdfs文件系统上的MapReduce编程模型,以及基于hdfs和MapR ...
- 1.Hadoop介绍
1. Hadoop介绍 1.1 什么是Hadoop 开源的,可靠的,分布式的,可伸缩的 提供的功能: 利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 1.2 处理方式 大众角度 数 ...
- 在HDInsight中的Hadoop介绍
在HDInsight中的Hadoop介绍 概览 Azure的HDInsight是,部署和规定的Apache™Hadoop®集群在云中,提供用于管理,分析和大数据报告软件框架中的服务. 大数据 数据被描 ...
- Hadoop介绍篇
Hadoop详解 1.前言 对于初次接触Hadoop的小伙伴来说,Hadoop是一个很陌生的东西,尤其是Hadoop与大数据之间的关联,写这篇文章之前,我也有许多关于Hadoop与大数据的疑惑,接下来 ...
- Hadoop记录-hadoop介绍
1.hadoop是什么? Hadoop 是Apache基金会下一个开源的大数据分布式计算平台,它以分布式文件系统HDFS和MapReduce算法为核心,为用户提供了系统底层细节透明的分布式基础架构. ...
- Hadoop介绍-4.Hadoop中NameNode、DataNode、Secondary、NameNode、JobTracker TaskTracker
Hadoop是一个能够对大量数据进行分布式处理的软体框架,实现了Google的MapReduce编程模型和框架,能够把应用程式分割成许多的 小的工作单元,并把这些单元放到任何集群节点上执行.在MapR ...
- Hadoop介绍-3.HDFS介绍和YARN原理介绍
一. HDFS介绍: Hadoop2介绍 HDFS概述 HDFS读写流程 1. Hadoop2介绍 Hadoop是Apache软件基金会旗下的一个分布式系统基础架构.Hadoop2的框架最核心的 ...
- Hadoop(3)-Hadoop介绍
Hadoop三大发行版本 Hadoop三大发行版本:Apache.Cloudera.Hortonworks. Apache版本最原始(最基础)的版本,对于入门学习最好. Cloudera在大型互联网企 ...
随机推荐
- jd面试之感
一面问题:问题都回答的很好,顺利进入二面 1.单点登录的改造和原理 2.hashmap 3.jvm:堆.方法区.栈,本地方法栈,gc,gc的方式 4.spring的ioc.aop的实现方式cglib和 ...
- HDU 4312 Meeting point-2(切比雪夫距离转曼哈顿距离)
http://acm.hdu.edu.cn/showproblem.php?pid=4312 题意:在上一题的基础上,由四个方向改为了八个方向. 思路: 引用自http://blog.csdn.net ...
- 51nod 1215 数组的宽度(单调栈)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1215 题意: 思路: 计算出以第i个数为最大值的区间范围,l_max[i ...
- 一行css解决图片统一大小后的拉伸问题(被冷漠的object-fit)
一.先来个实战 1. 测试案例 需求: 要求表情库里所有表情包大小都固定 实际效果: 由于图片原始大小都不一样,强行设定大小值会导致拉伸,如果不设定大小则参差不齐.例如: //html <bod ...
- Codeforces Round #135 (Div. 2) D. Choosing Capital for Treeland dfs
D. Choosing Capital for Treeland time limit per test 3 seconds memory limit per test 256 megabytes i ...
- Java里的String类为什么是final的
今天在看<图解设计模式>,里面出了一个问题“String类用final修饰,导致它无法被继承(扩展),这样做违反了开闭原则,这么做有什么正当理由?” 答案是效率和安全性 首先是效率,由于 ...
- socket之基础
链接https://www.cnblogs.com/clschao/articles/9593164.html
- django信号 signal
django自带一套信号机制来帮助我们在框架的不同位置之间传递信息.也就是说,当某一事件发生时,信号系统可以允许一个或多个发送者(senders)将通知或信号(signals)发送给一组接受者(rec ...
- Django表单API详解
声明:以下的Form.表单等术语都指的的广义的Django表单. Form要么是绑定了数据的,要么是未绑定数据的. 如果是绑定的,那么它能够验证数据,并渲染表单及其数据,然后生成HTML表单.如果未绑 ...
- 力扣(LeetCode)219. 存在重复元素 II
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k. 示例 1: 输入: nums = ...