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