Hadooop 可以称作一个 大数据管理和分析平台。
Hadoop 是一个开源的大数据分析软件,或者说编程模式。它是通过分布式的方式处理大数据的,因为开源的原因现在很多企业都在运用 hadoop 的技术来解决一些大数据的问题,在数据仓库方面 hadoop 是非常强大的。但在数据及时以及实时的分析展现层面上,hadoop 也有着明显的不足。
但 Hadoop 并不等于大数据,它只是一个成功的分布式系统,用于处理离线数据。
除了 Hadoop 之外,Storm 和 Apache Spark 也是优秀的大数据处理平台。
对比:
- Storm。在介绍 Storm 之前,首先介绍一下什么是流式数据。在现实生活中,很多数据都属于流式数据,即计算的输入并不是一个文件,而是源源不断的数据流,如网上实时交易所产生的数据。用户需要对这些数据进行分析,否则数据的价值会随着时间的流逝而消失。Storm 是一个成熟的分布式流计算平台,擅长流处理或者复杂事件处理。Storm 采用的计算模型不是 MapReduce,同时 MapReduce 也已经被证明不适合做流处理。另外,Storm 运行在 YARN 之上,从这个角度来说,它属于 Hadoop 组件。
- Apache Spark。Apache Spark 是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速。Spark 还引进了名为弹性分布式数据集(RDD)的抽象。RDD 是分布在一组节点中的只读对象集合。这些集合是弹性的,如果数据集一部分丢失,则可以对它们进行重建。RDD 的计算速度在特定场景下大幅度领先 MapReduce。
其中 Spark SQL 为支持 SQL 的结构化查询工具,Spark Streaming 为 Spark 的流计算框架,MLlib 集成了主流机器学习算法,GraphX 则是 Spark 的图计算框架。
Spark 具有很强的适应性,能够读取 HDFS、S3、HBase 等为持久层读写原生数据,能够以 Mesos、YARN 和自身携带的 Standalone 作为资源管理器调度 job,来完成 Spark 应用程序的计算。
与 Hadoop 类似,Spark 支持单节点集群或多节点集群。对于多节点操作,Spark 依赖于 Mesos 集群管理器。Mesos 为分布式应用程序的资源共享和隔离提供了一个有效平台。该设置允许 Spark 与 Hadoop 共存于节点的一个共享池中。
Spark 可以将 Hadoop 集群中的应用在内存中的运行速度提升 100 倍,甚至能够将应用在磁盘上的运行速度提升 10 倍。
以分布式文件系统 HDFS(Hadoop Distributed File System) 和 MapReduce(Google MapReduce 的开源实现) 为核心的 Hadoop,为用户提供了系统底层透明的分布式基础构架。
Hadoop 是适合大数据的分布式存储和计算的平台。
- Hadoop 是一个框架。
- Hadoop 适合处理大规模数据。
- Hadoop 被部署在一个集群上。
当然,大数据开发工程师还需要具有大数据采集、大数据预处理、大数据存储与管理、分析挖掘与展现应用等大数据相关技术。
建议在实际工作中搭建大数据平台时选择 CDH 或者 HDP,方便运维管理,要不然,管理上千台机器的原生 Hadoop 集群,运维同学是会哭的。
从 Hadoop1.x 升级到 Hadoop2.x,架构发生了比较大的变化,这里面的 HDFS 是分布式存储,MapRecue 是分布式计算,咱们前面说了 Hadoop 解决了分布式存储和分布式计算的问题,对应的就是这两个模块。在 Hadoop2.x 的架构中,多了一个模块 YARN,这个是一个负责资源管理的模块,那在 Hadoop1.x 中就不需要进行资源管理吗?也是需要的,只不过是在 Hadoop1.x 中,分布式计算和资源管理都是 MapReduce 负责的,从 Hadoop2.x 开始把资源管理单独拆分出来了,拆分出来的好处就是,YARN 变成了一个公共的资源管理平台,在它上面不仅仅可以跑 MapReduce 程序,还可以跑很多其他的程序,只要你的程序满足 YARN 的规则即可。Hadoop 的这一步棋走的是最好的,这样自己摇身一变就变成了一个公共的平台,由于它起步早,占有的市场份额也多,后期其它新兴起的计算框架一般都会支持在 YARN 上面运行,这样 Hadoop 就保证了自己的地位。后面学习笔记中的Spark、Flink 等计算框架都是支持在 YARN 上面执行的,并且在实际工作中也都是在 YARN 上面执行。
图片摘自网上