1. Hadoop 最出名的是 MapReduce和 HDFS,不过也有很多其他有用的子项目。

技术栈如下:

Core

一系列分布式文件系统和通用I/O的组件和接口(序列化、Java RPC和持久化数据结构)

Avro

一种提供高效、跨语言RPC的数据序列系统,持久化数据存储。

MapReduce

分布式数据处理模式和执行环境,运行于大型商用机集群。

HDFS

分布式文件系统,运行于大型商用机集群。

Pig

一种数据流语言和运行环境,用以检索非常大的数据集。Pig运行在MapReduce和HDFS的集群上。

Hbase

一个分布式、列存储数据库。使用HDFS作为底层存储,同时支持MapReduce的批量式计算和点查询(随机读取)。

ZooKeeper

一个分布式的、高可用性的协调服务。ZooKeeper提供分布式锁之类的基本服务用于构建分布式应用。

Hive

分布式数据仓库。Hive管理HDFS中存储的数据,并提供基于SQL的查询语言(运行时由引擎翻译成MapReduce作业)用以查询数据。

Chukwa

分布式数据收集和分析系统。Chukwa运行HDFS中存储数据的收集器,它使用MapReduce来生成报告。

2. Shuffle and combiner

Shuffle

是从map输出,到reduce输入之间的过程。

很多map任务和reduce任务,并不是一对一的关系,所以可以认为在中间进行了“洗牌” 重组操作,形象的叫作shuffle。

Shuffle是Hadoop很核心的部分,涉及到最珍贵的网络资源。此外,shuffle过程中会有很多参数,也有很多策略可以研究。

Combiner

是运行在map上的一种优化,并不改变reducer的结果,可以帮助减少map和reduce 之间的数据传输量。

它的一个很重要的作用:会对相同key的值进行合并,即减少了数据量,进而提高了效率。

3. HDFS

Hadoop Distributed Filesystem. HDFS is a filesystem designed for storing very large files with streaming data access

patterns, running on clusters of commodity hardware.

1) 大文件

2)流式数据访问。 一次写入,多次读取

3)商用普通硬件。并不要求昂贵、高可靠性机器。因此要应对节点故障和中断(使用户尽量感知不到)

所以,一些不适合使用的领域是:

1)低延迟数据访问。

HDFS是高数据吞吐量,HBase是低延迟访问的更好选择

2)大量的小文件

namenode(名称节点)存储文件系统的元数据,因此文件数量也由namenode的内存大小决定。

3)多用户写入,任意位置修改文件

HDFS中的文件只有一个写入者,否则会造成冲突。而且写操作总是在文件的末尾。

4. HA 高可用性

参考自 http://blog.csdn.net/caizhongda/article/details/7947480

在以前的版本中,HDFS 集群中的NameNode机器,存在单点故障(SPOF )。如果只有一个NameNode的集群出现故障,那么整个集群将无法使用,直到NameNode 重新启动。主要是在以下两种情况会影响HDFS集群:

1). NameNode 机器发生意外,比如宕机,集群将无法使用,直到管理员重启NameNode
2). NameNode 机器需要升级,包括软件、硬件升级,此时集群也将无法使用

而HDFS 的HA 功能通过配置Active/Standby 两个NameNodes,实现故障时快速切换另外一台。

在一个典型的HDFS(HA) 集群中,使用两台单独的机器配置为NameNodes ,在任何时间点,确保NameNodes 中只有一个处于Active 状态,其他的处在Standby 状态。

5. YARN

参考自 http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/#_3.3_hadoop_ 官方简介

YARN 是Hadoop 0.23.0 版本后新的 map-reduce 框架。

0.20.0 及之前版本的map-reduce框架如下:

提交任务                       分发任务

Jobclient ------------> JobTracker <-------------------> TaskTracker ------------------> map & reducer slots

heartbeat通信

缺点:

  1. JobTracker 是 Map-reduce 的集中处理点,存在单点故障
  2. JobTracker 完成了太多的任务,造成了过多的资源消耗,当 map-reduce job 非常多的时候,会造成很大的内存开销,潜在来说,也增加了 JobTracker fail 的风险,这也是业界普遍总结出老 Hadoop 的 Map-Reduce 只能支持 4000 节点主机的上限。
  3. TaskTracker 端,以 map/reduce task 的数目作为资源的表示过于简单,没有考虑到每个task的 cpu/ 内存的占用情况,如果两个大内存消耗的 task 被调度到了一块,很容易出现 OOM。
  4. 在 TaskTracker 端,把资源强制划分为 map task slot 和 reduce task slot, 如果当系统中只有 map task 或者只有 reduce task 的时候,会造成资源的浪费,也就是前面提过的集群资源利用的问题。
  5. 源代码层面分析的时候,会发现代码非常的难读,常常因为一个 class 做了太多的事情,代码量达 3000 多行,造成 class 的任务不清晰,增加 bug 修复和版本维护的难度
  6. 从操作的角度来看,现在的 Hadoop MapReduce 框架在有任何重要的或者不重要的变化 ( 例如 bug 修复,性能提升和特性化 ) 时,都会强制进行系统级别的升级更新。更糟的是,它不管用户的喜好,强制让分布式集群系统的每一个用户端同时更新。这些更新会让用户为了验证他们之前的应用程序是不是适用新的 Hadoop 版本而浪费大量时间。

YARN 是对旧的map-reduce框架的完全重构。根本的思想是将 JobTracker 两个主要的功能分离成单独的组件,这两个功能是资源管理和任务调度 / 监控。

ResourceManager, ApplicationMaster 与 NodeManager 三个部分取代了 JobTracker和TaskTracker。

ResourceManager 调度、启动每一个 Job 所属的 ApplicationMaster、另外监控 ApplicationMaster 的存在情况;具体来说就是接收 JobSubmitter 提交的作业,按照作业的上下文 (Context) 信息,以及从 NodeManager 收集来的状态信息,启动调度过程,分配一个 Container 作为 App Mstr

NodeManager 功能比较专一,就是负责 Container 状态的维护,并向 RM 保持心跳。

ApplicationMaster 负责一个 Job 生命周期内的所有工作

Hadoop 权威指南学习1 (主要框架)的更多相关文章

  1. Hadoop权威指南学习笔记二

    MapReduce简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.n ...

  2. Hadoop权威指南学习笔记一

    Hadoop简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出.一起学习一起进步. 转载请注明:http://blog.csdn.net/ ...

  3. Hadoop权威指南学习笔记三

    HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my ...

  4. hadoop权威指南学习(一) - 天气预报MapReduce程序的开发和部署

    看过Tom White写的Hadoop权威指南(大象书)的朋友一定得从第一个天气预报的Map Reduce程序所吸引, 殊不知,Tom White大牛虽然在书中写了程序和讲解了原理,但是他以为你们都会 ...

  5. 转载:Hadoop权威指南学习笔记

    转自:http://pieux.github.io/blog/2013-05-08-learn-hadoop-the-definitive-guide.html 1 前言 Hadoop的内部工作机制: ...

  6. Hadoop权威指南 - 学习笔记

    初识Hadoop.关于MapReduce Hadoop宏观介绍 相对于其他系统的优势 关系型数据库管理系统 为什么不能用配有大量硬盘的数据库进行大规模分析?为什么需要Hadoop? 因为计算机硬盘的发 ...

  7. Hadoop 权威指南学习2 (Sqoop)

    6. Sqoop Apache sqoop is an open source tool that allow users to extract data from structured data s ...

  8. hadoop权威指南学习

    通常情况下,处理少量的大型文件更容易.更有效,为什么呢? map阶段中的键如果不需要可以忽略掉? MapReduce过程也可以用于本地文件的处理,但是如果是要使用到集群的话还需要HDFS. Data ...

  9. HTTP权威指南-学习笔记

    目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...

随机推荐

  1. http应用优化和加速说明-负载均衡

    负载均衡技术       现代企业信息化应用越来越多的采用B/S应用架构来承载企业的关键业务,因此,确保这些任务的可靠运行就变得日益重要.随着越来越多的企业实施数据集中,应用的扩展性.安全性和可靠性也 ...

  2. jboss eap 6.3 集群(cluster)配置

    接上一篇继续,Domain模式解决了统一管理多台jboss的问题,今天我们来学习如何利用mod_cluster来实现负载均衡.容错. mod_cluster是jboss的一个开源集群模块(基于apac ...

  3. Spring Security笔记:使用数据库进行用户认证(form login using database)

    在前一节,学习了如何自定义登录页,但是用户名.密码仍然是配置在xml中的,这样显然太非主流,本节将学习如何把用户名/密码/角色存储在db中,通过db来实现用户认证 一.项目结构 与前面的示例相比,因为 ...

  4. 工作随笔——pre-commit钩子限制日志长度和提交的文件类型

    2014-09-18:解决Subversion edge 的hook中文乱码问题 近期检查SVN时发现备份好的文件体积异常庞大.才跑2个月备份出来的大小就有4G多.仔细查询发现很多很多IDE自动生成的 ...

  5. opencv2-新特性及Mat

    本文参照<opencv_2.4.9tutorial>的core部分完成.因为功力还不足以学习侯捷那种大师一样去深入浅出的解析opencv的源码,也只能先学会怎么用opencv,然后实在觉得 ...

  6. IIS安装与MVC程序部署

    最近在做访客系统,虽然说不是什么多大的项目,但麻雀虽小五脏俱全,使用EF Code First+Mysql+Frozenui响应式布局,感觉通过这个项目学到好多东西,Mysql的使用.EF映射Mysq ...

  7. jQuery.uploadify-----文件上传带进度条,支持多文件上传的插件

    借鉴别人总结的uploadify:基于jquery的文件上传插件,支持ajax无刷新上传,多个文件同时上传,上传进行进度显示,控制文件上传大小,删除已上传文件. uploadify有两个版本,一个用f ...

  8. NDK开发之javaVM

    1.关于JNIEnv和JavaVM JNIEnv是一个与线程相关的变量,不同线程的JNIEnv彼此独立.JavaVM是虚拟机在JNI层的代表,在一个虚拟机进程中只有一个JavaVM,因此该进程的所有线 ...

  9. 重拾Blog

    上个月是我入职现在的公司三周年的月份,所以又续订了五年的合同,最近有一些思考,也不知道这个五年能否还会一直在这个公司工作. 一切随缘吧. 闲适有毒,忙碌的时光总是过的很快,自从加入这个公司以来,日常的 ...

  10. 曼慧尼特u检验(两个样本数据间有无差异)

    曼-惠特尼U检验(Mann-Whitney检验) How the Mann-Whitney test works Mann-Whitney检验又叫做秩和检验,是比较没有配对的两个独立样本的非参数检验. ...