原文转自:http://qa.taobao.com/blogs/qa?bid=10514

这是本人看到过的关于hadoop的比较容易理解的入门文章,在此转载过来,方便广大像我这样的初级码农。 原文如下:

引言
最近了解到淘宝使用hadoop的项目多了起来,hadoop对于许多测试人员来说或许是个新鲜玩儿,因此,把自己之前整理的学习笔记整理发上来,希望通过此系列文章快速了解Hadoop的基本概念和架构原理,从而助于hadoop相关项目的测试理解和沟通。
Hadoop简介
Hadoop 是一个实现了 MapReduce 计算模型的开源分布式并行编程框架,借助于 Hadoop, 程序员可以轻松地编写分布式并行程序,将其运行于计算机集群上,完成海量数据的计算。

如果你对Hadoop不熟悉,下面这些名词你或许耳熟能详,Google File System、Google Map/Reduce模型、lucene 、Nutch、阿里云梯、云计算等,他们都与Hadoop有着或深或浅的关系,原来Hadoop离我们如此之近,那么花些时间继续了解它吧。

Hadoop的架构
  先抛开Hadoop,简单地想想看,假设我们需要读一个10TB的数据集,怎么办?在传统的系统上,这需要很长时间,因为硬盘的传输速度是受限的。一个简单的办法是将数据存储在多个磁盘上,同时从多个磁盘并行读取数据,这将大大减少读取时间。

上面的方案需要解决两个主要问题,一个是硬件故障,要保证其中一个硬件坏了但数据仍然完整,Hadoop的文件系统HDFS(Hadoop Distributed Filesystem)提供了一种解决方式。另外一个问题是如何并行读取数据并合并保证正确性,通过MapReduce的编程模型可以简化这个问题。简而言之,Hadoop提供了一个稳定的共享存储和分析系统,存储由HDFS实现,分析由MapReduce实现,这两者构成了Hadoop的核心功能。

HDFS

HDFS集群有两种节点,以管理者-工作者模式运行,即1个名称节点(NameNode)和N个数据节点(DataNode)。其底层实现是将文件切割成块,然后将这些块存储在不同的DataNode上。为了容错容灾,每个块还被复制多份存储在不同的DataNode上。NameNode管理文件系统的命名空间,记录每个文件被切割成了多少块,这些块可以从哪些DataNode上获得,以及各个DataNode的状态信息等。下图是Hadoop集群的简化视图

HDFS内部通信都是基于标准的TCP/IP协议,NameNode 依赖来自每个 DataNode 的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode 可以根据这个报告验证块映射和其他文件系统元数据。如果 DataNode 不能发送心跳消息,NameNode 将采取修复措施,重新复制在该节点上丢失的块。更多HDFS的架构和设计请阅读http://hadoop.apache.org/common/docs/current/cn/hdfs_design.html

MapReduce

上图说明了用 MapReduce 来处理大数据集的过程, 这个 MapReduce 的计算过程简而言之,就是将大数据集分解为成若干个小数据集,每个(或若干个)数据集分别由集群中的一个结点(一般就是一台普通的计算机)进行处理并生成中间结果,然后这些中间结果又由大量的结点进行合并, 形成最终结果。

计算模型的核心是 Map 和 Reduce 两个函数,这两个函数由用户负责实现,功能是按一定的映射规则将输入的 对转换成另一个或一批 对输出。下图是一个简单的MapReduce示例,实现字数统计功能。

分布式并行运算

Hadoop 的分布式并行运算有一个作为主控的JobTracker,用于调度和管理其它的 TaskTracker, JobTracker 可以运行于集群中任一台计算机上。TaskTracker负责执行任务,必须运行于 DataNode 上,即 DataNode 既是数据存储结点,也是计算结点,这样可以减少数据在网络上的传输,降低对网络带宽的需求。 JobTracker 将 Map 任务和 Reduce 任务分发给空闲的 TaskTracker, 让这些任务并行运行,并负责监控任务的运行情况。如果某一个 TaskTracker 出故障了,JobTracker 会将其负责的任务转交给另一个空闲的 TaskTracker 重新运行。

Hadoop的其他子项目

上面介绍的MapReduce、HDFS、分布式并行运算是Hadoop最核心的功能。还有一些子项目提供补充性服务。如hive(提供基于sql的查询语言查询存储在HDFS中的数据)、Hbase(一种分布式、列存储数据库,适用于需要实时读写、随机访问超大数据集的场景)、Zookeeper(一个分布式、高可用性的协调服务,提供分布式锁之类的基本服务)、pig(一种数据流语言和运行环境,用以检索非常大的数据集,使程序员能专注于数据而不是执行本质)等。

小结

如果你坚持看到这里,或许会觉得失望,介绍了一堆的概念和名词,貌似对你的帮助不大,不要沮丧,第一次接触分布式知识的人大都如此,至少你跟开发又多了些共同语言,下次那个哥们冲你说pig(猪)时,你可以认为他说的是pig(一种数据流语言和运行环境,用以检索非常大的数据集,使程序员能专注于数据而不是执行本质)。

转载于:https://www.cnblogs.com/kingcucumber/archive/2013/06/13/2872575.html

[转载]Apache之Hadoop学习:初识hadoop相关推荐

  1. Hadoop入门——初识Hadoop 自学hadoop视频教程

    最新在学习hadoop .storm大数据相关技术,发现网上hadoop .storm 相关学习视频少之又少,更可恶的是不少机构使用段海涛老师Hadoop视频进行商业买卖,气愤至急,我这里整理了传智播 ...

  2. Hadoop入门——初识Hadoop

    关注微信公众号"假装正经的程序员" 一.hadoop是什么 Hadoop被公认是一套行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力.几乎所有主流厂商都围绕Hadoo ...

  3. Hadoop学习笔记——Hadoop常用命令

    Hadoop下有一些常用的命令,通过这些命令可以很方便操作Hadoop上的文件. 1.查看指定目录下的内容 语法: hadoop fs -ls 文件目录 2.打开某个已存在的文件 语法: hadoop ...

  4. Hadoop学习之Hadoop集群的定制配置(二)

    除了上篇博客介绍的管理hadoop后台进程的参数外,还有其它一些参数或者功能用于管理hadoop的运行方式,比如任务的启动与控制.TaskTracker节点的监控等. 先看看hadoop的任务控制器. ...

  5. Hadoop学习之Hadoop集群的定制配置(一)

    之前已经在七台物理机上以全分布模式安装了Hadoop集群,除了制动NameNode.JobTracker.DataNode.TaskTracker及相关的端口号外,并没有对集群配置做进一步的设定,都保 ...

  6. Hadoop学习笔记—4.初识MapReduce

    一.神马是高大上的MapReduce MapReduce是Google的一项重要技术,它首先是一个 编程模型 ,用以进行大数据量的计算.对于大 数据量的计算,通常采用的处理手法就是并行计算.但对许多开 ...

  7. Hadoop学习篇(一)——初识Hadoop Hadoop单机配置

    Hadoop学习篇(一) 本文档适用于Hadoop开发学习者使用 说明:如涉及到侵权,请及时联系我,并在第一时间删除文章. Hadoop简介:Hadoop是一个由Apache基金会所开发的分布式系统基 ...

  8. Hadoop学习之路(十三)MapReduce的初识

    MapReduce是什么 首先让我们来重温一下 hadoop 的四大组件: HDFS:分布式存储系统 MapReduce:分布式计算系统 YARN:hadoop 的资源调度系统 Common:以上三大 ...

  9. 细细品味大数据--初识hadoop

    初识hadoop 前言 之前在学校的时候一直就想学习大数据方面的技术,包括hadoop和机器学习啊什么的,但是归根结底就是因为自己太懒了,导致没有坚持多长时间,加上一直为offer做准备,所以当时重心 ...

最新文章

  1. ECUG 全球技术大会重回上海!
  2. 盘点:2020年最酷的12家机器学习初创公司
  3. 57 第一个Celery程序
  4. 微信小程序——获取openGid
  5. swoole mysql 无法查询_swoole websocket服务进行mysql断线重连不生效的问题
  6. 【待完善】【表达学习】稀疏表达SRC方法研究
  7. android 屏幕方向监听,android 屏幕旋转问题 - jwzhangjie的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  8. 《多媒体技术与应用》知识点整理
  9. weblogic开发EJB
  10. 微信小程序获取服务器当前时间,微信小程序服务器日期格式化问题
  11. 性能测试20--Analysis -- 内存与硬盘
  12. 关于在手机上注册Google账号
  13. 目录操作的相关API 和 获取文件的属性信息
  14. 飞思卡尔 I.MX6Q-高分辨率(1080P)视频采集编码
  15. 创建K26 SOM最小系统
  16. 0.96寸IIC接口ssd1306和ssd1315驱动oled12864屏幕介绍
  17. 解决MacOS系统升级时显示安装所选更新时发生错误的问题
  18. 高考志愿填报网站服务器,高考后填报志愿必须遵守的原则
  19. 航空遥感数据集、无人机航拍数据集
  20. 用Python实现一个电影订票系统!

热门文章

  1. mysql5.7数据恢复_mysql 5.7.21 解压版通过历史data目录恢复数据的教程图解
  2. mysql 5.5半同步复制_MySQL5.5配置安装半同步复制
  3. 2021 阿里云容器服务年度盘点:企业级容器应用变化和技术趋势观察
  4. 技术解析系列 | PouchContainer 支持 LXCFS 实现高可靠容器隔离
  5. c++ 获取线程id_高效获取当前线程的 id
  6. xamarin textview 滚动_Apple Music有原生滚动歌词了!喜大普奔!
  7. Fiddler的常用功能(Web断点调试)
  8. linux磁盘阵列oravote,Oracle在Linux下集群RAC的安装与启停
  9. python dataframe转图片_Python:dataframe转html
  10. C++和Rust_C 还是 Rust:选择哪个用于硬件抽象编程 | Linux 中国