大数据平台开发大作业

本文详细介绍了如何在CentOS系统上搭建Hadoop高可用集群,包括HA&Federation的基本概念,前期准备,Hadoop高可用安装步骤,如安装Zookeeper、配置JournalNode和Standby Namenode,以及MapReduce的准备和Wordcount示例。此外,还讲解了在Windows环境下配置Hadoop的环境变量。
摘要由CSDN通过智能技术生成

HA&Federation介绍

Hadoop的介绍
Hadoop是一个能够对大量数据进行分布式处理的软件框架。 Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。

Hadoop框架
HDFS(分布式文件系统)由许多机器组成,其中机器有 Datanode Namenode Journalnode 。
Namenode 管理整个HDFS集群的元数据,比如,文件目录树等···
现在有一个1T的文件上传道HDFS中,他需要先告诉Namenode 我现在有一个1T文件需要上传,然后Namenode在文件目录树中生成一个新的文件对象,文件目录树是元数据,其中包含了有哪些文件,在哪等信息。(namenode每次修改都会产生记录)文件目录树是在内存中的,万一计算机出现意外那么信息全部丢失,因此每次内存中改完了会写一条 edits log , 元数据就保存到磁盘中,每次namenode机器重启只需要重新加载即可。
那么当edits log很大加载时间就会过长,这里就出现了 fsimage磁盘文件,和JournalNode 集群和standby namenode。
这时当active namenode 每次修改产生的 edits log 会同时写入本地磁盘和Journalnode集群,然后standbynode 从Journalnode中获得edits log 应用到自己的文件目录树中,与activenode保持一致。
然后每隔一段时间standbynode 把内存中的文件目录树写成一份fsimage,这就是一份完整的元数据,即checkpoint检查点操作。
然后fsimage传给active namenode接着清除旧的 edits log,再接着写入新的edits log ,当计算机重启时,就直接读取 fsimage(直接是元数据读取效率很高)到内存中,和少量的 edits log。
这时候文件目录树中新出现了一个文件,同时需要把1TB的数据传送到多台Datanode上 ,先把1TB的数据拆分成N个block ,这些block会在不同的机器上被管理,为了避免当1台机器挂了,数据丢失,所以它会默认的为每个block产生3个副本,当丢失一个还有其他的。同理当active namenode发生故障 会切换到 standby namenode
在这里插入图片描述

前期准备

准备好四台安装了centos系统的虚拟机,其中一台完成伪分布式的安装

Hadoop高可用安装

Ha安装方案
在这里插入图片描述
分发jdk到node04、05、06

-scp jdk-7u67-linux-x64.rpm node04:`pwd`
-scp jdk-7u67-linux-x64.rpm node05:`pwd`
-scp jdk-7u67-linux-x64.rpm node06:`pwd`

并在Xshell的全部会话栏里一起ll,看jdk是否发送成功

给node04、05、06分别安装jdk

分别在node04、05、06上执行rpm安装命令

-rpm -i jdk-7u67-linux-x64.rpm

在node03上cd /etc,在此目录下把profile文件分发到node04、05、06上

scp profile node04:`pwd`

利用Xshell全部会话栏,source /etc/profile
利用Xshell全部会话栏,jps,看04、05、06这三台机子的jdk是否装好

同步所有服务器的时间

-date 查看机子当前的时间。
时间不能差太大,否则集群启动后某些进程跑不起来
若时间不同步

  1. yum进行时间同步器的安装
  -yum -y install ntp
  1. 执行同步命令
  -ntpdate time1.aliyun.com  #和阿里云服务器时间同步

装机之前的配置文件检查

  1. -cat /etc/sysconfig/network
    查看HOSTNAME是否正确
  2. -cat /etc/hosts
    查看IP映射是否正确
    若不正确,可以改文件,也可以把node03上的用scp分发过去
  3. -cat /etc/sysconfig/selinux里是否
    SELINUX=disabled
  4. service iptables status查看防火墙是否关闭

NN与其他三台机子的免秘钥设置

  1. 在家目录下 ll –a看下有无.ssh文件,如果没有就ssh loalhost一下
  2. -cd .ssh ,并ll查看一下
  3. 把node02的公钥发给其他三台机子
scp id_dsa.pub node01:`pwd`/node02.pub
scp id_dsa.pub node03:`pwd`/node02.pub
scp id_dsa.pub node04:`pwd`/node02.pub
  1. 将node03的.ssh目录下的node02.pub追加到authorized_keys
cat node02.pub >> authorized_keys
  1. 其他机子同上,并检查在node02上能否ssh连接到其他三台机子

两个NN间互相免密钥
node02与node03间互相免密钥: node02可免密钥登录node03,那现需node03上能免密钥登node02,所以在node03上:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ssh localhost验证一下
分发到node02上:

scp id_dsa.pub  node01:`pwd`/node03.pub

在node02的.ssh目录下:

cat node03.pub >> authorized_key

在node03上ssh node02验证一下可否免密钥登录

修改namenode的一些配置信息

  1. vi hdfs-site.xml
<configuration>
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>node03:50090</value>
	</property>
	<!-- 为namenode集群定义一个services name --> 
	<property>   
		<name>dfs.nameservices</name>    
		<value>mycluster</value> 
	</property>
	<!--指定HDFS副本的数量,不能超过机器节点数--> 
	<property>  
		<name>dfs.replication</name>  
		<value>3</value> 
	</property>
	<!-- nameservice 包含哪些namenode,为各个namenode起名 --> 
	<property>    
		<name>dfs.ha.namenodes. mycluster</name>
		<value>nn1,nn2</value> 
	<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值