美文网首页
【hadoop】概念

【hadoop】概念

作者: 嘻洋洋 | 来源:发表于2019-03-06 17:29 被阅读0次

1.hadoop框架

Hadoop 是一个能够对大量数据进行分布式处理的基础框架。具有可靠、高效、可伸缩的特点。作为大数据,首先你要能存的下大数据,其次存的下数据之后,你就开始考虑怎么处理数据。hadoop就是用来解决这两个问题的。Hadoop 的核心组件是

  • HDFS:分布式文件系统
  • Mapreduce:分布式运算编程框架
  • YARN:运算资源调度系统

做个形象的比喻:美食是就是大数据,厨房就是hadoop,灶台就是HDFS、Mapreduce。为了做出美食,还需要的各种工具(HBase,Hive生态圈)。如锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的特性,虽然奇怪的组合也能工作,但是未必是最佳选择`。

2.hadoop组成

(1)演变过程

  • 在Hadoop的框架版本1.0中,最核心的设计是:HDFS、MapReduce。MapReduce主要是为海量数据提供了计算。这样,通过Hadoop这个架构,我们就可以实现对海量数据的存储、访问与计算。
  • 在Hadoop版本2.0中,其核心设计演变为:HDFS、YARN。在这里MapReduce被YARN所替代。YARN是1个Hadoop的资源管理器,它为上层应用提供了统一的资源管理和调度。此时的Hadoop就不再是1个简单MapReduce处理的架构了。

(2)HDFS(Hadoop DIstributed File System)
易于扩展的分布式文件系统,是用来存数据的,它运行在大量普通廉价机器上(成本低) ,提供容错的机制(可靠性高)。HDFS(Hadoop Distributed FileSystem)的设计本质上是为了大量的数据能横跨成百上千台机器,但是你看到的是一个文件系统而不是很多文件系统。比如要获取/hdfs/tmp/file1的数据,你引用的是一个文件路径,但是实际的数据存放在很多不同的机器上。你作为用户,不需要知道这些,就好比在单机上你不关心文件分散在什么磁道什么扇区一样。HDFS为你管理这些数据。
(3)Mapreduce
MapReduce是一种可用于数据处理的编程框架。MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。简单地说,MapReduce就是任务的分解与结果的汇总
MapReduce框架负责处理了并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,把处理过程高度抽象为两个函数:map和reduce,map负责把任务分解成多个任务,reduce负责把分解后多任务处理的结果汇总起来。

3.hadoop生态圈

Hadoop的生态圈主要包括:

  • Hive,提供数据仓库的数据分析
  • Pig,提供数据流处理
  • Mahout,提供数据挖掘相关算法
  • HBase,提供分布式、实时、高维数据库
  • Sqoop,提供关系型数据库数据与Hadoop的导入导出
  • Flume,提供日志收集
  • Zookeeper,提供分布式协作服务

4.适合的应用场景

(1)Hadoop在设计的最初被设计为针对超大文件及流式数据访问,Hadoop适合如下一些场景

  • 日志处理
  • 非实时的数据分析
  • 海量存储,比如ETL
  • 广告推荐
  • 离线计算

(2)不适合的场景

  • Hadoop不适合实时计算与分析方面的应用
  • Hadoop不适合大量小文件处理场景
  • Hadoop不适合低延迟数据访问场景
  • Hadoop不适合多用户写入的场景

5.hadoop和spark有什么关系

Spark是大数据的另外一个生态圈(代替MapReduce),在计算方面比mapreduce要快很多倍,供了一个简单而丰富的编程模型,支持多种应用,包括ETL、机器学习、数据流处理、图形计算。如果Spark要和Hadoop进行对比,其实有一点不太恰当,严格的Spark是一个计算框架,要跟Hadoop比的是也是MapReduce。形象比喻:Hadoop是一个全家桶,说spark是这个全家桶里面的一个大鸡腿也不为过。
Hadoop和Spark在某些方面有重叠,但组件之间都可以很好的协同作战可以互补,区别:

  • Spark是另外1个大数据处理框架,相比Hadoop,其将计算数据存储在内存而不是硬盘,因此计算性能上比Hadoop快很多,可以作为Hadoop的1种补充。
  • 相比Hadoop,Spark更适用于实时处理与分析的场景,另外在Spark中还提供了图计算GraphX及机器学习的Mlib库,通用性比Hadoop更强一些。
  • Spark不是非要依附在Hadoop上才能生存,它可以与其他的分布式文件系统进行集成来运作。对于大数据开发来说,很多情况下是堆积木的1个过程。

对于大数据的技术栈而言,存在多个可选的方案而不是完全替代的方案。毕竟在软件工程项目中,是要考虑成本的,我们需要根据项目的经费选择合适的技术方案。

6.hadoop业务的整体开发流程

  • flume数据采集--->MapReduce清洗---->存入hbase或者hdfs---->hive统计分析---->存入hive表中--->sqoop导入导出--->mysql数据库--->web展示
    补充:当其中我们当数据量非常大的时候,我们可以在flume数据采集节点加入kafka消息队列形成缓存区;在数据清洗阶段我们可以用spark 或者storm flink等内存和实时流算法框架(针对不同的业务场景);存入hadoop中的HBASE或者hdfs中;在数据分析阶段,我们可以用hive或者impala等计算工具;web展示的时候,可以把数据用elk中kabina//数据可视化工具kabina或者Grafana

相关文章

网友评论

      本文标题:【hadoop】概念

      本文链接:https://www.haomeiwen.com/subject/ecbtpqtx.html