跳转至

Hadoop

Hadoop:开源的分布式存储及计算框架。

📌 组件

组件名 作用
HDFS 分布式文件存储;大文件、海量数据
MapReduce 批量处理引擎
Yarn 资源调度管理
Hive 查询引擎,提供类SQL的、对hdfs数据进行查询的接口
HBase 列式键值对,非关系型(nosql)数据库
Sqoop 数据获取,核心功能包括导入数据、导出数据
Flume 开源日志系统
Kafka 高度可扩展的分布式消息引擎
Flink 实时数据处理引擎,支持批量计算
Spark 快速批量数据处理引擎,以微批处理的方式,支持近实时处理

🚁 HDFS

  • 优点:

    • 存储大文件,将大文件分割为很多小块存储
    • 流式数据读取,“write one read many”
    • 分布式,具备良好的可扩展性
    • 通过放开POSIX要求,极大改善数据读写性能
  • 缺点/不适用的场景:

    • 存储大量小文件(<1MB)
    • 实时数据读取
    • 需经常修改数据的场景

🚁 MapReduce

  • 易于编程:程序员仅需描述需要做什么,而具体怎么做,由框架负责。
  • 良好的扩展性:MapReduce框架支持分布式计算,通过添加机器达到扩展集群能力。
  • 容错性:通过计算迁移数据迁移等策略提高集群的可用性和容错性。

🚁 Hive

  • 优点:

    • 海量结构化数据分许汇总
    • 高可靠高容错
    • 将复杂的MapReduce编写任务简化为SQL语句
    • 灵活的数据存储:TextFile、SequenceFile、ORC、Parquet、CSV、自定义格式
    • 可扩充UDF/UDAF/UDTF
  • 缺点:

    • 延迟较高,性能有提升空间
    • 不支持事务类操作

🚁 HBase

  • 优点:查找速度快,可分布式扩展
  • 缺点:不适合随机更新,不适合做有插入更新的实时操作

🚁 Spark

  • 通过分布式内存计算和DAG执行引擎提升数据处理能力,相比Hadoop MapReduce性能高10至100倍。
  • 基于内存计算,可能会随之产生内存资源不足的问题。
  • 提供多种语言开发接口,如Scala、Java、Python等。并且提供几十种高度抽象算子,可以很方便构建分布式的数据处理应用。
  • 结合SQL、Streaming、MLlib、GraphX等形成数据处理栈,提供一站式数据处理能力。
  • 完美契合Hadoop生态,Spark可以运行在Standalone、Yarn、Mesos、Kubernetes等集群上,能够接入HDFS、HBase等多种数据源,支持Hadoop MapReduce程序平滑转接。