微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Hadoop之Hadoop的前世今生,适合什么场景?

一提大数据,人们就想到Hadoop。Hadoop基本上成为了大数据的代言人了。那Hadoop到底是什么?用于解决什么问题?

hadoop的起源背景

HDFS源自于Goole的GFS论文(发表于2003年10月),HDFS是GFS的克隆版。

PS: 近些年和google相关的几个开源产品对软件进步影响还是挺大的,比如:移动应用圈的Android、大数据圈的Hadoop、云原生圈的Kubernetes。这是众多计算机牛人喜欢google的很大的一个原因吧

 

hadoop的定义(或叫 定位)

Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算。

两大特点:易于扩展的分布式文件系统(可支撑存储和计算);通过容错机制,可稳定运行在大量普通廉价的机器上。

 

hadoop目前的三个版本

版本号版本信息版本特点
V1

1.始于2002年,是apache Lucene的子项目(Apache Nutch)

2.2004年google论文发表后(Mapreduce:简化大规模集群上的数据处理),Nutch扩展了MR计算框,被命名为hadoop,成为apache顶级项目。

由HDFS、MapReduce两部分组成。

1.HDFS由1个NameNode和多个Datanode组成(后续版本增加了secondary NameNode-非热备份)

2.Mapreduce由1个JobTracker和多个TaskTracker(负责map和reduce任务)组成。JobTracker(作业跟踪器)异常时,所有作业必须重启。

V2

2012年发布V2.0.0的alpha版本,V2版本可满足大部分业务场景,一直在更新和完善。

最新版本是 V2.9.2

推荐使用V2.7.7或V2.8.5

HDFS、MapReduce有较大改进。

1.HDFS支持主从nameNode(通过NFS或JournalNode实现)-热备份/切换。
2.HDFS联合(HDFS Federation)通过通用存储模型,实现多个HDFS命名空间(多套HADOOP集群)使用相同的底层存储设备。并有了HDFS快照的支持

3.Mapreduce的资源调度由YARN支持,也有利于使用MR以外的计算模型。

V3

2017年6月发布V3.0.0的alpha版本,最新版本是V3.3.0和V3.2.2

从小版本数据量,V3的发展速度慢了一些(V2目前有41个小版本,V3目前是18个)

 

1.JDK升级为1.8。

2.HDFS支持纠删码(比副本机制节省了一半以上的存储空间 3倍VS1.4倍)。

3.nameNode支持单主多从,进一步提升可用性。

4.MapReduce本地优化性能提升了30%(实际使用中不是很稳定)

说明:

1、上述表格中数据统计于 2021年1月21日

2、对于使用V2,还是使用V3的问题:

  • 对于研发能力一般,主要是使用hadoop来实施项目,同时没有苛刻的性能需求时,踏踏实实使用V2即可。

  • 对于研发能力强的公司(特别是通过hadoop的二开获取利润),在大规模使用V2的同时,需要积极使用V3版,并将V2应用迁移到V3,对比不同。

 

 

在生产中使用hadoop,有三种选择,根据实施团队的技术能力、财力,选择合适的实施方式。

实施方式典型方案优缺点
Apache社区Apache Hadoop

如果技术能力强、有足够的技术储备,使用apache版本更灵活,或者使用开源版本的CDH/HDP

 

如果技术储备较差、同时不差钱,则使用商业产品。

 

CDH/HDP及商业产品都有web管理,更易于维护,管理,且稳定性高。

商业公司开源

Cloudera公司:CDH

Hortonworks公司:HDP

... ...

商业公司产品

浪潮:云海 Insight HD

华为:FusionInsight HD

星环:TDH

... ... 

 

高容错性
  • 数据自动保存多个副本

  • 副本丢失后,自动恢复

流式文件访问
  • 一次写入,多次读取

  • 保证数据一致性

构建成本低、安全可靠
  • 构建在廉价机器上

  • 通过多副本提高可靠性

  • 提供了容错和恢复机制

 

 

适合的场景

很适合大数据批处理

• 移动计算不移动数据

• 数据位置暴露给计算框架

• GB、 TB甚至PB级别数据

• 百万规模以上的文件数量

• 10K节点规模

不适合的场景

1、不适合低延迟数据访问

2、不适合大量小文件存储

• 占用NameNode大量内存空间

• 磁盘寻道时间超过读取时间

3、不适合并发写入

一个文件只能有一个写入者

4、不提供文件随机修改

• 只支持追加

 

 

通过上面的内容,我们了解了适合使用hadoop的场景后、同时知道了hadoop的组成(HDFS、MapReduce、Yarn)。

后面,我们将以 V2.7.7 版本为例子,分别介绍 hadoop的三驾马车(HDFS、MapReduce、Yarn)。敬请期待。

 

 

 

如果觉得这篇文章对您有帮助,欢迎关注公众号 “学点儿编程”,公众号不断推送干货文章

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐