手把手教你hadoop入门

分布式系统和集群
Hadoop框架概论
HDFS文件系统
分布式
概念
分布式是指将多台服务器集中在一起,每台服务器都实现总体中的不同业务,做不同的事情
单机模式
用户交互系统
商品搜索系统
后台管理系统
该模式可以形象的比喻为:一个餐厅的厨房只有一个人,这个人既要买菜、又要切菜、还要炒菜,效率很低!
分布式模式
用户交互系统
商品搜索系统
该模式可以形象的比喻为:一个餐厅的厨房有三个人,一个人买菜、一个人切菜、一个人炒菜,效率提高了
集群
后台管理系统
概念
用户交互系统
所谓集群是指一组独立的计算机系统构成的一多处理器系统,它们之间通过网络实现进程间的通信,让若干台计算机
联合起来工作 ( 服务 ) ,可以是并行的,也可以是做备份。
分布式的基础架构
数量多 ,在现实生活中往往带来的不是提升,而是: 混乱
同学们思考一下, 众多的服务器一起工作,是如何高效、不出问题呢?
大数据体系中,分布式的调度主要有2类架构模式:
去中心化模式
中心化模式
去中心化模式
去中心化模式,没有明确的中心。
众多服务器之间基于 特定规则 进行同步协调。
中心化模式
主从模式
大数据框架,大多数的基础架构上,都是符合: 中心化模式的
即:有一个中心节点(服务器)来统筹其它服务器的工作,统一指挥,统一调派,避免混乱。
这种模式,也被称之为: 一主多从模式,简称主从模式(Master And Slaves)
我们学习的Hadoop框架,就是一个典型的主从模式(中心化模式)架构的技术框架。
总结
分布式和集群区别?
集群
分布式 :分布式的主要工作是分解任务,将职能拆解,多个人在一起做不同的事
集群:集群主要是将同一个业务,部署在多个服务器上 ,多个人在一起做同样的事
Hadoop是哪种分布式架构模式?
主从模式(中心化模式)的架构
Hadoop介绍
Hadoop是Apache软件基金会下的顶级开源项目,用以提供:
分布式数据存储
分布式数据计算
分布式资源调度
为一体的整体解决方案。
Apache Hadoop是典型的分布式软件框架,可以部署在1台乃至成千上万台服务器节点上协同工作。
个人或企业可以借助Hadoop构建大规模服务器集群,完成海量数据的存储和计算。
Hadoop的功能
近10年来,大数据技术体系一词一直和Hadoop是划上等号的,提起大数据技术基本就是在提及Hadoop。
通常意义上,Hadoop是一个整体,其内部还会细分为三个功能组件,分别是:
HDFS组件
HDFS是Hadoop内的分布式存储组件
可以构建分布式文件系统用于数据存储
MapReduce组件
MapReduce是Hadoop内分布式计算
组件。提供编程接口供用户开发分布式
计算程序
YARN组件
YARN是Hadoop内分布式资源调度组
件。
可供用户整体调度大规模集群的资源使
用。
Hadoop
所以,我们会说Hadoop是一个集合了: 存储、计算、资源调度 为一体的大数据分布式框架
Hadoop框架内容
狭义解释
Hadoop指Apache这款开源框架,它的核心组件有
HDFS (分布式文件系统):解决海量数据存储
MAPREDUCE (分布式运算编程框架):解决海量数据计算
YARN (作业调度和集群资源管理的框架):解决资源任务调度
广义解释
广义上来说, Hadoop 通常是指一个更广泛的概念 —— Hadoop生态圈
Hadoop框架内容
狭义解释
Hadoop指Apache这款开源框架,它的核心组件有
HDFS (分布式文件系统):解决海量数据存储
MAPREDUCE (分布式运算编程框架):解决海量数据计算
YARN (作业调度和集群资源管理的框架):解决资源任务调度
广义解释
广义上来说, Hadoop 通常是指一个更广泛的概念 —— Hadoop生态圈
Hadoop框架内容
狭义解释
Hadoop指Apache这款开源框架,它的核心组件有
HDFS (分布式文件系统):解决海量数据存储
MAPREDUCE (分布式运算编程框架):解决海量数据计算
YARN (作业调度和集群资源管理的框架):解决资源任务调度
广义解释
广义上来说, Hadoop 通常是指一个更广泛的概念 —— Hadoop生态圈
Hadoop入门 分布式系统和集群
Hadoop框架概论
HDFS文件系统 分布式
概念
分布式是指将多台服务器集中在一起,每台服务器都实现总体中的不同业务,做不同的事情
单机模式
用户交互系统
商品搜索系统
后台管理系统
该模式可以形象的比喻为:一个餐厅的厨房只有一个人,这个人既要买菜、又要切菜、还要炒菜,效率很低! 分布式
后台管理系统
分布式模式
用户交互系统
商品搜索系统
网络
网络
网络
该模式可以形象的比喻为:一个餐厅的厨房有三个人,一个人买菜、一个人切菜、一个人炒菜,效率提高了! 集群
后台管理系统
概念
用户交互系统
商品搜索系统
网络
网络
网络
所谓集群是指一组独立的计算机系统构成的一多处理器系统,它们之间通过网络实现进程间的通信,让若干台计算机
联合起来工作 ( 服务 ) ,可以是并行的,也可以是做备份。
网络
网络
负载均衡 分布式的基础架构
数量多 ,在现实生活中往往带来的不是提升,而是: 混乱
同学们思考一下, 众多的服务器一起工作,是如何高效、不出问题呢?
大数据体系中,分布式的调度主要有2类架构模式:
去中心化模式
中心化模式 去中心化模式
无(去)中心化模式
服务器
服务器
服务器
服务器
服务器
服务器
听我的
听我的
听我的
听我的
听我的
听我的
去中心化模式,没有明确的中心。
众多服务器之间基于 特定规则 进行同步协调。 中心化模式
中心化模式
服务器
服务器
服务器
服务器
服务器
服务器
... 大哥
... 大哥
都闭嘴
以后都听我调度
... 大哥
好的
ok
你觉得哪一种更好? 主从模式
大数据框架,大多数的基础架构上,都是符合: 中心化模式的
即:有一个中心节点(服务器)来统筹其它服务器的工作,统一指挥,统一调派,避免混乱。
这种模式,也被称之为: 一主多从模式,简称主从模式(Master And Slaves)
我们学习的Hadoop框架,就是一个典型的主从模式(中心化模式)架构的技术框架。
Master (主)
Slaves (从)
Slaves (从)
Slaves (从) 总结
总结
分布式和集群区别?
集群
分布式 :分布式的主要工作是分解任务,将职能拆解,多个人在一起做不同的事
集群:集群主要是将同一个业务,部署在多个服务器上 ,多个人在一起做同样的事
Hadoop是哪种分布式架构模式?
主从模式(中心化模式)的架构 分布式系统和集群
Hadoop框架概论
HDFS文件系统 学习目标
Learning Objectives
1. 了解Apache Hadoop框架
2. 了解Hadoop的发展 Hadoop介绍
Hadoop是Apache软件基金会下的顶级开源项目,用以提供:
分布式数据存储
分布式数据计算
分布式资源调度
为一体的整体解决方案。
Apache Hadoop是典型的分布式软件框架,可以部署在1台乃至成千上万台服务器节点上协同工作。
个人或企业可以借助Hadoop构建大规模服务器集群,完成海量数据的存储和计算。 Hadoop的功能
近10年来,大数据技术体系一词一直和Hadoop是划上等号的,提起大数据技术基本就是在提及Hadoop。
通常意义上,Hadoop是一个整体,其内部还会细分为三个功能组件,分别是:
HDFS组件
HDFS是Hadoop内的分布式存储组件
可以构建分布式文件系统用于数据存储
MapReduce组件
MapReduce是Hadoop内分布式计算
组件。提供编程接口供用户开发分布式
计算程序
YARN组件
YARN是Hadoop内分布式资源调度组
件。
可供用户整体调度大规模集群的资源使
用。
Hadoop
所以,我们会说Hadoop是一个集合了: 存储、计算、资源调度 为一体的大数据分布式框架 Hadoop框架内容
狭义解释
Hadoop指Apache这款开源框架,它的核心组件有
HDFS (分布式文件系统):解决海量数据存储
MAPREDUCE (分布式运算编程框架):解决海量数据计算
YARN (作业调度和集群资源管理的框架):解决资源任务调度
广义解释
广义上来说, Hadoop 通常是指一个更广泛的概念 —— Hadoop生态圈 Hadoop发展
Hadoop创始人: Doug Cutting
Hadoop起源于Apache Lucene子项目:Nutch
Nutch的设计目标是构建一个大型的全网搜索引擎。
遇到瓶颈:如何解决数十亿网页的存储和索引问题
Google三篇论文
《The Google file system》:谷歌分布式文件系统GFS
《MapReduce: Simplified Data Processing on Large Clusters》:谷歌分布式计算框架MapReduce
《Bigtable: A Distributed Storage System for Structured Data》:谷歌结构化数据存储系统 开源搜索引擎框架雏形诞生
2002
基于Google论文的内容,使用
Java完成了Hadoop框架的初版
开发
2006
Google发布了《GFS》
《MapReduce》相关分布式存
储和计算论文
0 3 - 0 4
创始人Doug Cutting加入雅虎
公司,在雅虎的支持下继续开发
Hadoop项目
2006
Hadoop贡献给Apache软件基
金会,成为Apache旗下顶级开
源项目
2008
从2008年开源以来到现在,
Hadoop已更新到3.x版本,成为
市面上知名的大数据框架
至今
Hadoop发展 Hadoop版本
发行版
Hadoop发行版本分为 开源社区版 商业版
开源社区版 : 指由 Apache 软件基金会维护的版本,是官方维护的版本体系 , 版本丰富,兼容性稍差。
商业版 : 指由第三方商业公司在社区版 Hadoop 基础上进行了一些修改、整合以及各个服务组件兼容性测试
而发行的版本,比较著名的有 cloudera CDH 等。
三大版本
1.x 版本系列: hadoop 的第二代开源版本,该版本基本已被淘汰
2.x 版本系列:架构产生重大变化,引入了 Yarn 平台等许多新特性 , 是现在使用的主流版本。
3.x 版本系列 : 该版本是最新版本。 开源社区版
商业发行版
Apache开源社区发行
也是 官方发行版本
优点:更新迭代快
缺点:兼容稳定性不周
商业公司发行
基于Apache开源协议
某些服务需要收费
优点:稳定兼容好
缺点:收费 版本更新慢
原生Hadoop体系
商业公司二次封装
Hadoop发行版本 Hadoop发行版本
开源社区版本
Apache 软件基金会(Apache Software Foundation,简称ASF)是专门支持开源项目的一个非盈利性组织。
URL: http://hadoop.apache.org/
商业发行版本
CDH (Cloudera's Distribution, including Apache Hadoop) Cloudera公司出品,目前使用最多的商业版
HDP(Hortonworks Data Platform),Hortonworks公司出品,目前被Cloudera收购
星环,国产商业版,星环公司出品,在国内政企使用较多 Hadoop架构
Hadoop架构模块 Hadoop架构
Hadoop2.x架构内部模型-HDFS和Yarn
HDFS 模块:
NameNode :集群当中的主节点,主要用于管理集群当中的各种数据
SecondaryNameNode 主要能用于 hadoop 当中元数据信息的辅助管理
DataNode 集群当中的从节点,主要用于存储集群当中的各种数据
数据计算核心模块:
ResourceManager 接收用户的计算请求任务,
并负责集群的资源分配
NodeManager 负责执行主节点分配的任务 Hadoop架构
Hadoop2.x架构模型-MapReduce Hadoop架构
Hadoop模块之间的关系
MapReduce计算需要的数据和产生的结果需要HDFS来进行存储
MapReduce的运行需要由 Yarn 集群来提供资源调度。 总结
总结
1. 什么是 Hadoop
Hadoop 是开源的技术框架,提供分布式存储、计算、资源
调度的解决方案
2. Hadoop 的发展
创始人 Doug Cutting
基于 Nutch 搜索项目发展
发展受到 Google 三篇著名的论文影响
3. Hadoop 的版本
Apache 开源社区版 (原生版本)
Cloudera 等商业公司自行封装的商业版 Hadoop集群搭建
集群简介
HADOOP集群具体来说包含两个集群: HDFS 集群和 YARN 集群,两者逻辑上分离,但物理上常在一起。
HDFS集群
NameNode DataNode SecondaryNameNode
YARN集群
ResourceManager NodeManager Hadoop集群搭建
集群搭建方式
Standalone mode (单机模式)
单机模式, 1 个机器上运行 HDFS NameNode DataNode YARN ResourceManger NodeManager ,主要用于学
习和调试。
Cluster mode (集群模式)
集群模式主要用于生产环境部署。会使用 N 台主机组成一个 Hadoop 集群。这种部署模式下,主节点和从节点会分开部署
在不同的机器上。 Hadoop集群搭建
大数据集群方案-单机模式
主机
组件
node1
(192.168.52.161)
HDFS 框架
NameNode
Secondary
Namenode
DataNode
Yarn 框架
ResourceManager
NodeManager
注意,在单机模式下,要求 Windows 系统运行内存至少也是 8G Hadoop集群搭建
主机组件
node1
(192.168.88.161)
node2
(192.168.88.162)
node3
(192.168.88.163)
HDFS 框架
NameNode
Secondary
Namenode
DataNode
Yarn 框架
ResourceManager
NodeManager
大数据集群方案-集群模式
本套课程已经搭建好 Hadoop 所有的开发环境,集群模式方案如下 :
注意,在集群模式下,要求 Windows 系统运行内存至少是 16G Hadoop集群使用
Hadoop启动和关闭-单节点模式
1 、启动虚拟机
在资料中已经提供好了单台虚拟机,
node1(192.168.52.161)
2 、使用 Termius 连接虚拟机
3 、集群一键启动和关闭
一键启动大数据环境
/onekey/my-start-all.sh
一键关闭大数据环境
/onekey/my-stop-all.sh Hadoop集群使用
Hadoop页面访问-集群模式
4 查看启动进程 -jps
[root@node1 bin]# jps
2976 RunJar
2881 JobHistoryServer
2692 NodeManager
2262 DataNode
2583 ResourceManager
2123 NameNode
2413 SecondaryNameNode
13726 Jps
2975 RunJar Hadoop集群使用
Hadoop页面访问-集群模式
5 、查看 HDFS 页面
一旦Hadoop集群启动并运行,可以通过web-ui进行集群查看,如下所述:
查看NameNode页面地址: http://192.168.52.161:50070 Hadoop集群使用
Hadoop页面访问-集群模式
6 、查看 YARN 页面
http://192.168.52.161:8088 Hadoop集群使用
Hadoop页面访问-集群模式
7 、查看已经 finished mapreduce 运行日志
http://192.168.52.161:19888 Hadoop集群使用
官方MapReduce示例
Hadoop 的安装包中,官方提供了 MapReduce 程序的示例 examples ,以便快速上手体验 MapReduce
该示例是使用 java 语言编写的,被打包成为了一个 jar 文件。
/export/server/hadoop-2.7.5/share/hadoop/mapreduce Hadoop集群使用
评估圆周率π(PI)
MapReduce 程序评估一下圆周率的值,执行中可以去 YARN 页面上观察程序的执行的情况。
hadoop jar hadoop-mapreduce-examples-2.7.5.jar pi x y
第一个参数 pi :表示 MapReduce 程序执行圆周率计算;
第二个参数 x :用于指定 map 阶段运行的任务次数,并发度, 举例 :x=10
第三个参数 y :用于指定每个 map 任务取样的个数, 举例 : x=50 Hadoop集群使用
单词词频统计WordCount
WordCount 算是大数据统计分析领域的经典需求了,相当于编程语言的 HelloWorld 。统计文本数据中,
相同单词出现的总次数。用 SQL 的角度来理解的话,相当于根据单词进行 group by 分组,相同的单词
分为一组,然后每个组内进行 count 聚合统计。
已知 word.txt 文件内容如下 , 计算每个单词出现的次数
zhangsan lisi wangwu zhangsan
zhaoliu lisi wangwu zhaoliu
xiaohong xiaoming hanmeimei lilei
zhaoliu lilei hanmeimei lilei Hadoop集群使用
单词词频统计WordCount 分布式系统和集群
Hadoop框架概论
HDFS文件系统 在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称为
分布式文件系统 。
HDFS Hadoop Distributed File System )是 Apache Hadoop 项目的一个子项目 . Hadoop 非常适于存储大型
数据 ( 比如 TB PB), 其就是使用 HDFS 作为存储系统 . HDFS 使用多台计算机存储文件 , 并且提供统一的访问接口 ,
像是访问一个普通文件系统一样使用分布式文件系统 .
分布式文件系统解决的问题就是大数据存储。它们是横跨在多台计算机上的存储系统。分布式文件系统在大数据
时代有着广泛的应用前景,它们为存储和处理超大规模数据提供所需的扩展能力。
HDFS的概述 HDFS的特点
HDFS 文件系统可存储超大文件,时效性稍差。
HDFS 具有硬件故障检测和自动快速恢复功能。
HDFS 为数据存储提供很强的扩展能力。
HDFS 存储一般为一次写入,多次读取,只支持追加写入,不支持随机修改。
HDFS 可在普通廉价的机器上运行。 HDFS的架构
HDFS 采用 Master/Slave 架构
一个 HDFS 集群有两个重要的角色,分别是 Namenode Datanode
HDFS 的四个基本组件 : HDFS Client NameNode DataNode Secondary NameNode HDFS的架构
1、 Client
就是客户端。
文件切分。文件上传 HDFS 的时候, Client 将文件切分成 一个一个的 Block ,然后进行存储
NameNode 交互,获取文件的位置信息。
DataNode 交互,读取或者写入数据。
Client 提供一些命令来管理 和访问 HDFS ,比如启动或者关闭 HDFS HDFS的架构
2、 NameNode
就是 master,它是一个主管、管理者。
管理 HDFS 元数据(文件路径,文件的大小,文件的名字,文件权限,文件的 block 切片信息 …. )。
配置副本策略。
处理客户端读写请求。 HDFS的架构
3 DataNode
就是 Slave NameNode 下达命令, DataNode 执行实际的操作。
存储实际的数据块。
执行数据块的读 / 写操作。
定时向 namenode 汇报 block 信息。 HDFS的架构
4 Secondary NameNode
并非 NameNode 的热备。当 NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。
辅助 NameNode ,分担其工作量。
在紧急情况下,可辅助恢复 NameNode HDFS的副本机制
HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件。它将每个文件存储成一系列的数据块,这个数据块
被称为block,除了最后一个,所有的数据块都是同样大小的。
hdfs 默认文件 :https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
为了容错,文件的所有block都会有副本。每个文件的数据块大小和副本系数都是可配置的。
hadoop 当中, 文件的 block 块大小默认是 128M(134217728字节)。
a.txt
300M
block1
block2
block3
Namenode
DataNode
DataNode
DataNode
128M
44M
128M
文件切分
文件存储 HDFS的Shell命令
Shell命令介绍
安装好 hadoop 环境之后,可以执行 hdfs 相关的 shell 命令对 hdfs 文件系统进行操作,比如文件的创建、删除、修改文
件权限等。
HDFS 的操作命令类似于 Linux shell 对文件的操作,如 ls mkdir rm 等。
Hadoop提供了文件系统的 shell 命令使用格式如下:
hadoop fs <args>
或者
hdfs dfs <args> HDFS的Shell命令
ls命令
-ls
格式: hadoop fs -ls URI
作用:类似于 Linux ls 命令,显示文件列表
hadoop fs -ls / # 显示文件列表
hadoop fs –ls -R / # 递归显示文件列表 HDFS的Shell命令
mkdir命令
格式 : hadoop fs –mkdir [-p] <paths>
作用 : <paths> 中的 URI 作为参数,创建目录。使用 -p 参数可以递归创建目
应用 :
hadoop fs -mkdir /dir1
hadoop fs -mkdir -p /aaa/bbb/ccc HDFS的Shell命令
mv命令
格式 :
hadoop fs -mv <src> <dst>
作用:
hdfs 上的文件从原路径 src 移动到目标路径 dst, 该命令不能夸文件系统
应用:
hadoop fs -mv /dir1/1.txt /dir2 HDFS的Shell命令
rm命令
格式:
hadoop fs -rm [-r] [-skipTrash] URI [URI 。。。 ]
作用:
删除参数指定的文件和目录,参数可以有多个,删除目录需要加 -r 参数
如果指定 -skipTrash 选项,那么在回收站可用的情况下,该选项将跳过回收站而直接删除文件;
否则,在回收站可用时,在 HDFS Shell 中执行此命令,会将文件暂时放到回收站中。
应用 :
hadoop fs -rm /initial-setup-ks.cfg # 删除文件
hadoop fs -rm -r /dir2 # 删除目录 HDFS的Shell命令
cp命令
格式 :
hadoop fs -cp <src> <dst>
作用:
将文件拷贝到目标路径中
应用:
hadoop fs -cp /dir1/1.txt /dir2 HDFS的Shell命令
cat命令
格式 :
hadoop fs -cat <filepath>
作用:
将参数所指示的文件内容输出到控制台
应用:
hadoop fs -cat /dir1/1.txt HDFS的Shell命令
put命令
格式 :
hadoop fs -put <localsrc > ... <dst>
作用 :
将单个的源文件或者多个源文件 srcs 从本地文件系统上传到目标文件系统中。
应用:
hadoop fs -put /root/1.txt /dir1 # 上传文件
hadoop fs –put /root/dir2 / # 上传目录 HDFS的Shell命令
get命令
格式 :
hadoop fs -get <src> <localdst>
作用:
HDFS 文件拷贝到本地文件系统。
应用 :
hadoop fs -get /initial-setup-ks.cfg /opt 总结
总结
1. 了解hdfs的架构
2. 掌握hdfs的shell命令
hdfs文件系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值