一、概念

1、Hadoop是什么

Hadoop是由一个Apache基金会所开发的分布式基础架构,Hadoop是一个生态圈

2、主要解决的问题

1、海量数据的存储
	2、海量数据的分析计算

3、Hadoop是一个生态圈

2、Hadoop的发展历史

1、Hadoop的创始人:Doug Cutting
2、创始人想要实现类似Google类似的全文搜索功能,在Lucene框架上优化
3、Google的三篇论文
	GFS----> HDFS
	Map-Reduce --->MR
	BigTable ---> HBase

3、Hadoop的三大发行版本

1、Apache版本(免费开源)2006
2、Cloudera内部集成很多大数据框架,对应产品CDH,2011年Hadoop的创始人Doug Cutting
3、Hortonworks文档写的好,产品HDP 2011   
4、Cloudera收购了Hortonworks公司,推出CDP,开始收费之旅  基本版每台机器10000$

4、Hadoop的优势

1、高可靠性:Hadoop使用多副本机制,所以当某个机器坏了,也没事
2、高拓展型:在集群中分配任务数据,可方便的拓展新的节点。
	例如:618,双11可以动态的增加机器
3、高效性:MR思想下,Hadoop是并行计算的。多台机器一起干活
4、高容错性:能够将失败的任务进行重新分配,保证程序的正常运行

5、Hadoop的组成

1、Hadoop1.x的组成
	Common (辅助工具类啥的)
	HDFS(数据存储)
	MapReduce(计算+资源调度:管理CPU资源和内存资源)
2、Hadoop2.x
	Common (辅助工具类啥的)
	HDFS(数据存储)
	MapReduce(计算)
	yarn (资源调度:管理CPU资源和内存资源)
3、Hadoop3.x在组成方面与2.x没有区别

6、Hadoop的核心组件概述

1、HDFS:Hadoop Distribute File System,分布式文件系统

1、NameNode(NN):保存数据存储的位置,知道数据保存在个机器上。 (老板)
存储文件的元数据信息(文件名,文件目录结构,文件的属性)文件的属性(生成时间,副本数,文件的权限)
文件的块列表,块所在的DataNode等 2、DataNode(DN):具体数据的存储地方。(工人)
本地文件系统存储文件块数据 块数据的校验和(保证数据的正确性,完整性)
3、SecondaryNameNode(2NN):帮助老板干活的。(秘书) 每隔一段时间对NameNode元数据的备份

2、Yarn的架构概述

1、ResourceManage(RM):资源管理器,管理整个集群的(CPU,内存等)资源(整个集群资源的老大)
	2、NodeManger(NM):管理单个服务器资源的老大
	3、ApplicationMaster(AM):单个任务运行的老大
	4、Container:容器,相当于一台独立的服务器中封装了任务所运行的所需的资源(CPU资源,I/O资源等)

hadoop hive使用心得 hadoop pig hive_hadoop hive使用心得

3、MapReduce架构概述

1、MapReduce概述
MapReduce是Hadoop中面向大数据并行处理的计算模型、框架和平台。MapReduce用于海量数据的并行计算,它采用“分而治之”的思想,把大规模数据集的操作分发到多个机器去共同完成,然后对各个节点的中间结果进行整合后得到最终的结果。
2、MapReduce的核心思想
当启动一个MapReduce任务时,作业会将输入的数据集切分成若干独立的数据块,由Map端将数据映射成需要的键值对类型,然后对Map的输出进行排序,再把结果输入Reduce端;Reduce端接收Map端传过来的键值对类型的数据,根据不同键分组,对每一组键相同的数据进行处理,得到新的键值对并输出,这就是MapReduce的核心思想。
3、MapReduce编程模型
MapReduce是一种编程模型,它由Map和Reduce两个阶段组成。Map表示“映射”,由一定数量的Map
Task组成;Reduce表示“归约”,由一定数量的Reduce Task组成。

7、大数据的生态体

1、生态体系图

hadoop hive使用心得 hadoop pig hive_hadoop hive使用心得_02

2、大数据生态体系图的解读

1、数据来源层

数据分为三种数据:结构化数据,半结构化数据,非结构化数据
结构化数据:比如csv格式的数据,存在传统的关系型数据库中的数据基本上都是结构化数据。 半结构化据:比如
josn数据以及服务器,传感器产生的日志数据都是半结构化数据。
非结构化数据:图片,音乐,视频,这种单个文件不可分开的,或者分开了对文件本身有巨大影响的数据,影响打开、运行的都可称为非结构化数据。

2、数据传输层

Sqoop数据传递:主要用于结构化数据直接的互相导入。比如:mysql 到oracle。mysql 到 hive ,再或者 hive 到mysql。
Flume:主要就是采集一些日志文件 Kafaka消息队列:主要采集一些非结构化数据,当然也可以采集其他的数据。

3、数据存储层

数据保存的地方

4、资源管理层

主要就是通过YARN对集群资源的调度。

5、数据计算、处理层

对数据存储层的数据通过一系列的计算框架,实现对数据的加工计算处理,提供给业务模型层使用。

6、任务调度层

主要有Oozie任务调度,Azkaban任务调度,以及管理Hadoop生态圈各个框架的管理工具 Zookeeper。

7、业务模型层

使用数据计算,处理层的数据,来实现相应的功能,或者效果。