hadoop 入门(一) 概览
背景
hadoop 项目脱胎于鼎鼎大名的三篇大数据论文(google发表),由 hadoop 之父 Doug Cutting 及其团队开发的一个并行处理大量数据的框架。
Hadoop 并不是一个缩写,是由该项目的创建者 Doug Cutting 命名:“Hadoop是我孩子给一个棕色玩具大象起的名字”。
概览
广义上的hadoop指的是以hadoop为核心的生态圈,如下图:
image.png
- HDFS and MapReduce
- HBase,Hive,Pig 主要负责数据存储和查询
- Flume,sqoop 负责数据的导入和导出
- Mahout 机器学习和分析
- Zookeeper 分布式协调
- Ambari 集群管理
- Avro 数据存储和序列化
- HCatalog 元数据管理
组件介绍
-
HDFS (Hadoop Distributed File System) 是分布式计算中数据存储管理的基础。它所具有的高容错高可靠性、高扩展性、高获得性、高吞吐率等特征,为海量数据提供了不怕故障的存储,为超大数据集的应用处理带来了很多便利。
-
MapReduce 是一种处理海量数据的并行编程模型和计算框架,用于对大规模数据集(通常大于1TB)的并行计算。
-
Apache HBase 是一个分布式的、随机访问的、面向列的数据库系统,在HDFS的顶层运行,允许应用程序开发人员直接读写HDFS数据。
但是HBase不支持SQL,但是提供了基于命令行的界面以及丰富的API函数来更新数据,它也是NoSQL数据库的一种。 -
Apache Hive 被用来作为大数据的数据仓库,它也使用HDFS文件系统来存储数据。在Hive中我们不编写MapReduce程序,因为Hive提供了一种类SQL语言HiveQL,能让开发者迅速的写出类似关系型数据库SQL查询的点对点查询。
-
Apache ZooKeeper
Hadoop通过节点(nodes)的方式提供相互间的通信。ZooKeeper便是被用来管理这些节点的,它被用来协调各个节点。
除了管理节点以外,它还维护一些配置信息,并且对分布式系统的服务进行分组。ZooKeeper可以独立于Hadoop来运行,而不像生态系统中的其它组件一样。由于ZooKeeper是基于内存来管理信息,因此它的性能相对来说还是挺高。 -
Sqoop 用来在Hadoop中高效地加载大数据集,他允许开发人员轻松地从一些数据源,如关系型数据库甚至应用程序导入\导出数据。
-
Flume 常被用来做日志的聚合操作,用来作为ETL工具来使用。