--内容来自厦门大学林子雨教授的《大数据技术原理》课程,作为学习笔记。
2.1概述
2.2Hadoop项目结构
2.3Hadoop的安装和使用
2.4Hadoop集群的部署与使用
2.1.1Hadoop简介
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构;
Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中;
Hadoop的核心是分布式文件系统HDFS(Hadoop Distributed File System)和MapReduce;
Hadoop被公认为行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力;
几乎所有主流厂商都围绕Hadoop提供开发工具、开源软件、商业化工具和技术服务,如:谷歌、雅虎、微软、思科、淘宝等都支持Hadoop;
2.1.2Hadoop发展简史
Hadoop最初是有Apache Lucene项目的创始人Doug Cutting开发的文本搜索库。
谷歌三大核心论文:GFS(谷歌文件系统)、MapReduce、BigTable;
2.1.3 Hadoop的特性
Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且是以一种可靠、高效、可伸缩的方式进行处理的,它具有以下几个方面的特性:
国内采用Hadoop的公司主要有百度、淘宝、网易、华为、中国移动等,其中淘宝的Hadoop集群比较大;
2.1.4Hadoop版本演变
Hadoop版本分为两代,分别为Hadoop1.0和Hadoop2.0
第一代Hadoop包含三个大版本:0.20、0.21、0.22;
第二代Hadoop包含两个版本:0.23.x和2.x,第二代与第一代完全不同,是一套全新的架构,第二代均包含HDFS Federation和YARN两个系统,2.x比0.23.x增加了NameNode HA和Wire-compatibility两大特性;
2.1.5 Hadoop各个版本
在Apache Hadoop的基础上,各大公司开发了商业版本,在性能,易用性,维护性更优。。。
2.2 Hadoop项目结构
Hadoop的项目结构不断丰富发展,已经形成一个丰富的Hadoop生态系统;
组件 | 功能 |
HDFS | 分布式文件系统 |
MapReduce | 分布式并行编程模型 |
YARN | 资源管理和调度器 |
Tez | 运行在YARN之上的下一代Hadoop查询处理框架 |
Hive | Hadoop上的数据仓库 |
HBase | Hadoop上的非关系型的分布式数据库 |
Pig | 一个基于Hadoop的大规模数据分析平台,提供类SQL的查询语言PigLatin |
Sqoop | 用于在Hadoop与传统数据库之间进行数据传递 |
Oozie | Hadoop上的工作流管理系统 |
Zookeeper | 提供分布式协调一致性服务 |
Storm | 流计算框架 |
Flume | 一个高可用的,高可靠性的,分布式的海量日志采集,聚合和传输的系统 |
Ambari | Hadoop快速部署工具,支持Apache Hadoop集群的供应,管理和监控 |
Kafka | 一种高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据类似于Hadoop MapReduce的通用并行框架 |
2.3 Hadoop 的安装和使用
另行介绍。。。。。
2.4 Hadoop集群的部署和使用
2.4.1 Hadoop集群中有哪些节点类型
Hadoop框架中最核心的设计是为海量数据提供存储的HDFS和对数据进行计算的MapReduce;
MapReduce的作业主要包括:(1)从磁盘或从网络读取数据,即IO密集工作,(2)计算数据,即CPU密集工作;
Hadoop集群的整体性能取决于CPU、内存、网络以及存储之间的性能平衡。因此运营团队在选择机器配置时要针对不同的工作节点选择合适硬件类型;
一个基本的Hadoop集群中的节点主要有:
2.4.2集群硬件配置
在集群中,大部分的机器设备是作为DataNode和TaskTracker工作的,可以采用以下方案:
NameNode提供整个HDFS文件系统的NameSpace(命名空间)管理,块管理等所有服务,因此需要更多的RAM,与集群中的数据块数量相对应,并且需要优化RAM的内存通道带宽,采用双通道或三通道以上内存。硬件规格可以采用以下方案:
SecondaryNameNode在小型集群中可以和NameNode公用一台机器,较大的集群可以采用与NameNode相同的硬件
2.4.3集群规模要多大
Hadoop集群规模可大可小,初始时,可以从一个较小规模的集群开始,比如包含10个节点,然后规模随着存储器和计算需求的扩大而扩大
对于一个小的集群,NameNode和JobTracker可以运行在单个节点上,但不适合较大的集群
SecondaryNameNode可以和NameNode运行在相同的节点上,但不建议如此设置
2.4.4集群网络拓扑
普通的Hadoop集群结构由一个两阶网络构成
每个机架(Rack)由30-40个服务器,配置一个1GB的交换机,并向上传输到一个核心交换机或路由器(1GB以上)
在相同的机架中的节点间的带宽的总和,要大于不同机架间的节点的的带宽总和
2.4.5集群的建立与安装
采购好相关硬件设备后,就可以把硬件装入机架,安装并运行Hadoop;
安装Hadoop有多种方法:手动安装、自动化安装
2.4.6Hadoop集群基准测试
通过基准测试来判断一个Hadoop集群是否正确安装;
Hadoop自带有一些基准测试程序,被打包在测试程序JAR文件中
用TestDFSIO基准测试,来测试HDFS的IO性能;
用排序测试MapReduce:Hadoop自带一个部分排序的程序,这个测试过程的整个数据集都会通过洗牌(Shuffle)传输至Reducer,可以充分测试MapReduce的性能;
2.4.7在云计算环境中使用Hadoop
Hadoop不仅可以在企业内部的集群中,也可以运行在云计算环境中,如:Amazon的EC2;
在EC2上运行Hadoop尤其适用于一些工作流。例如,在Amazon S3中存储数据,在 EC2上运行集群,在集群中运行MapReduce作业,读取存储在S3中的数据,最后, 在关闭集群之前将输出写回S3中;如果长期使用集群,复制S3数据到运行在EC2上 的HDFS中,则可以使得数据处理更加高效,因为,HDFS可以充分利用数据的位置, S3则做不到,因为,S3与EC2的存储不在同一个节点上