Hadoop权威指南阅读笔记

一、MR和关系型数据node

MR和传统的关系型数据库处理的数据是不一样,传统关系型数据库处理的是较结构化数据,对于半结构化和非机构话数据处理的还不是很好,MR正好对关系型数据不擅长领域作了补充,MR输入的键值并非数据的固有属性,而是由分析数据人员来选择的,就目前看来他们是互补的关系,MR经过HIVE实现了hadoop固有的SQL,不过mr的适应性更强一些,不过随着之后的发展关系型数据库也会慢慢不断发展的。另一个值得注意的就是MR是基于数据流的数据处理,处理的是一种非结构化的数据,比SQL结构性数据更具备适用性,是这种编程更加具备伸缩性。数据库

二、MR的核心是实现数据本地化,因为MR是基于数据流式处理,因此带宽资源就显得尤其重要。编程

三、因为MR采用的是无共享的框架,各节点之间都是相对独立的,因此MR能够检测出节点失败的状况,在MR过程当中,R阶段是要以M的结果为输入的,因此若是R没有获取到M的结果的时候会从新执行。在MR过程当中,R的output输出目录是不能存在的,不然没法执行,一个长时间执行后的结果被覆盖是一件很懊恼的事情。缓存

四、MR过程当中有两个很重要的角色JobTracker和TaskTracker,能够打个比喻,J至关于管理员(负责分配任务),管理者一批员工T(负责执行任务),员工执行任务要从J那边获得任务编号才能够进行任务执行。网络

五、hadoop将输入数据分红等长的数据分片,每个分片都是一个map任务,并由用户自定义的函数MR来处理分片中的的每一条记录。框架

六、决定整个做业时间的主要因素分为两种一、管理分片的时间二、map建立任务的时间函数

七、数据本地优化,各节点执行map,各个节点存有的数据分片越趋向于HDFS分块能够得到最佳性能,这样确保了单个节点的最大输出块。输出块的大小根据硬件和集群的实际状况而定,磁盘的读取量。R阶段并不具有本地化的优点,他的输入一般是来自M的结果,所以须要经过网络进行传输发送到任务R节点上,这里就涉及到带宽问题了,由于咱们应该尽可能减小M向R的输入,经过一些其余的手段如COMBINER或者并行输入或者经过压缩数据流的手段等。oop

八、hadoop目前不适用的场景 一、低时间延迟的 能够考虑Storm 或者Spark 二、大量小文件,主要缘由是全部的数据块元数据信息都存放在namenode文件夹下,这样大量的小文件会形成namenode文件内存被占用 三、多用户写入,任意修改的,由于hadoop设计的初衷是为了一次写入,屡次读取的。性能

九、HDFS的数据块大于磁盘的块是为了减小寻址。优化

十、namenode管理着全部datanode的域名空间,他维护着文件系统及整棵树的文件目录,这些信息被永久的保存在本地磁盘上,namenode也记录着各个节点的数据信息,可是他并不保存在本地磁盘上,随着每次重启都要重构节点信息。更要命的是namenode是单节点,一个集群只有一个namenode因此一旦namenode出现问题,整个集群瘫痪了,若是使用keepalived的话,能够做为辅助节点,可是不免仍是会有数据的丢失。听说hadoop2.x已经解决了这个问题。

十一、HDFS客户端经过DistributedFileSystem 得到一个FsDataInputStream对象,从na

menode那里获取到datanode的文件位置信息。DFSoutputStream处理datanode和namenode之间的通讯。 

十二、一致模型:在读取数据的时候,FSDdataoutputstream获得的数据是按块来显示的就是说,块在读取的时候不能当即显示须要等该块读完了,这样就形成了数据缓存,一旦集群发生故障数据块丢失生产环境下是不容许的,HDFS提供了一个方法来强制全部的缓存与数据节点保持同步即对FSDataOutPutStream调用sync(),能保证到目前为止写入数据的一致性,不过这样会对应用增长一些额外的性能开销,因此引用该方法还须要根据集群性能的均衡而定。

1三、并行复制,典型的应用就是两个HDFS之间的传输,该方法能够从hadoop文件系统复制大量的数据,也能够将大量数据从hadoop复制出来。这里咱们能够优化尽可能的减小MAP构建,尽可能让他多复制。

相关文章
相关标签/搜索