首先明确一个问题,大数据技术解决的是海量数据的存储和计算,我们的学习都是围绕这两个目标实现的。
Hadoop(分布式存储和计算实现)介绍:
狭义:指的是一个框架,Hadoop是由三部分组成:
- HDFS:分布式文件系统-------------存储;
- MapReduce:分布式离线计算框架----------------计算;
- Yarn:资源调度框架(hadoop2.x后出现的)
广义:广义Hadoop是不仅仅包含Hadoop框架,除了Hadoop框架之外还有一些辅助框架。Flume:日志数据采集,Sqoop:关系型数据库数据的采集;Hive:深度依赖Hadoop框架完成计算(sql);Hbase:大数据领域的数据库(mysql);Sqoop:数据的导出;后续会慢慢补充
Hadoop最早起源于Nutch,创始人是Doug Cutting(Nutch是一个开源Java实现的搜索引擎,它提供了运行自己的搜索引擎所需要的全部工具。包括全文搜索和Web爬虫,随着抓取网页数量的增加,无法解决十几亿网页的存储和索引)
2003、2004年谷歌发表的两篇论文为这个问题提供了解决方案(GFS,处理海量数据存储;MapReduce,实现海量网页的索引计算)
下面分别是谷歌的三篇论文(后面是对应的开源组件实现):
- GFS------>HDFS
- Google MapReduce------>Hadoop MapReduce
- BigTable------>Hbase
2008年以后成为Apache的顶级项目
Hadoop特点:
- 扩容能力:在计算机集群内分配数据并完成计算任务,集群可以方便地扩展到数千个节点
- 低成本:通过廉价的机器组成服务器集群来分发以及处理数据
- 高效率:在节点之间动态并行的移动数据
- 可靠性:(副本)能够自动维护数据的多份复制,并且在任务失败后能够自动的重新部署(redeplay)计算任务
有很多发行版本,后面再来细说咯
优点:
- Hadoop具有存储和处理数据的高可靠性
- Hadoop通过可用的计算机集群分配数据,完成存储和计算任务,这些集群可以方便地扩展到数以千计的节点中,具有高扩展性。
- Hadoop能够在节点之间进行动态地移动数据,并保证各个节点的动态平衡,处理速度非常快,具有高效性
- Hadoop能够自动保存 数据的多个副本,并且能够自动将失败的任务重新分配
缺点:
- Hadoop不适用于低延迟数据访问
- Hadoop不能高效存储大量小文件
- Hadoop不支持用户写入并任意修改文件