第二次课:hadoop集群概述以及搭建


(1)znode操作总结

首先 先在node01 node02 node03上分别重新启动 切换到hadoop用户

第二步;在hadoop用户下 ,启动zookeeper的服务器端 三台电脑都需要这么做

第三步,在node01上,/usr/local/zookeeper/bin/zkCli.sh start

再./zkCli.sh start

在node02和node03上均需要这么做

ls / 查看目录结构

演示 Zookeeper的一些命令

#创建 永久节点zktest,并给一个值123

create /zktest 123

#查看永久节点的值

get /zktest

#修改永久节点的值

set /zktest 345

#演示监听

在第二台机器上

在/usr/bin/zookeeper/bin/zkCli.sh

ls /

此时切换到第一台机器,给第一台机器一个监听事件

get /zktest watch

再切换到第二台电脑,改一下第二台电脑上的zktest的值

set /zktest 678

查看第一台电脑,上面回应有提示:watchedEvent state:SyncConnected type:NodeDataChanged path:/zktest

注意:这是一个临时监听,如果此时在第二台电脑上再改变zktest的值,第一台电脑上不会再显示节点的数据改变。

#创建持久节点的子节点

在第一台电脑上

create /zktest/s1 111

ls /zktest

get /zktest/s1

#创建持久节点的顺序节点

create -s /zktest/ss1 111 #创建第一个持久顺序节点

create -s /zktest/ss2 222 #创建第二个持久顺序节点(注意创建的持久顺序节点,每次创建会在数据节点后给一个随机数字,再创建就依次递增1)

ls /zktest

#创建临时节点

create -e /zktest/e1 e1111

quit(在会话结束后,会自动删除临时节点)

在第二台机器的客户端

#自动监听临时节点

ls /zktest

create -e /zktest/eee1 eee1

在第二台机器上监听

ls /zktest watch

接着在第一台电脑退出

quit

在第二台电脑上查看,会提示目录结构的变化:WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/zktest

#测试delete命令

在第一台电脑上先连上

delete命令不能删除数据节点的子节点,如果想删除子节点,用rmr

ls /zktest

delete /zktest 提示不能删除

rmr /zktest

ls /

#更新数据的版本号

create /zktest2 test2

get /zktest2

set /zktest2 test33

会显示数据的版本号从0增加到了1

dataVersion = 1

set /zktest2 4444 0  #0是版本号

会提示版本号错误,因此需要更新的值的数据版本号要和当前的版本号匹配,变成

set /zktest2 4444 1

get /zktest2

quit

telnet node01 2181

conf #查看数据节点的配置信息

cons #输出服务器上所有客户端所有的连接信息

#测试cons

在第一台电脑上

telnet node02 2181

cons

#在node03上看node02的连接信息是什么样的

跳到node03这台电脑上

/usr/local/zookeeper/bin/zkCli.sh -server node02:2181

然后返回第一台电脑上看连接信息

telnet node02 2181

cons

此时会发现,有两台电脑连接了node02,分别是第一台和第三台机器:

/192.168.183.152:36108[0]...

/192.168.183.154:46281[1]..

#stat命令的测试 输出zookeeper的运行状态 版本,运行角色

telnet node02 2181

stat

在另外两台电脑上退出

(2)hadoop集群总结(上课随堂总结)

第二部分 Hadoop概述

1.优点:自动复制副本的内容

不拷贝数据 而是直接在数据节点上直接计算;

存储数据量巨大

流式文件访问:一次写入,多次读取,保证数据一致性。

不适合多线程写入同一个文件,只支持在文件的末尾追加,

2.HDFS架构

超大文件(PB级),流式数据写入;能够在低廉的商用机器上使用;在多线程上不能造成数据的混乱;并行处理数据,易扩展,高容错。

切分文件,存储在不同机器上

读取时,先读取文件快,文件块与节点的映射关系,通过节点读取文件

用master来管理这些存储的信息

存储的这些信息的节点是slave

活动的NameNode  备用的NameNode 管理数据的元信息 元数据同步

slave角色 datanode 一台机器启动一个datanode进程

客户端先和namenode发生交互,从amenode获得数据的元信息,datanode从返回的元信息读取或写入文件。datanode通过心跳象namenode汇报情况

3 核心概念

3.1namenode管理HDFS文件系统的命名空间

3.2standby

namenode 元数据文件:编辑日志,负责记录客户端对目录和文件的写操作;文件系统元数据检查点镜像文件:保存了文件系统中所有的目录和文件信息(目录下有哪些子目录,子文件,文件名,文件信息,

,文件副本数,文件由哪些块组成)。

3.3datanode:Slave工作节点,对数据块进行校验;周期性向namenode报告块的列表信息,namenode通过心跳感知datanode的运行状态。如果发现datanode发生故障了,就不会将客户端的I/O转发给datanode。

3.4数据块 HDFS最小存储单元

3.5Client

3.6QJM共享存储系统(元数据共享和元数据同步) 实现HDFS高可用

JournalNode集群存储edit.log在每个机器上的JournalNode存储一份。

3.6主备切换控制器,DFSZKFailoverController(ZKFC)

同时构建 HealthMonitor(监控namenode的健康状况),和ActiveStandbyElector

防止假死的脑裂情况。当NN2想切换为Active,通过隔离fencing NN2会通过远程调用SSH 自身将standby转成Active的方法

如果不成功,就使用Q-9 强行把另一个Active namenode进程杀掉

第三种情况,通过namenode上的一个脚本,强制关机。

第三部分:Yarn产生背景

降低运行和维护成本,实现数据共享和计算资源共享

Yet another resource negotiator

也实现master/slave manager

Resource manger/NodeManager

Resource manger根据客户请求在nodemanager分配container,封装了CPU,MEM这些资源。Resource manger启动NodeManager 里面的Application Master。启动后的它与Resource manger通信,申请资源。 Resource manger申请了资源后,与nodemanger通信,让nodemanger启动任务(例如Mapreduce),同时container

也执行起来。任务启动后,会通过心跳告诉Application Master,任务的运行状态。Application master监控任务的执行,如果任务执行失败,就会让其他的nodemanger执行该任务。

此外,还有一个备份的Resource manger(standby Resource manager)

在Zookeeper创建临时节点,也通过选举机制变换状态。

Nodemanger

Applicationmaster

Container

(131:25注意听)

Zookeeper主要用于name node和resource manager选主过程。

name node1和namenode2都会向Zookeeper申请创建临时节点。如果namenode1创建成功,nn2就会创建失败。

另外,Yarn中的resource manager也会向Zookeeper申请创建临时节点。如果rm1创建成功,那么rm1就是active

rm2就是standby。如果rm1挂掉了,就会被删除。rm2重新创建临时节点,创建成功了,就会从standby切换为active;

Zookeeper充当了高可选举的功能。

你可能感兴趣的:(第二次课:hadoop集群概述以及搭建)