第一节 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开始,我个人非常不建议。我还是觉得实战前,先看看书,至少翻一本熟悉了以后,其他的可以边学边研究。而一开始就极度依赖这些工具,概念不清楚,至少会让人觉得不专业,不是认真学习的料子。
版本和分支:
参考官方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.X:Hadoop2.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/
概念介绍(简介,详细的拆解在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集群,敬请期待
来源:oschina
链接:https://my.oschina.net/u/146658/blog/663515