Hadoop首讲

在学习之前,务必要扫一眼官方文档,这样才有利于理解。

在Apache的官方文档首页里面介绍Hadoop,是这样介绍的:

Apache Hadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。 它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。 该库本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用层的故障,从而在计算机集群之上提供高可用性服务,每个计算机都可能容易出现故障。

该项目包括以下模块:

  • Hadoop Common:支持其他Hadoop模块的常用实用程序。

  • Hadoop分布式文件系统(HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。

  • Hadoop YARN:作业调度和集群资源管理的框架。

  • Hadoop MapReduce:基于YARN的系统,用于并行处理大型数据集。

  • Hadoop OzoneHadoop的对象存储。

  • Hadoop SubmarineHadoop的机器学习引擎。

Apache的其他Hadoop相关项目包括:

  • Ambari™:基于Web的工具,用于配置,管理和监控Apache Hadoop集群,包括对Hadoop HDFS,Hadoop MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和Sqoop的支持。Ambari还提供了一个用于查看群集运行状况的仪表板,例如热图和能够直观地查看MapReduce,Pig和Hive应用程序以及以用户友好的方式诊断其性能特征的功能。
  • Avro™:数据序列化系统。
  • Cassandra™:可扩展的多主数据库,没有单点故障。
  • Chukwa™:用于管理大型分布式系统的数据收集系统。
  • HBase™:可扩展的分布式数据库,支持大型表的结构化数据存储。
  • Hive™:一种数据仓库基础架构,提供数据汇总和即席查询。
  • Mahout™:可扩展的机器学习和数据挖掘库。
  • Pig™:用于并行计算的高级数据流语言和执行框架。
  • Spark™:用于Hadoop数据的快速通用计算引擎。Spark提供了一种简单而富有表现力的编程模型,支持广泛的应用程序,包括ETL,机器学习,流处理和图形计算。
  • Tez™:基于Hadoop YARN的通用数据流编程框架,它提供了一个功能强大且灵活的引擎来执行任意DAG任务,以处理批量和交互式用例的数据。Tez正在被Hadoop生态系统中的Hive™,Pig™和其他框架以及其他商业软件(例如ETL工具)采用,以取代Hadoop™MapReduce作为底层执行引擎。
  • ZooKeeper™:用于分布式应用程序的高性能协调服务。

看完介绍,还得看看对应的版本,为什么这么说呢,因为不同的版本有着不同的功能,以便于你下载的时候知道是否稳定。由于apache的最原始的hadoop的版本又多又混乱,并且还考虑到兼容性、安全性等问题,衍生出CDHHDP等产品。

Cloudera提出了Hybrid Open Source的架构:核心组件名称叫CDH(Cloudera's Distribution including Apache Hadoop),开源免费并与Apache社区同步,用户无限制使用,保证Hadoop基本功能持续可用,不会被厂家绑定;数据治理和系统管理组件闭源且需要商业许可,支持客户可以更好更方便的使用Hadoop技术,如部署安全策略等。Cloudera也在商业组件部分提供在企业生产环境中运行Hadoop所必需的运维功能,而这些功能并不被开源社区所覆盖,如无宕机滚动升级、异步灾备等。

Hortonworks采用了100%完全开源策略,产品名称为HDP(Hortonworks Data Platform)。所有软件产品开源,用户免费使用,Hortonworks提供商业的技术支持服务。与CDH相比,管理软件使用开源Ambari,数据治理使用Atlas,安全组件使用Ranger而非Sentry,SQL继续紧抱Hive大腿。

对于国内而言,绝大多数选择CDH版本,CDH和Apache版本主要区别如下:

CDH版本 Apache版本
版本的划分非常清晰,只有两个系列的版本,分别是cdh3和cdh4,分别对应第一代Hadoop(Hadoop 1.0)和第二代Hadoop(Hadoop 2.0) Apache版本则混乱得多
比Apache hadoop在兼容性,安全性,稳定性上有增强 兼容与安全方面欠缺,需要自行定制
更新速度比Apache官方快 速度一般
支持Kerberos安全认证 使用简陋的用户名匹配认证
CDH文档清晰,很多采用Apache版本的用户都会阅读CDH提供的文档,包括安装文档、升级文档等 文档较多较乱,需自行整理
CDH支持Yum/Apt包,Tar包,RPM包,Cloudera Manager四种方式安装 Apache hadoop只支持Tar包安装

PS:CDH3版本是基于Apache hadoop 0.20.2改进的,并融入了最新的patch,CDH4版本是基于Apache hadoop 2.X改进的,CDH总是并应用了最新Bug修复或者Feature的Patch,并比Apache hadoop同功能版本提早发布。

注:CDH使用推荐的Yum/Apt包安装时,有以下几个好处: 1、联网安装、升级,非常方便 2、自动下载依赖软件包   3、Hadoop生态系统包自动匹配,不需要你寻找与当前Hadoop匹配的Hbase,Flume,Hive等软件,Yum/Apt会根据当前安装Hadoop版本自动寻找匹配版本的软件包,并保证兼容性。   4、自动创建相关目录并软链到合适的地方(如conf和logs等目录);自动创建hdfs, mapred用户,hdfs用户是HDFS的最高权限用户,mapred用户则负责mapreduce执行过程中相关目录的权限。


​ 其实由hadoop的生态可以看得出,里面有许许多多模块都是配合使用的,没一个模块负责的部分不同,不过都得在HDFS这个分布式文件系统上进行,至于你想要高吞吐、实时计算、离线计算、机器学习,那就得看你自己的需求了。

根据理解模块,大致分为:

  1. 底层——存储层,文件系统HDFS
  2. 中间层——资源及数据管理层,主要以YARN主导的资源分配
  3. 上层——MapReduce、Impala、Spark等计算引擎
  4. 顶层——基于MapReduce、Spark等计算引擎的高级封装及工具,如Hive、Pig、Mahout等等

总结Hadoop的特点:

  1. 高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
  2. 高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
  3. 高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
  4. 高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
  5. 低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。

对于Hadoop上的应用大致可以分为这两类:

1、IT优化

将已经实现的应用和业务搬迁到Hadoop平台,以获得更多的数据、更好的性能或更低的成本。通过提高产出比、降低生产和维护成本等方式为企业带来好处。

这几年Hadoop在数个此类应用场景中已经被证明是非常适合的解决方案,包括:

  • 历史日志数据在线查询:传统的解决方案将数据存放在昂贵的关系型数据库中,不仅成本高、效率低,而且无法满足在线服务时高并发的访问量。以HBase为底层存储和查询引擎的架构非常适合有固定场景(非ad hoc)的查询需求,如航班查询、个人交易记录查询等等。现在已经成为在线查询应用的标准方案,中国移动在企业技术指导意见中明确指明使用HBase技术来实现所有分公司的清账单查询业务。

  • ETL任务:不少厂商已经提供了非常优秀的ETL产品和解决方案,并在市场中得到了广泛的应用。然而在大数据的场景中,传统ETL遇到了性能和QoS保证上的严重挑战。多数ETL任务是轻计算重IO类型的,而传统的IT硬件方案,如承载数据库的小型计算机,都是为计算类任务设计的,即使使用了最新的网络技术,IO也顶多到达几十GB。

    采用分布式架构的Hadoop提供了完美的解决方案,不仅使用share-nothing的scale-out架构提供了能线性扩展的无限IO,保证了ETL任务的效率,同时框架已经提供负载均衡、自动FailOver等特性保证了任务执行的可靠性和可用性。

  • 数据仓库offload:传统数据仓库中有很多离线的批量数据处理业务,如日报表、月报表等,占用了大量的硬件资源。而这些任务通常又是Hadoop所善长的

2、业务优化

在Hadoop上实现原来尚未实现的算法、应用,从原有的生产线中孵化出新的产品和业务,创造新的价值。通过新业务为企业带来新的市场和客户,从而增加企业收入。

为什么Hadoop如此成功?这个问题似乎是个马后炮,但当我们今天惊叹于Hadoop在短短10年时间取得如此统治性地位的时候,确实会自然而然地思考为什么这一切会发生。基于与同期其他项目的比较,我们认为有很多因素的综合作用造就了这一奇迹:

  • 技术架构:Hadoop推崇的本地化计算理念,其实现在可扩展性、可靠性上的优势,以及有弹性的多层级架构等都是领先其他产品而获得成功的内在因素。没有其他任何一个这样复杂的系统能快速的满足不断变化的用户需求。
  • 硬件发展:摩尔定律为代表的scale up架构遇到了技术瓶颈,不断增加的计算需求迫使软件技术不得不转到分布式方向寻找解决方案。同时,PC服务器技术的发展使得像Hadoop这样使用廉价节点组群的技术变为可行,同时还具有很诱人的性价比优势。
  • 工程验证:Google发表GFS和MapReduce论文时已经在内部有了可观的部署和实际的应用,而Hadoop在推向业界之前已经在Yahoo等互联网公司验证了工程上的可靠性和可用性,极大的增加了业界信心,从而迅速被接纳流行。而大量的部署实例又促进了Hadoop的发展喝成熟。
  • 社区推动:Hadoop生态一直坚持开源开放,友好的Apache许可基本消除了厂商和用户的进入门槛,从而构建了有史以来最大最多样化最活跃的开发者社区,持续地推动着技术发展,让Hadoop超越了很多以前和同期的项目。
  • 关注底层:Hadoop 的根基是打造一个分布式计算框架,让应用程序开发人员更容易的工作。业界持续推动的重点一直在不断夯实底层,并在诸如资源管理和安全领域等领域不断开花结果,为企业生产环境部署不断扫清障碍。

那么,下一期我们将一起学习HDFS。

参考地址:https://www.cnblogs.com/shijiaoyun/p/5778025.html

你可能感兴趣的:(Hadoop首讲)