第一章 hadoop概论

1.1 课程体系介绍

大数据概念,巨量数据集合,指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

1.2 Hadoop产生的历史(黄色小象)

2002年  Nutch项目开始运行

2003年 谷歌发表GFS(Google文件存储系统)论文

2004年 Doug根据GFS设计了NDFS(Nutch分布式文件系统)

2005年 Nutch移植到新的框架,Hadoop早期版本在20个节点上运行

2006年1月 Doug加盟雅虎(Doug Cutting是Lucene、Nutch 、Hadoop等项目的发起人)

2006年2月 ApacheHadoop项目启动

2008年4月 Hadoop赢得世界1TB数据排序冠军

2013年11月 Hadoop技术峰会召开,标志Hadoop进入2.0时代

1.3 Hadoop基础概念

Hadoop是什么?开源的分布式存储+分布式计算平台

Hadoop组成 ,两个核心部分:

HDFS—分布式文件系统,存储海量数据     

MapReduce—并行处理框架,实现任务分解和调度

Hadoop可以做什么  搭建大型数据仓库,PB级数据的存储、处理、分析、统计等业务

Hadoop的优势

1、扩展性,硬件的扩展实现容量无限提升,性能的无限提升

2、低成本,不依赖于高端仪器来堆叠系统 保证可靠性

Hadoop生态工具

HIVE—SQL语句

HBASE—

ZooKeeper—监控节点状态

第二章 分布式文件系统HDFS

2.1 HDFS的体系结构

 设计目标

自动检测处理硬件错误

流式访问数据

转移计算比移动数据更划算(减少数据传输,存储数据的节点负责它的数据运算)

简单一致性模型(一次写入多次读取,数据不会修改)

异构平台的可移植性

三个基本概念

块(Block)

NameNode(主节点)

DataNode(数据节点)

数据块:

HDFS的文件被分成块进行存储

HDFS块的默认大小64MB

块是文件存储处理的逻辑单元

HDFS中的两类节点

NamdNode是管理节点,存放元数据

①文件与数据块的映射表

②数据块与数据节点的映射表

DataNode是HDFS的工作节点,存放真正的数据块

hadoop 大数据开发 hadoop大数据开发基础第二版_hadoop 大数据开发

2.2 HDFS的主要特点

HDFS的数据管理策略,多份冗余

冗余机制

hadoop 大数据开发 hadoop大数据开发基础第二版_hadoop 大数据开发_02

数据一致性保证(心跳协议)

hadoop 大数据开发 hadoop大数据开发基础第二版_hadoop 大数据开发_03

主节点备份二级NameNode(备份无请求)

HDFS文件操作流程

读取文件步骤

①客户端向NameNode发送一个处理请求(客户端可能是一个Java程序也可能是一个命令行操作,将文件名路径告诉NameNode)
②NameNode查询元数据后将结果返回给客户端(客户端就会知道文件包含哪些数据块,要去哪些DataNode上获取)
③在DataNode上获取数据

 

hadoop 大数据开发 hadoop大数据开发基础第二版_HDFS_04

写入文件步骤

①把文件拆分成数据块,再通知NameNode
②查找可用的数据块返回给客户端
③客户端写入DataNode
④节点复制 复制到其他两个DataNode上
⑤DataNode通知NameData更新了数据

 

 

 

hadoop 大数据开发 hadoop大数据开发基础第二版_HDFS_05

HDFS特点
①数据冗余、硬件容错
②流式的数据访问(写一次读多次)
③存储大文件
适用性和局限性
①适合数据批量写入,吞吐量高
②不适合交互式应用,低延迟很难满足
③适合一次写入多次读取,顺序读写
④不支持多用户并发写相同文件

 2.3 的文件读写操作

HDFS的命令行操作
HDFS提供了shell的操作接口
操作命令与Linux相似
格式为:hadoop fs -<命令><目标> (目录的路径或者文件)
例如:hadoop fs -ls /user(用来查看文件系统中的/user下的文件)

HDFS常用命令(在终端模拟器中,clear清除屏幕)
①查看hdfs系统版本
hdfs version
②查看hdfs系统状态
hdfs dfsadmin -report
③查看目录及文件
hadoop fs -ls /(查看具体目录hadoop fs -ls /user)
④创建及删除目录
hadoop fs -mkdir /input
hadoop fs -rm -r /input(删除目录要加-r,直接删除文件用-rm即可,都要注意“空格”)
⑤上传及下载文件
hadoop fs -put <本地文件><远端目录>(hadoop fs -put text.txt/input/)
hadoop fs -get <本地目录><远端文件>(hadoop fs -get /input/text.txt)
文件重命名hadoop fs –mv /user/test.txt /user/ok.txt (将test.txt重命名为ok.txt)
⑥查看文件件内容
hadoop fs -cat /input/text.txt

 

3.1 MapReduce的原理
分而治之,一个大任务分成多个小的子任务(map),并行执行后,合并结果(reduce)
体系结构
分布式编程架构
以数据为中心,更看重吞吐率
分而治之的思想
Map将一个任务分解成多个子任务
Reduce将多个子任务的计算结果汇总

图书清点案例

hadoop 大数据开发 hadoop大数据开发基础第二版_Hadoop_06

 

3.3 MapReduce运行流程
相关概念
Job&Task Job—任务、作业 -JobTracker
Task—Job被分为多个Task,分为MapTask和ReduceTask -TaskTracker
JobTracker的角色①作业调度②分配任务、监控任务执行进度③监控TaskTracker的状态
TaskTracker的角色①执行任务②汇报任务状态
MapReduce的容错机制①重复执行(默认情况为4次)②推测执行(所有map任务完成后再执行reduce任务)

MapReduce体系结构

hadoop 大数据开发 hadoop大数据开发基础第二版_hadoop_07

MapReduce作业执行过程

hadoop 大数据开发 hadoop大数据开发基础第二版_hadoop 大数据开发_08

3.3 MapReduce案例
WordCount单词计数—计算文件中每个单词出现的次数,对最终输出结果进行排序
map过程将文件切分成单词,将词作为key,单词的出现次数作为value,得到key-value输出对
reduce阶段 对map阶段产生的中间值进行归约合并

hadoop 大数据开发 hadoop大数据开发基础第二版_Hadoop_09

map过程

hadoop 大数据开发 hadoop大数据开发基础第二版_Hadoop_10

reduce过程(哈希)

hadoop 大数据开发 hadoop大数据开发基础第二版_hadoop 大数据开发_11