Hadoop(一)---概述
Hadoop是什么
Hadoop是一个用于海量数据存储和分析计算
的分布式基础框架
。不过从广义上来讲,Hadoop不单指某个具体的框架,而是指一个生态圈
。
- Sqoop是一款数据传输工具,它即可以将一个关系型数据库中的数据导入到Hadoop的HDFS中,又可以将HDFS中的数据导入到关系型数据库中。
- Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
- Kafka是一个消息中间件。
- Storm用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。不过在实时计算领域其逐渐被Spark所替代。
- Spark是当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的大数据进行计算。
- Oozie是一个管理Hdoop作业(job)的工作流程调度管理系统。
- Hbase是一个分布式的、面向列的开源数据库,它适用于非结构化数据存储。
- Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转化成MapReduce任务运行。其优点是可以通过类SQL语句块速实现简单的MapReduce统计,而不必开发专门的MapReduce应用。
- R语言是一个用于统计计算和统计制图的优秀工具。
- Mahout是个可扩展的机器学习和数据挖掘库。
- Zookeeper是一个分布式配置中心。
Hadoop官方网站:http://hadoop.apache.org/
Hadoop发行版本
目前而言,不收费的Hadoop发行版本主要有三个,分别是:
- Apache Hadoop,最原始的版本,其他发行版本均基于此版本改进;
- Cloudera Hadoop,简称为CDH,比Apache Hadoop在兼容性,安全性,稳定性上有所增强。由Hadoop的创始人加盟Cloudera公司所创立。
- Hortonworks Hadoop,由之前在雅虎研究Hadoop的多名工程师,成立Hortonworks公司并发布。
一般来说,Apache发行的版本多用于学习,而公司用得较多的是Cloudera Hadoop。
Apache Hadoop版本的官网:http://hadoop.apache.org/releases.html
Cloudera Hadoop版本的官网:https://www.cloudera.com/downloads/cdh/5-10-0.html
Hortonworks Hadoop版本的官网:https://hortonworks.com/products/data-center/hdp/
Hadoop的组件
Hadoop1.x和2.x所包含的组件基本一样,除了2.x新增的资源调度Yarn。不同版本之间具体所包含的组件如下图所示
Hadoop组件图下面看看组件各自的细节
HDFS概述
HDFS(Hadoop Distributed File System)是分布式文件存储,主要为海量数据提供高效的存储方案。同时HDFS是Hadoop项目的核心子项目。
HDFS系统架构
我们可以看到在HDFS中有3种类型的组件,它们各自的作用如下:
- NameNode:存储文件的元数据,如:文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DateNode等;其处理客户端的读写请求。
- DataNode:存储实际的数据块,执行数据块的读/写操作。
- Secondary NameNode:用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照,
Secondary NameNode
并不是NameNode的热备。
YARN
YARN是资源管理和调度系统,它在Hadoop 2.x引入。YARN架构图如下所示:
yarn
从上面的图中可以看到,YARN架构中有4种组件:Resource Manager、Node Manager、App Mastr、Container,它们的主要功能如下
- ResourceManager
1). 资源的分配与调度;
2). 处理客户端请求;
3). 监控NodeManager;
4). 启动或监控ApplicationMaster。 - NodeManager
1). 管理单个节点上的资源;
2). 处理来自ResourceManager或ApplicationMaster的命令。 - ApplicationMaster
1). 负责数据的切分;
2). 任务的监控与容错;
3). 为应用程序申请资源并分配给内部的任务。 - Container
Container是YARN中的资源抽象,它封装了某个节点上的多维资源,如内存、CPU、硬盘、网络等。
MapReduce
MapReduce为开发者提供编程接口,是一个分布式计算框架。
MapReduce程序的工作分两个阶段进行:
- Map阶段:并行处理输入数据;
- Reduce 阶段:对Map结果进行汇总。
Hadoop Common
提供一些辅助的工具
参考(more reding)
- 尚硅谷大数据技术之Hadoop(入门)