posts - 117,  comments - 447,  trackbacks - 0

hadoop是一个由Apache基金会所发布的用于大规模集群上的分布式系统并行编程基础框架。目前已经是大数据领域最流行的开发架构。并且已经从HDFS、MapReduce、Hbase三大核心组件成长为一个具有60多个组件构成的庞大生态,可以满足大数据采集、存储、开发、分析、算法、建模等方方面面。

在hadoop的使用版本中,目前除Apache的版本,hadoop还有Cloudera与Hortonworks公司的两大发行版,并且两家公司还有各自的开分的相关生态组件、管理工具。便于Hadoop集群的供应、管理和监控。

一.          两开发行版

1.     Cloudera

1) Cloudera Manager管理工具:收费,稳定性高、集成性差、hadoop版本更新慢、不支持二次开发、安装复杂。,

2)    CDH发行版:部分开源,基本上支持所有组件,只依赖cdh自已的版本

2.     Hortonworks

1)  Ambari管理工具:免费,稳定性相对不高,集成性好,hadoop版本更新快,支持二次开发、安装简便。

2) HDP发行版:完全开源,基本上支持所有组件,直接依赖apache hadoop版

     两个发行版,在个别组件是不兼容的,比如安全组件等。另外,现在这两个公司已经合并了,意味着将来在组件等方面会有所融合。

二.          Hadoop常用组件简介

1.      核心组件

1) HDFS:分布式文件系统(Hadoop Distributed File System),是一个高度容错性的系统,适合部署在廉价的机器上。能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS 允许您连接多个集群中包含的节点 ,那些集群上分布着一些数据文件。然后可以将那些数据文件作为一个无缝文件系统来进行访问和存储。

2) Yarn:(Yet Another Resource Negotiator)也被称为MapReduce2.0是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,为集群在利用率、资源统一管理和数据共享等方面提供支持。

3) MapReduce:是面向大数据并行处理的计算模型、框架和平台,用于大规模数据集(大于1TB)的并行运算。"Map(映射)"和"Reduce(归约)",是其主要思想。其实现是指定一个Map函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce函数,用来保证所有映射的键值对中的每一个共享相同的键组。

2.      数据采集组件

1) Apache Flume:是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,支持在日志系统中定制各类数据发送方,用于收集数据;并提供对数据进行简单处理,写到各种数据存储系统中,如HDFS、HBase、kafka。

2) Apache Sqoop:是一个用来将Hadoop和RDBMS中的数据相互转移的工具,可以将一个关系型数据库中的数据导进到HDFS中,也可以将HDFS的数据导进到关系型数据库中。Sqoop底层是通过MapReduce作业并行读取数据库的。

3) Apache Kafka:是一个流处理平台,为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,这使它作为企业级基础设施来处理流式数据非常有价值。

4) Apache Nifi:是为了实现系统间数据流的自动化而构建的数据对接的集成框架。但我们在此处使用它来表示系统之间的自动和管理信息流。这个问题空间一直存在,因为企业有多个系统,其中一些系统创建数据,一些系统消耗数据。

3.      数据安全组件

1)    Apache Sentry:是一个针对存储在 Hadoop 集群中的数据和元数据提供加强的细粒度的基于角色的授权系统,可以通过验证的用户提供数据访问权限。

2)    Apache Ranger:是一个集中式框架,提供操作、监控、管理复杂的数据权限,它提供一个集中的管理机制,管理基于 Apache Hadoop 生态圈的所有数据权限。可以支持hive的列级授权,支持审计。

4.     数据存储

1) Apache HBase:是一个参考了谷歌的BigTable建模的运行在HDFS文件系统上的面向列存储的开源非关系型分布式存储系统(NoSQL),可以容错地存储海量稀疏的数据。

2) Apache Kudu:是一个面向列存储的存储系统,可以同时提供低延迟的随机读写和高效的数据分析能力,支持水平扩展,使用Raft协议进行一致性保证。是对HBase能力的补充。

3) Apache Parquet:是面向分析型业务的列式存储格式,具有更高的存储性能和资源利用率,可以适配多种计算框架。

5.     服务协作

1) Apache Zoomkeeper:是一种分布式协调服务,为大型分布式计算提供分布式配置服务、同步服务和命名注册。

6.     工作流与调度

1)Apache Oozie:是一个基于服务器的工作流程 调度系统,用于管理Hadoop作业, MapReduce和Pig Jobs的任务调度与协调。

2) Linkedin Azkaban:是一个分布式工作流管理器,运行Hadoop作业用以解决Hadoop作业依赖性问题。并提供易于使用的Web用户界面来维护和跟踪工作流程。

3) Apache Falcon:是一个在Hadoop中数据生命周期的管理框架,提供了一个用于治理和编排 Hadoop 内部和周边数据流的数据处理框架。该框架为获取和处理数据集、复制与保留数据集、重新定向位于非Hadoop扩展中的数据集、维护审核跟踪与沿袭提供了关键性的管控框架。

7.     分布式计算

1)Apache Flink:是一个分布式大数据处理引擎,具有强大的流和批处理功能,可对无穷数据集和无限数据流进行有状态计算。可部署在各种集群环境,对各种大小的数据规模进行快速计算。

2) Apache Tez:是一个针对Hadoop数据处理应用程序的、支持 DAG 作业的分布式执行框架,可以将多个有依赖的作业转换为一个作业从而大幅提升 DAG 作业的性能。

3) Apache Pig:是一个基于Hadoop的大规模数据分析平台,用于分析较大的数据集,并将它们表示为数据流。提供的SQL-LIKE语言Pig Latin,会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口。

4) Apache Spark:是一种用于大数据和机器学习的复杂分析构建的大数据处理框架。其特点是:速度快、便于使用、统一的引擎。

5)Apache Storm:是一个分布式数据流实时计算系统。可以可靠地处理无限数据流。

8.     数据分析:

1)Apache Hive:是基于Hadoop的一个数据仓库工具,提供数据的精炼,查询和分析能力。可以将结构化的数据文件映射为一张数据库表,并提供HSQL查询功能,SQL语句转换为MapReduce任务运行。

2)Cloudera Impala:是一个高性能、低延迟的SQL查询引擎。提供了访问存储在Hadoop分布式文件系统中的数据的最快方法。

3) Apache Phoenix:是构建在HBase上的一个SQL层,可以用标准的JDBC APIs来创建表,插入数据和对HBase数据进行查询,实现OLTP事务能力。

4)Apache Kylin:是一个分布式分析引擎,提供Hadoop/Spark上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,能在亚秒内查询巨大的Hive表。

9.     系统部署

1) Apache Mesos:是一个集群管理软件,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等应用架构,可以将CPU,内存,存储和其他计算资源从机器(物理或虚拟)中抽象出来,使容错和弹性分布式系统能够轻松构建并有效运行。

2) Cloudera HUE:是一个开源的Apache Hadoop UI系统,可以通过浏览器访问Web控制台与Hadoop集群进行交互来分析处理数据,可以操作HDFS上的数据,运行MapReduce Job,执行Hive的SQL语句,浏览HBase数据库等等

3) Apache Helix:是一个通用的集群管理框架,用于自动管理节点集群上的分区,复制和分布式资源。在面对节点故障和恢复,集群扩展和重新配置时自动重新分配资源。

10.  数据可视化

1) Apache Zeppelin:是一个web版的notebook,用于做数据分析和可视化。可以接入不同的数据处理引擎,包括spark, hive等,原生支持scala, java, shell, markdown等。

11.  机器学习

1) Apache Mahout:是一个算法库,提供一些可扩展的机器学习领域经典算法的实现,主要集中在协同过滤,聚类和分类领域。可以有效地扩展到Hadoop集群上。

Deeplearning4j:是一套基于Java语言的神经网络工具包,可以构建、定型和部署神经网络。并与Hadoop和Spark集成,支持分布式CPU和GPU,为商业环境所设计。包括了分布式、多线程的深度学习框架,以及普通的单线程深度学习框架。定型过程以集群进行,也就是说,Deeplearning4j可以快速处理大量数据。神经网络可通过[迭代化简]平行定型,与 Java、 Scala 和 Clojure 均兼容。Deeplearning4j在开放堆栈中作为模块组件的功能,使之成为首个为微服务架构打造的深度学习框架。

posted on 2018-12-03 17:15 小镇 阅读(...) 评论(...) 编辑 收藏