Hadoop高可用集群搭建——7台虚拟机

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a247027417/article/details/83140979

第一步:虚拟机安装

使用CentOS6.9,最小化安装,安装完成之后,克隆出另外6台虚拟机。克隆完成之后需要对网卡进行修改,步骤如下:

1. 修改hostname   vi /etc/sysconfig/network  

2. 修改网卡配置,把eth0的信息删掉,eth1的name改成eth0。vi /etc/udev/rules.d/70-persistent-net.rules

3. 修改eth0的配置信息,vi /etc/sysconfig/network-scripts/ifcfg-eth0   将其uuid删除,更改MAC地址为rules中的原有的eth1的MAC信息,增加GATEWAY(网关),NETMASK(子网掩码),IPADDR(IP)

4.配置完成后,reboot即可。重启后,ping baidu.com 无问题,说明成功。

5.配置hosts

vi /etc/hosts  

6.配置普通用户

7.添加sudo权限,vi /etc/sudoers    

添加这一句,使用wq!强制保存退出。

7.创建压缩包存储文件夹和解压文件夹

第二步:软件安装

 

安装ssh,配置免密登陆

1. yum install openssh-clients -y 安装SSH服务

2. 在每台机器上生成ssh-keygen ,命令为 ssh-keygen -t rsa,然后一直回车,使用securetRT可以很方便的把命令行输入到各个terminal中

3.将各个生成的密钥复制到每个虚拟机中。ssh-copy-id hadoop1, ssh-copy-id hadoop2 .....

4.测试免密登陆是否完成

安装JDK

 1. 使用rz命令上传java的压缩包

2. tar -zvxf jdk.***.tar.gz -C apps,解压之后改名,方便以后更换java版本,mv jdkXXX jdk

3.vi /etc/profile : JAVA_HOME=/home/hadoop/apps/jdk   PATH=$JAVA_HOME/bin:$PATH

4.scp -r /home/hadoop/apps/jdk hadoop2:/home/hadoop/apps  

   scp -r /home/hadoop/apps/jdk hadoop3:/home/hadoop/apps    .....(传到所有的机器上)

5. scp /etc/profile hadoop2:/etc/profile     

    scp /etc/profile hadoop3:/etc/profile     ....(传到所有的机器上)

6.source /etc/profile  (发送到所有页面上,securetRT的功能)

7. 使用java -version检查java环境是否配置完成   

安装Zookeeper

官网下载的zookepper的压缩包,zookeeper下载

1.rz上传压缩包

2.tar -zvxf zookeeper3.4.12.tar.gz -C /home/hadoop/apps 解压缩,并且更名  mv zookeeper3.4.12 zookeeper

3.修改配置文件

     cd /home/hadoop/apps/zookeeper/conf

     cp zoo_sample.cfg zoo.cfg       

     vi zoo.cfg

    将其中的dataDir改成dataDir=/home/hadoop/app/zookeeper/tmp

    在配置文件的最后添加

            server.1=hadoop5:2888:3888
            server.2=hadoop6:2888:3888
            server.3=hadoop7:2888:3888 

   :wq,保存退出。

4. 建立新的文件夹tmp 

mkdir /home/hadoop/apps/zookeeper/tmp

 echo 1 > /home/hadoop/apps/zookeeper/tmp/myid  在tmp中myid中输入id。

5.   使用scp将zookeeper复制到hadoop6,hadoop7中

        scp -r /home/hadoop/apps/zookeeper/ hadoop6:/home/hadoop/apps/

        scp -r /home/hadoop/apps/zookeeper/ hadoop7:/home/hadoop/apps/

6. 在hadoop6中输入2作为其myid,在hadoop7中输入3作为其myid

       echo 2 > /home/hadoop/apps/zookeeper/tmp/myid

       echo 3 > /home/hadoop/apps/zookeeper/tmp/myid

安装Hadoop

1. 上传hadoop压缩包

2. 解压到/home/hadoop/apps下:

      tar -zxvf hadoop-2.9.1.tar.gz -C /home/hadoop/apps

3. 配置文件

       cd /home/hadoop/apps/hadoop/etc/hadoop

3.1  配置core-site.xml

<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://pawn/</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/apps/hdpdata/</value>
</property>

<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop5:2181,hadoop6:2181,hadoop7:2181</value>
</property>
</configuration>

3.2 配置hdfs-site.xml

<configuration>
<property>
<name>dfs.nameservices</name>
<value>pawn</value>
</property>
<property>
<name>dfs.ha.namenodes.pawn</name>
<value>pawn1,pawn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.pawn.pawn1</name>
<value>hadoop1:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.pawn.pawn1</name>
<value>hadoop1:50070</value>
</property>
<property>
<name>dfs.namenode.rpc-address.pawn.pawn2</name>
<value>hadoop2:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.pawn.pawn2</name>
<value>hadoop2:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop5:8485;hadoop6:8485;hadoop7:8485/pawn</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/journaldata</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.bi</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

3.3 配置mapred-site.xml

<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>	

3.4 配置yarn-site.xml

<configuration>
<!-- 开启RM高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>mini3</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>mini4</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>mini5:2181,mini6:2181,mini7:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

更改了上述配置后,进行检查,检查core-site中的defaultFS是否和hdfs-site中的一致,根据配置的tmp.dir文件在相应的位置新建文件夹。

4. 使用scp 将hadoop复制到各台机器上。

5. 配置/etc/profile

export HADOOP_HOME=/home/hadoop/apps/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

     source /etc/profile

启动HA

1.首先启动hadoop5,hadoop6,hadoop7上的zookeeper因为ZKFC的格式化和启动依赖zookeeper。

2.格式化hadoop1上的namenode

hdfs namenode -format

3.格式化完之后,启动hadoop1的namenode,并且格式化namenode(standby),hadoop2的namenode(standby)的初始化需要与hadoop1沟通。

hadoop-daemon.sh start namenode   (hadoop1上)
hdfs namenode -bootstrapStandby   (hadoop2上)

4.格式化ZKFC(在hadoop1上执行一次便可)

hdfs zkfc -formatZK

5.启动HDFS,在hadoop1上执行便可

start-dfs.sh

6.在hadoop3执行yarn

start-yarn.sh

验证完成

1. 检查各虚拟机的进程,jps

  

2.查看hadoop1:50070和Hadoop2:50070

到此,对于hadoop-HA的配置已经完成了

猜你喜欢

转载自blog.csdn.net/a247027417/article/details/83140979