Hadoop生态圈-大数据生态体系快速入门篇
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.大数据概念
1>.什么是大数据
大数据(big data):是指无法在一定时间范围内用常规软件进行捕捉,管理和处理的数据集合,是需要新处理模式才能具有更强的决策力,洞察发现力和流程优化能力的海量,高增长率和多样化的信息资产。
大数据技术主要解决两个问题,即海量的存储和海量的数据的分析计算。
2>.数据存储单位介绍
按照顺序给出数据存储单位如:Bit,Byte,KB,MB,GB,TB,PB,EB,ZB,YB,BB,NB,DB。换算单位如下:
1Byte = Bit
1K = Byte
1MB = KB
1GB = MB
1TB = GB
1PB = TB
1EB = PB
1ZB = EB
1YB = ZB
1BB = YB
1NB = BB
1DB = NB
3>.大数据特点
大数据最明显的特点简单的来说就是四个V,即:Volume(大量),Velocity(高速),Variety(多样),Value(低价值密度)。
>.Volume(大量)
截止目前,人类生成的所有印刷材料的数据量是200PB,而历史上全人类总共说过的话的数据量大约是5EB,
当前,典型个人计算机硬盘的容量为TB量级,而一些大企业的数据量已经接近EB量级。 >.Velocity(高速)
这是大数据区分与传统数据挖掘的最显著特征。根据IDC的“数字宇宙”的报告,预计到2020年,全球数据
使用量将达到35.2ZB。在如此海量的数据面前,处理数据的效率就是企业的生命。 >.Variety(多样)
这种类型的多样性也让数据被分为结构化数据和非结构化数据。相对于以往便于存储的以数据库/文本为主的
结构化数据,非结构化的数据越来越多,包括网络日志,音频,视频,图片,地理位置信息等等,这些多类型的数
据的处理能力提出了更高的要求。 >.Value(低价值密度)
价值密度的高低与数据总量的大小成反比,如何快速对有价值的数据“提纯”称为目前大数据背景下待解决的
难题。
4>.企业的组织结构
大数据工程师的岗位还是蛮紧缺的,尤其是在数据挖掘方向,其实从事大数据主要分三个方向,即大数据运维,大数据开发,大数据分析,其实大数据报表貌似跟大数据不咋搭边。下图是我在网上描述对企业大数据部门的一般组织结构,那么问题来了?如果你想要从事大数据工作,你会选择哪个方向呢?
二.从Hadoop框架讨论大数据生态圈
1>.Hadoop是什么
Hadoop是什么
>.Hadoop是一个由Apache基金会所开发的分布式洗头膏基础架构;
>.主要解决:海量数据的存储和海量数据的分析计算为题;
>.广义上来说,Hadoop通常是指一个更广泛的概念,它指的不仅仅是Hadoop这款软件,而是指的是Hadoop生态圈;
2>.Hadoop发展历史
Hadoop发展历史
>.Lunce-Doug开创的开源软件,用Java书写代码,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,
包括完整的查询引擎和搜索引擎;
>.2001年年底称为Apache基金会的一个子项目;
>.对于大数据的场景,Luence面对与Google同样的困难;
>.学习和模仿Google解决这些问题的办法:微型版Nutch
>.可以说Google是Hadoop的思想之源(Google在大数据方面的三篇论文)
GFS ----催化剂----> HDFS
Map-Reduce ----催化剂----> MR
BigTable ----催化剂----> HBase
>.-2004年,Google公开了部分GFS和MapReduce思想的细节,以此为基础Doug Cutting等人用了2年业余时间实现了DFS和MapReduce机制,使Nutch性能飙升;
>.2005年Hadoop作为Lucene的子项目,Nutch的一部分正式引入Apache基金会。2006年3月份,Map-Reduce和Nutch Distributed File System(NDFS)分别被纳入称为Hadoop的项目中
>.Hadoop的名字来源于Doug Cutting儿子的玩具大象;
>.Hadoop就此诞生并迅速发展,标志着大数据时代来临;
3>.Hadoop三大发行版本
Hadoop三大发行版本
>.Apache版本最原始(最基础)的版本,对于入门学习最好
2005年Hadoop作为Lucene的子项目,Nutch的一部分正式引入Apache基金会。2006年3月份,Map-Reduce和Nutch Distributed File System(NDFS)分别被纳入称为Hadoop的项目中。
官网地址:http://hadoop.apache.org/
>.Cloudera是大型企业互联网企业中的较多(按照技术服务收费)
2.1>.2008年成立的Coudera是最早将Hadoop商用的公司,为合作伙伴提供Hadoop的商用解决方案,主要包括支持,咨询服务,培训;
2.2>.2009年Hadoop的创始人Doug Cutting也加盟Cloudera公司。Cloudera产品主要为CDH,Cloudera Manager,Cloudera Support;
2.3>.CDH是Cloudera的Hadoop发行版,完全开源,比Apache Hadoop在兼容性,安全性,稳定性上有所增强;
2.4>.Coundera Manager是集群的软件分发及管理监控平台,开源在几个小时内部署好的一个Hadoop集群,并对集群的节点及服务进行实时监控。Cloudera Support即是对Hadoop的技术支持;
2.5>.Cloudera的标价为每年每个节点4000美元。Cloudera开发并贡献了可实时处理大数据的Impala项目。
官网地址:https://www.cloudera.com/downloads/cdh/5-10-0.html
下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/
>.Hortonworks文档比较好,它是后起之秀起步较晚
3.1>.2011年成立的Hortonworks是雅虎与硅谷风投公司Benchmark Capital合资组建;
3.2>.公司成立之初最吸纳了大约25名至30名专门研究Hadoop的雅虎工程师,上述工程师均在2005年开始协助雅虎开发Hadoop,贡献了Hadoop %的代码;
3.3>.雅虎工程副总裁,雅虎Hadoop开发团队负责人Eric Baldeschwieler 出任Hortonworks的首席执行官;
3.4>Hortonworks的主打产品是Hortonworks Data Platform(HDP),也同样是100%开源的产品,HDP除常见的项目还包括Ambari,一款开源的安装呵呵管理系统;
3.5>.HCatalog,一个元数据管理系统,Hcatalog现已集成到Facebook开源的Hive中。Hortonworks的Stringer开创性的极大的优化了Hive项目。Hortonworks为入门提供了一个非常好的,易于使用的沙盒;
3.6>.Hortonworks开发很多增强特性并提交至核心主干,这使得Apache Hadoop能够在包括Windows Server和Windows Azure在内的Microsoft Windows平台上本地运行。定价以集群为基础,每10个节点每年为12500美元;
官网地址:https://hortonworks.com/products/data-platforms/
下载地址:https://hortonworks.com/downloads/#data-paltform
4>.Hadoop的优势
Hadoop的优势
>.高可靠性
因为Hadoop假设计算元素的和存储会出现故障,因为它维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理。
>.高扩展性
在集群间分配任务数据,可方便的扩展数以千计的节点。
>.高效性
在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
>.高容错性
自动保存多个副本数据,并且能够自动将失败的任务重新分配。
5>.Hadoop组成
>.Hadoop概述
1.1>.Hadoop HDFS: 一个高可用,高吞吐量的分布式文件系统,提供数据存储;
1.2>.Hadoop MapReduce:一个分布式的离线并行计算框架;
1.3>.Hadoop YARN:作业调度与集群资源管理的框架,提供资源调度;
1.4>.Hadoop Common:共同模块,支持其他模块的工具模块。 >.HDFS架构概述
2.1>.NameNode(简称nn)
负责存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在的DataNode等等。
2.2>.DataNode(简称dn)
负载在本地文件系统存储文件块数据,以及块数据的校验和。换句话说,它负责存储真实数据。
2.3>.Secondary NameNode(简称2nn)
负责用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。 >.YARN架构概述
3.1>.ResourceManager(简称rm)
负责处理客户端请求,启动/监控ApplicationMaster,监控NodeManager,资源分配与调度。
3.2>.NodeManager(简称nm)
负责单个节点上的资源管理,处理来自ResourceManager的命令,处理来自ApplicationMaster的命令。
3.3>.ApplicationMaster
负责数据切分,为应用程序申请资源,并分配给内部任务,任务监控与容错。
3.4>.Container
负责对任务运行环境的抽象,封装CPU,内存等多位资源以及环境变量,启动命令等任务运行相关的信息。 >.MapReduce架构概述
MapReduce将计算过程分为两个阶段:即Map和Reduce(当然你在跟源码的时候发现其实在Map和Reduce阶段的前后还有很多细节!后期的文章会详细介绍的)
3.1>.Map阶段并行处理输入数据
3.2>.Reduce阶段对Map结构进行汇总
6>.大数据生态体系