第一章《数据之路,始于Hadoop》第一节 Hadoop 基础介绍

早过忘川 提交于 2019-12-05 23:03:21

第一节    hadoop介绍

    大数据时代最重要的论文是Google三篇,分布讲述了GFS、MapReduce和BigTable。而依照前两篇论文设计的开源项目Hadoop,则迅速风靡,成为了大数据行业的事实标准。Google的论文建议要看,尤其是前2偏,其实并没有难度,看完对于Hadoop的理解会更加清晰。

    大数据为什么会兴起?没有大数据以前是怎么做的?这2个问题其实以我的经验回答不是很合适,但是既然提到,就仅从个人的经验出发来说下必要性进入大数据行业第一节公司是一个移动SDK公司,主要是嵌入SDK通过展示广告、APP推荐下载等来给开发者带来收入。当时的第一个项目是分析这些SDK一天的日志(apache日志),对下载的每个APP按省份做一个排序。任务交给了SDK开发团队,具体的方案不清楚,但是一天的数据需要跑10小时以上(记忆模糊,4年前文章提到过此事)。后来用Hadoop,写了简单的MR处理,大概10多分钟就搞定了,这就是大数据存在的意义,也能从一个角度反应为什么会兴起。

    关于Hadoop,首先必须要介绍下概念?现在有很多初学者,一上来就问Datanode是什么?Datanode和NodeManager能不能在一台节点上?对于这种问题,我的回答都是“太小白,先看看书吧”。对于Hadoop的学习,很多人从Cloudera Manager或者Ambari开始,我个人非常不建议。我还是觉得实战前,先看看书,至少翻一本熟悉了以后,其他的可以边学边研究。而一开始就极度依赖这些工具,概念不清楚,至少会让人觉得不专业,不是认真学习的料子。

  1.     版本和分支:
    参考官方wiki,
    https://wiki.apache.org/hadoop/Roadmap,目前hadoop主流分支有3条,分别是hadoop 1.X、hadoop 2.X和hadoop 3.X。
    Hadoop1.X是从hadoop 0.20发展而来,我还记得12刚开始玩hadoop的时候就是0.20.2,那时候在公司用的就是cdh3u3,后来的公司升级到了1.0,但是一直到14年离职,也都还是1.X,没有升级到2.x,另外朋友私下聊天,其实那个时候还是以1.X为主的,2.X一般是新建集群才会使用。主要的原因就是因为升级中的风险,升级的详细过程董西城老师有文章详细介绍:
    http://dongxicheng.org/mapreduce-nextgen/hadoop-upgrade-to-version-2/
    Hadoop 2.XHadoop2.0除了api的改动,对外界最大的感知就是增加了Yarn作为mapreduce的调度系统,计算资源也从单一的slot改为了内存/CPU等资源,按nodemanager不同可以区别配置。此外hadoop2.X还解决了一些1.X中的大坑点,比如单点故障,提供了基于QJM和NFS2种不同的解决方案。
    Hadoop3.X当前资料不是很多,其中值得期待的就是实现了Erasure Coding(纠删码),EC的强大之一是可以将以往的3副本,减少为1.5副本,还能保证数据不会丢失,这一强大功能在云存储领域广泛应用。


    后续的系列介绍中,我们选择的版本是Hadoop2.X中的,2.6.4,因为文档好找:  http://hadoop.apache.org/docs/r2.6.4/    


  2. 概念介绍(简介,详细的拆解在HDFS和YARN的篇章讲述):

    HDFS:Hadoop Distributed File System 

    NameNode:hdfs主节点,不做实际存储主要管理hdfs的元数据信息、维护文件块和节点的对应关系以及维护用户对文件的修改信息。
    DataNode:hdfs的工作节点,实际的数据处理和存储节点。
    SecondaryNameNode:辅助节点,协助NameNode合并fsimage和edits文件,主要是做checkpoint的工作,在namenode宕机是可以及时恢复。

    CheckPoint Node:和Secondary NameNode作用一样,只是因为Secondary名字容易混淆而添加,使用方法
    Backup Node:和Secondary、CheckPoint类似,提供checkpoint功能,但是会保留和namenode完全一致的信息

    Yarn:

    ResourceManager:主节点,处理客户端请求;管理NodeManager和Application Master;管理资源的调度和分配

    NodeManager:工作节点,单个节点的资源管理;处理来自RM和AM的命令

    Application Master:数据切分;为application申请资源,分配任务;监控任务的运行

                    WebAppProxyServer:顾名思义,yarn web页面上对application的代理,主要是出于安全考虑

                    JobHistoryServer:主要负责处理任务的日志信息

            介绍了概念,开头的问题,DataNode和NodeManager能不能部署到同一个节点就显而易见了。答案是完全可以,而且这样会很好,前提是要看好机器的配置,做好划分。


第二节    搭建hadoop集群,敬请期待


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!