高可用式集群安装

一、 准备工作

1.准备四台已经网络配置好的虚拟机,然后配置主机名(主机名可自定义)

编辑vi /etc/sysconfig/network
HOSTNAME=node02(分别在每台上修node02,node03,node04)

  1. 配置hosts(每台都配)

vi /etc/hosts 添加以下内容
在这里插入图片描述
并且在c:/windows/system32/drivers/etc/hosts 下也要添加这四台的ip+主机名

  1. 关闭防火墙&Selinux
service iptables stop
chkconfig iptables off

4.编辑vi /etc/selinux/config修改以下内容
SELINUX=disabled

5.检测:用ping命令分别ping www.baidu.com和node02,03,04看是否能否相互ping通

6.温馨提示:(1)可以用虚拟机拍快照存下现在配好的版本,以防后面出错可恢复到现在的状态。(2)在做每一步的时候做完尽量验证一下是否正确,不然到后面出错很麻烦
二、 打开node02开始伪分布式安装

1.用传输软件将准备好的安装包给传到node02下在这里插入图片描述
2.rpm -i jdk-7u67-linux-x64.rpm
在这里插入图片描述
3.vi + /etc/profile 添加以下内容
在这里插入图片描述
保存后source /etc/profile
用 Jps验证,出现一行数字加结果就正确了
在这里插入图片描述

4.免秘钥设置:

(1) 用ssh localhost生成.ssh文件并用ll -a查看(ssh后别忘了exit)在这里插入图片描述
(2)生成免秘钥ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
并追加
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
在这里插入图片描述
(3)检测:分别用ssh localhost和ssh node02验证,不用输输密码就成功了(注意:每次ssh一次都要exit才能进行下一步操作)

5.准备好一个hadoop-2.6.5.tar.gz版本,安装到你想要安装的目录下

tar xf hadoop-2.6.5.tar.gz -C /opt/xxx

然后去查看以下这个目录有无解压好

  1. vi /etc/profile 修改如下保存后记得source /etc/profile在这里插入图片描述
    检测:输入hd按Tab键可以联想出hdfs
    输入start-d按Tab键可以联想出start-dfs.
    就表示配置成功了

7.切换到cd /opt/xxx/hadoop-2.6.5/etc/hadoop目录,分别配置如下文件
给这三个文件里的export JAVA_HOME都改成绝对路径/usr/java/jdk1.7.0_67
(注意把JAVA_HOME前面的#给删除)

vi hadoop-env.sh
  vi mapred-env.sh
  vi yarn-env.sh

8.修改hadoop配置文件信息
(1) 配置 vi core-site.xm(在两个之间加入下面内容)

fs.defaultFS
hdfs://node02:9000


hadoop.tmp.dir
/var/xxx/hadoop/pseudo

(2)修改hadoop配置文件信息
配置 vi hdfs-site.xml

      <property>
        <name>dfs.replication</name>
        <value>1</value>  
   </property>
       <property>       
  <name>dfs.namenode.secondary.http-address</name>
        <value>node02:50090</value>
    </property>

(3)配置slaves文件

  vi slaves 
           node02

9.格式化hdfs
hdfs namenode -format (只能格式化一次,再次启动集群不要执行,否则clusterID变了)
之前/var/xxx/hadoop/pseudo这个文件不存在,格式化后就存在了

10.启动集群
start-dfs.sh,并用jps验证下都有哪些进程启动起来了。在这里插入图片描述

11.在浏览器里打开node02:50070(别用360浏览器!)
在这里插入图片描述

12.运行wordcount
创建目录:hdfs dfs -mkdir -p /user/root

上传文件 :hdfs dfs -put a.txt /user/root(将一个任意a文本文件上传)
在hdfs里建立输入目录和输出目录

 hdfs dfs -mkdir -p /data/input
  hdfs dfs -mkdir -p /data/output

将要统计数据的文件上传到输入目录并查看

  hdfs dfs -put a.txt /data/input     
  hdfs dfs -ls /data/input

进入MapReduce目录

 cd /opt/xxx/hadoop-2.6.5/share/hadoop/mapreduce/

运行wordcount

 hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /data/input /data/output/result

在这里插入图片描述

查看运行结果

 hdfs dfs -ls /data/output/result 
  hdfs dfs -cat /data/output/result/part-r-00000

在这里插入图片描述
最后停止集群:stop-dfs.sh

三、
Hadoop高可用安装
1.将node02上的jdk分别发到node03、04、05并安装

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

安装命令:rpm -i jdk-7u67-linux-x64.rpm
并将配置文件cd /etc下的profile文件发到其他三台上去

scp profile node03:`pwd`

并刷新profile:source /etc/profile
用jps检查是否都安装好

2.将四台机子同(安装同步器并运行)
(1).yum进行时间同步器的安装

  yum - install ntp

(2).执行同步命令
ntpdate time1.aliyun.com 和阿里云服务器时间同步

3.免秘钥设置:
(1)把node02的公钥发送给其他三台(node02在上面步骤的时候已经生成过免秘钥了)
scp id_dsa.pub node03:`pwd`/node02.pub
(公钥发送给node03,改名为node02)代码中的 ’ 这个符号不是单引号,是数字键1旁边的那个符号

并在其它三台机子上追加node02的公钥:
cat node02.pub >> authorized_keys(在.ssh文件下追加)
(2)在node02下验证是否成功免秘钥ssh node03、04、05(每ssh一次都要exit才能进行下一次ssh)
(3)在其他三台上的家目录下用ssh
loalhost,生成.ssh文件,用ll -a查看

并生成免秘钥:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

且追加:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

用同样方法使node02和node02之间能够免秘钥
也要验证以下

4.修改一些namenode的一些配置信息
(1)vi hdfs-site.xml(配置内容如下)

<property>
     <name>dfs.replication</name>
        <value>3</value>
    </property>

<property>
  <name>dfs.nameservices</name>
 <value>mycluster</value>
</property>

<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>

<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>node02:8020</value>
</property>

<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
 <value>node03:8020</value>
 </property>

<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
 <value>node02:50070</value>
 </property>

<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>node03:50070</value>
</property>

<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node02:8485;node03:8485;node04:8485/mycluster</value>
</property>

<property>
<name>dfs.journalnode.edits.dir</name>
<value>/var/xxx/hadoop/ha/jn</value>
</property>

<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<property>
<name>dfs.ha.fencing.methods</name>
 <value>sshfence</value>
</property>

<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
 <value>/root/.ssh/id_dsa</value>
</property>

<property>
<name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>

(2)vi core-site.xml

<configuration>
<property>
        <name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
    </property>
    <property>
      <name>hadoop.tmp.dir</name>
<value>/var/xxx/hadoop/pseudo</value>
</property>
<property>
  <name>ha.zookeeper.quorum</name>
<value>node03:2181,node04:2181,node05:2181</value>
</property>
</configuration>

(3)vi slaves

node04
node05
node06

5.安装hadoop(首先cd /opt/xxx/Hadoop-2.6.5下)

   cd /opt ,将其下的xxx目录分发到node03、04、05
scp –r  xxx/ node03:`pwd`
scp –r  xxx/ node04:`pwd`
scp –r  xxx/ node05:`pwd`

6.安装zookeeper(准备好zookeeper安装包在node03上安装)
(1)解压安装zookeeper

tar xf zookeeper-3.4.6.tar.gz -C /opt/ldy
(2)修改zookeeper的配置文件
 cd /opt/xxx/zookeeper-3.4.6/conf

(3)给zoo_sample.cfg改名

 cp zoo_sample.cfg zoo.cfg

(4)vi zoo.cfg
改dataDir=/var/xxx/zk
并在末尾追加

server.1=node03:2888:3888
server.2=node04:2888:3888
server.3=node05:2888:3888

(5)把zookeeper分发到其他节点(先cd /opt/xxx下)

 scp -r zookeeper-3.4.6/ node05:`pwd`
 scp -r zookeeper-3.4.6/ node06:`pwd`
  1. 给每台机子创建刚配置文件里的路径(03、04、05台)

mkdir -p /var/xxx/zk
对node03来说:

 echo 1 > /var/xxx/zk/myid
   cat /var/xxx/zk/myid

对node04来说:

echo 2 > /var/xxx/zk/myid
  cat /var/xxx/myid

对node05来说:

 echo 3 > /var/xxx/zk/myid
   cat /var/xxx/zk/myid
  1. 配置文件并启动zookeeper
    (1)在node03上cd /etc/profile里面配置如下内容并分发给04、05(分发命令:scp /etc/profile node05:/etc,注意别忘了source /etc/profie
    在这里插入图片描述
    (2)验证source这句是否完成,输入zkCli.s,按Tab可以把名字补全zkCli.sh
    (3)启动zookeeper
    全部会话(03、04、05):zkServer.sh start
    接着用zkServer.sh status查看每个zookeeper节点的状态

10.启动其他节点
(1)在02、03、04三台机子上分别把journalnode启动起来
hadoop-daemon.sh start journalnode
用jps检查下进程启起来了没
(3)在node02和node03上启动namenode
①在node02上格式化namenode

 hdfs namenode -format

②然后,启动node02上的namenode

hadoop-daemon.sh start namenode

在这里插入图片描述
③在node03上同步上一台数据

hdfs namenode -bootstrapStandby

再启动:hadoop-daemon.sh start namenode

11.在node03上格式化zkfc:

hadoop-daemon.sh start namenode

在node04上执行zkCli.sh打开zookeeper客户端看hadoop-ha是否打开
在这里插入图片描述
12. 在node02上启动hdfs集群:

start-dfs.sh

jps验证是否该启动的都启动起来了
node02的jps
在这里插入图片描述
node03的jps
在这里插入图片描述

node04的jps
在这里插入图片描述

node05的jps
在这里插入图片描述

13.如果有什么没启动启来的都可以去查看/opt/xxx/logs/里面对应节点的日志,根据它所报告的错误改正

  1. 关闭集群命令:stop-dfs.sh

关闭zookeeper命令:zkServer.sh stop

15.为MapReduce做准备(在node02上操作)

(1)把mapred-site.xml.template留个备份,并且改下名字

cp mapred-site.xml.template mapred-site.xml

在mapred-site.xml里添加如下property

<property>
         <name>mapreduce.framework.name</name>
            <value>yarn</value>
    </property>

(2)在yarn-site.xml里添加如下property

<property>
       <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
  </property>
<property>
  <name>yarn.resourcemanager.ha.enabled</name>
  <value>true</value>
 </property>
 <property>
   <name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
 </property>
<property>
  <name>yarn.resourcemanager.ha.rm-ids</name>
  <value>rm1,rm2</value>
 </property>
 <property>
 <name>yarn.resourcemanager.hostname.rm1</name>
  <value>node04</value>
 </property>
 <property>
  <name>yarn.resourcemanager.hostname.rm2</name>
  <value>node05</value>
 </property>
 <property>
  <name>yarn.resourcemanager.zk-address</name>
  <value>node03:2181,node04:2181,node05:2181</value>
 </property>

(3)把mapred-site.xml和yarn-site.xml 分发到node04、05、06

scp mapred-site.xml yarn-site.xml node04:`pwd`
scp mapred-site.xml yarn-site.xml node05:`pwd`
scp mapred-site.xml yarn-site.xml node06:`pwd`

(4)node05上免密钥登录node05:(同上)

在node05的.ssh目录下生成密钥

   ssh-keygen -t dsa -P '' -f ./id_dsa

并追加到自己authorized_keys

cat id_dsa.pub >> authorized_keys

ssh localhost验证看是否需要密码,别忘了exit
将node05 的公钥分发到node05

   scp id_dsa.pub node04:`pwd`/node06.pub

在node04的.ssh在这里插入代码片目录下,追加node05.pub

 cat node05.pub >> authorized_keys

在node03上ssh node04,看是否免密钥
(5).启动zookeeper,全部会话zkServer.sh start
在node02上启动hdfs,start-dfs.sh

在node02上启动yarn,start-yarn.sh
在node04、05上分别启动resourcemanager,

yarn-daemon.sh start resourcemanager

全部会话jps,看进程全不全
node02的jps在这里插入图片描述
node03的jps

在这里插入图片描述

node04的jps
在这里插入图片描述

node05的jps

在这里插入图片描述

  1. 在浏览器访问node04:8088,查看resourcemanager管理的内容
    在这里插入图片描述

17.到这里我们我hadoop也就基本搭建完了,接下来就是在Windows下搭建了下期再见

五、跑个高可用wordcount演示一下
1.按照前面node02跑法,先创建个输入输出文档这里分别取名为input和output(命令就不打了,在前面)
2.准备好的文档上传(我传的如下)
在这里插入图片描述

3.mapreduce目录下运行命令:

hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /date/input t/result

运行结果如下:
在这里插入图片描述
4.这就算跑完了,和一台机子跑的好像没啥区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奇奇怪怪888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值