做你没做过的事叫成长,做你不愿做的事叫改变,做你不敢做的事叫突破。
企业级大数据技术框架(六层大数据技术体系)
1、数据收集层:分布式、异构性、多样化、流式产生
主要由关系型和非关系型数据收集组件,分布式消息队列构成。
Sqoop/Canal:关系型数据收集和导入工具,是连接关系型数据库和Hadoop的桥梁,Sqoop可将关系型数据库的数据全量导入Hadoop,反之亦然。而Canal可用于实时数据的增量导入
Flume:非关系型数据收集工具,主要是流式日志数据,可近实时收集,经过滤,聚集后加载到HDFS等存储系统
Kafka:分布式消息队列,一般作为数据总线使用,它允许多个数据消费者订阅并获取感兴趣的数据。
2、数据存储层
主要由分布式文件系统(面向文件存储)和分布式数据库(面向行/列的存储)构成。
HDFS:Hadoop分布式文件系统,Google GFS的开源实现,具有良好的扩展性和容错性,目录已支撑各种类型的数据存储格式,包括SSTable,文本文件,二进制key/value格式Sequence File,列式存储格式Parquet,ORC和Carbondata等。
Hbase:构建在HDFS之上的分布式数据库,需要用户存储结构化与半结构化数据,支持行列无限扩展及数据随机查找与删除。
Kudu:分布式列数据库,允许用户存储结构化数据,支持行无限扩展以及数据的随机查找与更新。
3、资源管理与服务协调层:共享集群资源(优点:资源利用率高、运维成本低、数据共享)
YARN:统一资源管理与调度系统,它能够管理集群中的各种资源(eg:CPU、内存等),并按照一定的策略分配个上层各类应用,YARN内置了多种多租户资源调度器,允许用户按照队列的方式组织和管理资源,且每个队列的调度机制可独立定制。
ZooKeeper:基于简化的Paxos协议实现的服务协调系统,他提供了类似于文件系统的数据模型,允许用户通过简单的API实现leader选举、服务命名、分布式队列与分布式锁等复杂的分布式通用模块。
4、计算引擎层
包括批处理(时间要求低,高吞吐)、交互式处理(时间要求比较高,sql查询)、流式实时处理(时间要求非常高、广告投放等)三种引擎。
MapReduce/Tez:MapReduce是一个经典的批处理计算引擎,具体良好的扩展性与容错性,允许用户通过简单Api编写分布式程序;Tez是基于MapReduce开发的通用DAG(有向无环图)计算引擎,能够更加高效地实现复杂的数据处理逻辑,目前被应用在hive、pig等数据分析系统中。
Spark:通用的DAG计算引擎,它提供了基于RDD的数据抽象表示,允许用户充分利用内存进行快速的数据挖掘和分析。
Impala/Presto:开源的MPP系统,允许用户使用标准的SQL处理存储在Hadoop中的数据。它们采用了并行数据库架构,内置了查询优化器,查询下推,代码生成等优化机制,使得大数据处理效率大大提高。
Storm/Spark Streaming:分布式流式实时计算引擎,具有良好的容错性与扩展性,能够高效的处理流式数据,它允许用户通过简单的API完成实时应用程序开发。
5、数据分析层
为方便用户解决大数据问题而提供的各种数据分析工具。
Hive/Pig/SparkSQL:在计算引擎只是构建的支撑SQL或者脚本语言的分析系统,大大降低了用户进行大数据分析的门槛。其中hive是基于MapReduce/Tez实现的sql引擎,pig是基于MapReduce/Tez实现的工作流引擎,SparkSQL是基于spark实现的sql引擎。
Mahout/MLib:在计算引擎上构建的机器学习库,实现常用的机器学习和数据挖掘算法Mahout最初是基于MapReduce实现的,目前正迁移到spark,mlib是基于spark实现的。
Apache Beam/Cascading:基于各类计算框架而封装的高级API,方便构建复杂的流水线。Apache Beam统一了批处理和流式处理两类计算框架,提供了更高级的API方便用户编写与具体计算引擎无关的逻辑代码;Cascading内置了查询计划优化器,能够自动优化用户实现的数据流。采用了面向tuple的数据模型,如果你的数据可表示成类似与数据库行的格式,使用Cascading处理将变得很容易。
6、数据可视化层
应用UI展示,比如:运筹帷幄的Dashboard、火眼金睛的用户分析平台。