Hadoop:
1 HDFS(分布式文件系统)
2 HBase/Sqoop/Flume(数据导入与导出)
3 MapReduce/Spark(并行计算架构)
4 Pig/Hive(Hadoop编程)
5 ZooKeeper/Oozie(系统管理架构)
6 Ambari/Whirr(系统部署管理)
7 Mahout(机器学习/算法库)
8 Impala (查询系统)
Hadoop是一个大家族,是一个开源的生态系统,是一个分布式运行系统,是基于Java编程语言的架构。不过它最高明的技术还是HDFS和MapReduce,使得它可以分布式处理海量数据。
1 HDFS(分布式文件系统):
它与现存的文件系统不同的特性有很多,比如高度容错(即使中途出错,也能继续运行),支持多媒体数据和流媒体数据访问,高效率访问大型数据集合,数据保持严谨一致,部署成本降低,部署效率提交等,如图是HDFS的基础架构
2 HBase/Sqoop/Flume(数据导入与导出):
HBase是运行在HDFS架构上的列存储数据库,并且已经与Pig/Hive很好地集成。通过Java API可以近无缝地使用HBase。
Sqoop设计的目的是方便从传统数据库导入数据到Hadoop数据集合(HDFS/Hive)。
Flume设计的目的是便捷地从日志文件系统直接把数据导到Hadoop数据集合(HDFS)中。
以上这些数据转移工具都极大的方便了使用的人,提高了工作效率,把经历专注在业务分析上!
3 MapReduce/Spark(并行计算架构):
它可以将计算任务拆分成大量可以独立运行的子任务,接着并行运算,另外会有一个系统调度的架构负责收集和汇总每个子任务的分析结果。其中 包含映射算法与规约算法。如图是MapReduce的内部计算步骤
Spark是一个内存计算的框架。目前一个大的趋势。MapReduce会有很大的IO操作,而Spark是在内存中计算。速度是Hadoop的10倍(官网上这样说的)。Spark是目前一个趋势,是需要了解的。
4 Pig/Hive(Hadoop编程):
Pig是一种高级编程语言,在处理半结构化数据上拥有非常高的性能,可以帮助我们缩短开发周期。
Hive是数据分析查询工具,尤其在使用类SQL查询分析时显示是极高的性能。可以在分分钟完成ETL要一晚上才能完成的事情,这就是优势,占了先机!
5 ZooKeeper/Oozie(系统管理架构):ZooKeeper是一个系统管理协调架构,用于管理分布式架构的基本配置。它提供了很多接口,使得配置管理任务简单化!Oozie服务是用于管理工作流。用于调度不同工作流,使得每个工作都有始有终。这些架构帮助我们轻量化地管理大数据分布式计算架构。
6 Ambari/Whirr(系统部署管理):Ambari帮助相关人员快捷地部署搭建整个大数据分析架构,并且实时监控系统的运行状况。Whirr的主要作用是帮助快速的进行云计算开发。
7 Mahout(机器学习/算法库):Mahout旨在帮助我们快速地完成高智商的系统。其中已经实现了部分机器学习的逻辑。这个架构可以让我们快速地集成更多机器学习的智能!!又是数据挖掘算法库,里面内置了大量的算法。可以用来做预测、分类、聚类等。工具很强大,但是技术要求能力较高。
8 Impala (查询系统) :Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。Imapa可以和Phoenix,Spark Sql联系起来了解一下。
推荐:两本最重要的书籍(这两本基本已经可以满足大部分你对Hadoop的需要):
Hadoop权威指南
Hadoop最佳实践