hadoop入门(一)
一、概述
1.什么是hadoop
hadoop不仅是一个用于存储分布式文件系统,还是设计用来在有通用计算设备组成的大型集群上执行的分布式应用的基础框架。
hadoop框架最核心的设计是mapreduce和HDFS
1.2为什么要选择hadoop
1)扩容:能可靠的处理和存储PB级数据
2)成本:可以通过普通机器组成服务器群来分发和处理数据,这些服务器总计可大上千节点
3)高效:通过分发数据,hadoop可以并行处理这些数据,使它们特别快速
4)可靠:hadoop可以通过机器感知进行数据备份,并且任务失败后可以重新计算
12.2使用场景
主要用于海量数据分析
二、分布式文件系统HDFS
1.1Namedata:名称节点
1)维护HDFS文件系统,是HDFS的主节点
2)接收客户端的请求:上传文件、下载文件、创建文件等等
3)记录客户端操作的日志(edits文件),保存HDFS最新状态
-edits文件保存了自最后一次检查点之前针对HDFS的所有操作,如:增加文件,重命 名,删除文件
-保存目录:
H
A
D
O
O
P
H
O
M
E
/
t
m
p
/
d
f
s
/
n
a
m
e
/
c
u
r
r
e
n
t
−
可
以
使
用
h
d
f
s
o
v
e
−
i
命
令
将
日
志
(
二
进
制
)
输
出
为
X
M
L
文
件
4
)
维
护
文
件
元
信
息
,
将
内
存
中
不
常
用
的
元
信
息
存
储
到
硬
盘
上
(
f
s
i
m
a
g
e
文
件
)
−
f
s
i
m
a
g
e
是
H
D
F
S
文
件
系
存
于
元
数
据
的
检
查
点
,
里
面
记
录
了
自
最
后
一
次
检
查
点
之
前
H
D
F
S
中
多
有
目
录
和
文
件
的
序
列
化
信
息
−
保
存
目
录
:
HADOOP_HOME/tmp/dfs/name/current -可以使用hdfs ove -i 命令将日志(二进制)输出为XML文件 4)维护文件元信息,将内存中不常用的元信息存储到硬盘上(fsimage文件) -fsimage是HDFS文件系存于元数据的检查点,里面记录了自最后一次检查点之前HDFS中多有目录和文件的序列化信息 -保存目录:
HADOOPHOME/tmp/dfs/name/current−可以使用hdfsove−i命令将日志(二进制)输出为XML文件4)维护文件元信息,将内存中不常用的元信息存储到硬盘上(fsimage文件)−fsimage是HDFS文件系存于元数据的检查点,里面记录了自最后一次检查点之前HDFS中多有目录和文件的序列化信息−保存目录:HADOOP_HOME/tmp/dfs/name/current
-可以使用hdfs oiv -i 命令将日志(二进制)输出为文本
1.2DataNode:数据节点
1)以数据块为单位,保存数据
hadoop1.0的数据块单位为64M
hadoop2.0的数据块单位为128M
2)在全分布式模式下,至少两个DataNode节点
3)数据保存的目录:由hadoop.tmp.dir决定
1.2SecondayNameNode:第二人称节点
1.主要作用是日志合并
2.日志合并的过程
1.3HDFS存在的问题
1.NameNode单点故障,难以应用二在线场景
解决方案:hadoop1.0没有解决方法
hadoop2.0使用Zookeeper实现NameNod的HA功能
2.NameNode压力过大,且内存受限,影响系统扩展性
解决方案
hadoop1.0 中没有解决方案
hadoop2.0 使用NameNode的联盟实现其水平扩展
1.4YARN:分布式计算(MapReduce)
ResourceManager(资源管理器)
1.接收客户端的请求:执行任务
2.分配资源
3.分配任务
NodeManager(节点管理器:运行任务MapReduce)
1.从Data上获取数据,执行任务