==Hadoop1.0架构思考


LinkedIn工程经理眼中的数据世界格局
http://www.infoq.com/cn/news/2015/07/linkedin-bigdata

Hadoop最大的特点就是数据处理的民主化(分布决策),对于部分系统失效的情况能够较好的处理。喜欢上Hadoop的开发者们很快就在【Hadoop的基础上创建了新的抽象层,如Hive和Cascading等】,不过Hadoop 1.0仍然有很多局限性,【最大的两个局限性就是扩展性问题和资源配置的效率问题】。这两个问题到了Hadoop 2.0就好了很多。


Hadoop1.0架构思考 - 我的学习成长日记 - 博客频道 - CSDN.NET
http://blog.csdn.net/onlyqi/article/details/50478997

首先本文参考了Hadoop in action。书非常不错,建议大家学习。 初学的同学建议先去看mapreduce的概念: http://blog.csdn.net/onlyqi/article/details/6877661,否则不容易看懂这篇文章的。
第一个思考的问题:Hadoop架构 任何一个程序都可以被分为两个逻辑部分:程序逻辑本身和它操作的数据。数据本身需要大量的存储空间,而基于这些数据的计算或操作会消耗cpu,内存和存储空间。 因此Hadoop作为一个开源的分布式框架,自然需要考虑的也是两个方面:如何实现数据的分布data distribution,以及计算的分布computation distribution。
hadoop使用了master/slave node的架构,即主控服务器和从服务器。首先master将数据分散到各个slave node上,然后根据move-code-to-data的原则,将计算也分散到各个slave node上。同时master知道所有数据的具体存储位置,以及所有计算任务的执行情况,从而可以动态的调度–每台机器的作用并不固定– 由其上正在运行的daemon而定–其上运行了什么daemon,机器就具有了什么功能。
关于数据的进程: NameNode 和 DataNode NameNode是 HDFS (hadoop file system)的主控服务器。它指挥slave的DataNode守护进程执行低level的IO任务。It keeps track of how your files are broken down into file blocks, which nodes store those blocks, and the overall health of the distributed filesystem.
Secondary NameNode 并非NameNode的backup,而是部分承担了NameNode的工作。因此NameNode是单节点的(single point of failure)。在超大规模hadoop系统中,Namenode往往负载很重,容易失败。因此facebook,cloudera都修改了hadoop架构来减少系统失败几率。
关于计算的进程: JobTracker 和 TaskTracker 和用于storage的进程一样,用于计算的进程也使用了master/slave架构。The JobTracker is the master overseeing the overall execution of a MapReduce job and the TaskTrackers manage the execution of individual tasks on each slave node. Once you submit your code to your cluster, the JobTracker determines the execution plan by determining which files to process, assigns nodes to different tasks, and monitors all tasks as they’re running. Should a task fail, the JobTracker will automatically relaunch the task, possibly on a different node, up to a predefined limit of retries. 同时JobTracker还负责集群资源管理,如是否有新节点加入集群,是否有节点离开等等。 Each TaskTracker is responsible for executing the individual tasks that the JobTracker assigns. Although there is a single TaskTracker per slave node, each TaskTracker can spawn multiple JVMs to handle many map or reduce tasks in parallel. TaskTracker甚至可以同时执行mapper和reducer。
综合以上两个方面,一个典型的hadoop cluster结构如下:

这里写图片描述

可以看到NameNode既是HDFS的master,也是JobTracker的master。同时由于NameNode在内存中管理HDFS数据,因此运行压力大,单节点,扩展性差。据报道Hadoop1.0能管理的集群上线为4000~5000台机器。
第二个思考的问题:数据结构和数据存储 Hadoop采用MapReduce计算范型。如果希望将项目迁移到Hadoop集群运行,则必须使用Hadoop提供的API重写整个项目。这带来三方面的影响:
MapReduce很适合处理非结构数据。 MapReduce处理key/value pair形式的数据。不同的k/v数据之间逻辑上没有什么关系,因此大文件很容易被分片并分散到集群中去。同时支持非结构数据,就可以将几乎所有项目迁移到Hadoop。而不像关系型数据库那样,对数据有严格的要求。
在用Hadoop的API重写传统项目时会发现,Hadoop只有map和reduce两种语义。也就是说,任何数据操作,如join等,都需要被转换为map和reduce函数。因此复杂任务转换为MapReduce任务的开发效率比较低。
Hadoop的底层存储系统只能是HDFS,而不能使用普通文件系统或其他文件系统。因为只有使用了HDFS,才能自动对数据进行分发和处理。而操作HDFS上的文件需要调用特定的API,从而又增加了开发成本。

第三个思考的问题:move-code-to-data philosophy 这是一个思想,即computation应该发生在存储data的地方。其实这不是Hadoop的设计思想,而是MapReduce计算范型的思想。
第四个思考的问题: 复杂MapReduce任务 hadoop是基于MapReduce架构,但单个MapReduce job当然不足以应付各种应用的复杂需求。要实现大规模的复杂数据处理,hadoop实现了多MapReduce job的复杂组合,主要是:
Chaining MapReduce jobs in a sequence. 即hadoop可实现按顺序调用多个MapReduce jobs。这样数据可以做成像pipeline一样的一级级的处理。
Chaining MapReduce jobs in a dependency. 即每个MapReduce jobs之间可有相互的依存关系。例如首先使用两个job读入两种数据,之后将他们join。hadoop方便的实现了,在job1和job2都完全前等待,都完成后自动开始执行下一个job,即joining。
Chaining preprocessing and postprocessing steps。 在每一个job前后执行预处理和后处理。
Bloom filter。通常是一个大小固定的特殊数据对象,因此可以被放进内存中而不必担心内存溢出。Bloom filter可以在不要求高准确率的应用中,实现用小数据量估算结果的功能。因此适用于缓存数据等应用。 另外,Bloom filter and implement it with a mapper that keeps state information across records.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容