网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
不过也尽力把它写成让非计算机专业的读者也能读懂,当然他们的困难会多一些,但也绝非无法理解。正因如此,本文叙述也许显得过于通俗直白,有时候可能还有点啰嗦。
学习目录
====
主要内容
====
全文总共分为20章的内容,因为内容比较多,所以接下来我就给大家做个粗略的介绍,每一节都有更加细化的内容!
第1章大数据与Hadoop,
第2章研究方法,我们的目的是要研究 Hadoop的源代码,而研究必须有研究方法。这里所说的研究方法是指如何阅读、分析、理解各种计算机程序源代码的方法和手段。实际上对此并没有一种标准的或者公认的方法,各人所用的方法和手段可能都不一样,这里只是把我所用的方法介绍给读者,以期抛砖引玉
第3章Hadoop集群和YARN,虽然 Hadoop也可以在单机上运行,但是这个平台的典型运行场景无疑是在多机的集群(Cluster)上。我们把运行着 Hadoop平台的集群,就Hadoop平台的边界所及,称为“Hadoop集群”。其中的每台机器都成为集群的一个“节点(node)”,节点之间连成一个局域网。这个局域网一般都是交换网,而不是路由网。这就是说,集群中只有交换机(switch),一般是二层交换机,也可能是三层交换机,但是没有普通的路由器,因为那些路由器引入的延迟太大了。不过这也不绝对,有时候可能确实需要将一个集群分处在不同网段中,而通过路由器相连,但是这并不影响 Hadoop的运行(除性能降低之外)。就 Hadoop而言,路由器与交换机在逻辑上是一样的。
第4章Hadoop的RPC机制,RPC是“RemoteProcedureCall”即“远地过程调用”的缩写。这个机制的目的,是让一台机器上的程序能像调用本地的“过程”那样来调用别的机器上的某些过程。这里所谓“过程”,在传统的 C程序设计中统称为“函数”,在 Pascal程序设计中既可以是 PROCEDURE 也可以是 FUNCTION,在Java等 OO 程序设计语言中就是 “方 法 (method)”。所 以,Java传 统 的RPC机制称为 RMI,即“远地方法启用(RemoteMethodInvocation)”。
第5章Hadoop作业的提交,在计算机上启动运行一个应用,首先要把这个应用作为“作业(Job)”提交给计算机系统。
一般这是通过键入一个命令行或点击某个图标而实现的,操作很简单。但是,如果我们要考察在提交作业时系统内部的流程,那就比较复杂了。学过操作系统的人对单机上的作业提交过程会有比较深入的了解,不过那不是本书所要关注的问题。本书所关注的是,在通常运行于计算机集群的 Hadoop系统上,作业是怎样提交的。
第6章作业的调度与指派,
第7章NodeManager与任务投运,用户提交的作业为 ResourceManager接受并得到调度运行之后,RM会设法将其投入运行。但是一 个 作 业 (Job 或 App)通常都包含着很多任务,比方说N个MapTask和1个ReduceTask,所以作业的投运终究会分解成许多任务的投运。
第8章MRAppMaster与作业投运,
第9章YARN子系统的计算框架,Hadoop中 YARN 子系统的使命是为用户提供大数据的计算框架。早期的 Hadoop,甚至早期的 YARN 都只提供一种计算框架,那就是 MapReduce。如前所述,MapReduce是一种极简的,然而在很多情况下颇为有效的计算模型和框架。
但是Hadoop的MapReduce框架要求使用者提供用Java语言编写的 Mapper和 Reducer,而 App本身则虽然简单但也要求用Java编写,这又使有些用户感到有点不便,而且 MapReduce这个模式也过于简单和单调。所以 Hadoop后来有了一些新的发展,除 MapReduce外又提供了称为Chain和Stream的计算框架。一来使用户不必非得用Java编程;二来更允许用户利用 Linux上的 Utility工具软件搭建更像“数据流”的结构。本章介绍 YARN 子系统为用户提供的计算框架,当然主要还是传统的 MapReduce框架。
第10章MapReduce框架中的数据流
第11章Hadoop的文件系统HDFS
第12章HDFS的DataNode
第13章DataNode与NameNode的互动,数据节点DataNode在运行中会与三种对端有互动。
第一种是NameNode,如前所述,对于数据块的存储地点,虽然最初是由NameNode分配和指定的,但相关的信息最终来自DataNode的报告。
第二种是用户的App(包括Shell),用户的App可以存在于集群内的任何节点上,不过那是在独立的JVM上,即使与DataNode同在-一个节点上也互相独立;然而真正把数据存储在DataNode上或从DataNode读取数据的却是App(或Shell)。
第三种是集群中别的DataNode,就是说DataNode与DataNode之间也会有通信和互动,这主要来自数据块复份replica的传输和转储。
数据块在HDFS文件系统中的存储是“狡兔三窟”的,一个数据块要分别存储在若干不同的DataNode.上,但是系统并不要求App把–个数据块分别发送给几个DataNode,而只需发送给其中的一个,后面就是DataNode之间的事了。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!