Hadoop(四)

本文介绍了Zookeeper在Hadoop中的角色,包括其作为分布式协调服务的功能、Paxos算法在处理分布式一致性问题的应用,以及Hadoop高可用性的搭建步骤,涵盖了Zookeeper命令、MapReduce流程详解。
摘要由CSDN通过智能技术生成

Hadoop_Day04


什么是zookeeper

ZooKeeper是一个开源的分布式协调服务,用于管理和维护分布式系统中的配置信息、命名服务、状态同步等,提供可靠性和高性能的基础设施支持


Paxos算法

分布式系统中的节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing)。基于消息传递通信模型的分布式系统,不可避免的会发⽣以下错误:进程可能会慢、 被杀死或者重启,消息可能会延迟、丢失、重复,在基础Paxos场景中,先不考虑可能出现消息篡 改即拜占庭错误的情况。Paxos算法解决的问题是在⼀个可能发⽣上述异常的分布式系统中如何就 某个值达成⼀致,保证不论发⽣以上任何异常,都不会破坏决议的⼀致性。


zookeeper的一些常用命令

  1. 创建节点: create path data [acl]:创建一个新的ZooKeeper节点。
  2. 获取节点数据: get path [watch]:获取指定节点的数据,并选择是否设置监听。
  3. 列出子节点: ls path [watch]:列出指定节点的子节点。
  4. 设置节点数据: set path data [version]:设置指定节点的数据。
  5. 删除节点: delete path [version]:删除指定节点及其所有子节点。delete命令只能删除指定节点,而无法删除其子节点;rmr命令则可以递归地删除指定节点及其所有子节点。

Hadoop高可用搭建

        ZK	NN	DN	RM	NM	JN	ZKFC
master	1	1		1		1	1
node1	1	1	1	1	1	1	1
node2	1		1		1	1

1、防火墙
service firewalld stop
2、时间同步
yum install ntp
ntpdate -u s2c.time.edu.cn

或者
date -s 20180503

3、免密钥 (远程执行命令)
在两个主节点生成密钥文件
ssh-keygen -t rsa
ssh-copy-id ip

master-->master,node1,node2
node1-->master,node1,node2

4、修改hadoop配置文件
core-site.xml
hdfs-site.xml

停止HDFS集群:stop-dfs.sh


同步到其它节点
	cd /usr/local/soft/hadoop-2.7.6/etc/hadoop
	scp ./* node1:`pwd`
	scp ./* node2:`pwd`

5、删除hadoop数据存储目录下的文件 每个节点都需要删除
rm -rf /usr/local/soft/hadoop-2.7.6/tmp

然后在hadoop-env.sh中最下面添加(只用在master中)

export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root

6、启动zookeeper 三台都需要启动
zkServer.sh start
zkServer.sh status

7、启动JN 存储hdfs元数据
三台JN上执行 启动命令:
/usr/local/soft/hadoop-2.7.6/sbin/hadoop-daemon.sh start journalnode

8、格式化 在一台NN上执行,这里选择master
hdfs namenode -format
启动当前的NN
hadoop-daemon.sh start namenode

9、执行同步 没有格式化的NN上执行 在另外一个namenode上面执行 这里选择node1
/usr/local/soft/hadoop-2.7.6/bin/hdfs namenode -bootstrapStandby

10、格式化ZK 在master上面执行
!!一定要先 把zk集群正常 启动起来
/usr/local/soft/hadoop-2.7.6/bin/hdfs zkfc -formatZK

11、启动hdfs集群,在master上执行
start-dfs.sh


MapReduce流程

在这里插入图片描述

  1. map阶段:在进⾏map计算之前,mapreduce会根据输⼊⽂件计算输⼊分⽚(input split),每 个输⼊分⽚(input split)针对⼀个map任务,默认⼀个block对应⼀个切⽚。⼀个切⽚对应⼀个 MapTask, 切⽚完成后开始执⾏⾃定义map代码逻辑
  2. shuffle阶段: Mapper任务结束后产⽣的输出,这些输出先存放在缓存中,每个map有⼀个环形内存缓 冲区,⽤于存储任务的输出。默认⼤⼩100MB(io.sort.mb属性),⼀旦达到阀值0.8(io.sort.spil l.percent),⼀个后台线程就把内容写到(spill)Linux本地磁盘中的指定⽬录(mapred.local.dir)下 的新建的⼀个溢出写⽂件。 写磁盘前,要进⾏partition、sort和combine等操作。通过分区,将不同类型的数据分开处理,之 后对不同分区的数据进⾏排序,如果有Combiner,还要对排序后的数据进⾏combine。等最后记 录写完,将全部溢出⽂件合并为⼀个分区且排序的⽂件。
  3. Reduce阶段:当MapTask执⾏完成之后开始执⾏ReduceTask 执⾏ReduceTask之前会先从Map端拉取 从map端复制来的数据⾸先写到reduce端的缓存中,同样缓存占⽤到达⼀定阈值后会将数据 写到磁盘中,同样会进⾏partition、combine、排序等过程。如果形成了多个磁盘⽂件还会 进⾏合并,最后⼀次合并的结果作为reduce的输⼊⽽不是写⼊到磁盘中。 最后将合并后的结果作为输⼊传⼊Reduce任务中。 最后就是Reduce过程了,在这个过程中产⽣了最终的输出结果,并将其写到HDFS上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值