集群布局:

澳门威斯尼斯全部网址 1

1)集群规划:
主机名          IP      安装的软件                  
   运营的经过
master    192.168.199.130  
jdk、hadoop                  
   NameNode、DFSZKFailoverController(zkfc)
slaver1    192.168.199.131  
 jdk、hadoop                      
NameNode、DFSZKFailoverController(zkfc)
slaver2    192.168.199.132  
 jdk、hadoop                     ResourceManager
slaver3    192.168.199.133  
 jdk、hadoop                     ResourceManager
slaver4    192.168.199.134  
 jdk、hadoop、zookeeper      
DataNode、NodeManager、JournalNode、QuorumPeerMain
slaver5    192.168.199.135   
jdk、hadoop、zookeeper      
DataNode、NodeManager、JournalNode、QuorumPeerMain
slaver6    192.168.199.136  
 jdk、hadoop、zookeeper      
DataNode、NodeManager、JournalNode、QuorumPeerMain
2)注意:hadoop-2.6.4又充实了YAEscortN HA:

style=”font-size: 18px;”>  apache提供的hadoop-2.6.4的安装包是在三十九位操作系统一编写译的,因为hadoop重视一些C++的当地库,所以如若在62个人的操作上设置hadoop-2.6.4就须求重新在64操作系统上海重机厂复编写翻译
(提出首先次安装用34位的连串,笔者将编写翻译好的61位的也上传到群分享里了,假使有野趣的能够和睦编写翻译一下)

3)说明:
   
a:在hadoop2.0中一般由七个NameNode组成,一个地处active状态,另一个远在standby状态。Active
NameNode对外提供劳动,而Standby NameNode则不对外提供服务,仅同步active
namenode的景况,以便能够在它败北时快速张开切换。
      hadoop2.0官方提供了三种HDFS
HA的化解方案,一种是NFS,另一种是QJM。这里大家应用简易的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据音讯,一条数据倘若成功写入多数JournalNode即认为写入成功。经常配置奇数个JournalNode
  
   这里还安插了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active
NameNode挂掉了,会自行切换Standby NameNode为standby状态
   
b:hadoop-2.2.0中仍旧存在三个标题,就是ResourceManager只有贰个,存在单点故障,hadoop-2.6.4化解了这一个难题,有四个ResourceManager,三个是Active,四个是Standby,状态由zookeeper进行和睦

准备Linux环境

Hadoop集群+Zookeeper完毕高可用集群

集群描述:

集群中有七个NameNode,五个ResourceManager。实现了NameNode的HA方案以及ResourceManager单点故障的化解。

1:hadoop分布式集群HA方式计划,七台机械跑集群:
  第一台机械:namenode zkfc
  第二台机械:namenode zkfc
  第三台机械:resourcemanager
  第四台机械:resourcemanager
  第五台机械:zookeeper journalnode
dataNode nodemanager
  第六台机械:zookeeper journalnode
dataNode nodemanager
  第七台机械:zookeeper journalnode
dataNode
nodemanager

修改主机名

配备的列表音讯

节点类型 IP hosts(主机名)
NameNode 192.168.56.106 master
NameNode 192.168.56.107 standby-master
DataNode,JournalNode 192.168.56.108 slave1
DataNode,JournalNode 192.168.56.109 slave2
DataNode,JournalNode 192.168.56.110 slave3

累计配备的5台的道具,master充当(active)剧中人物,standby-master充当(standby)剧中人物,当master出现单点故障的时候,standby-master就可以顶上去充当(active)剧中人物来有限扶助整个集群的周转。

Hadoop的HA介绍:

hadoop第22中学的NameNode有五个。每三个皆有同样的功能。三个是active状态的,三个是standby状态的。当集群运行时,只有active状态的NameNode是例行办事的,standby状态的NameNode是处于待命状态的,时刻同步active状态NameNode的数据。一旦active动静的NameNode不能够源办公室事,通过手工业或然机关怀换,standby状态的NameNode就足以变动为active状态的,就可以承接专业了。那正是高可信赖。

2:在此以前的博客已经搭建过Zookeeper集群了,,然后自身在原先的五个设想机的基本功方面又加了四台设想机,今年还要跑七台虚构机,计算机很讨厌,所以自身的计算机尽大概配置要高些,那一个Computer,8G内部存款和储蓄器,i5的微型Computer,设想机内部存款和储蓄器本身每台设想机先设置512M,然后使用Xshell连接以往,将图形化分界面关闭,ctrl+alt+f7,使用命令行形式;

$ vim
/etc/sysconfig/network

搭建Ha集群重视境况

环境名称 版本号
CentOS 7
Jdk jdk-8u131
Hadoop 2.6.5
zookeeper 3.4.10

把jdk、Hadoop、zookeeper解压到/use/local/目录下
编辑 /etc/profile文件分别步向jdk、Hadoop的碰着变量

vim /etc/profile

投入以下遇到变量:

JAVA_HOME=/usr/local/jdk1.8.0_131/
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME
export PATH
export CLASSPATH

export PATH=$PATH:/usr/local/hadoop-2.6.5/bin:/usr/local/hadoop-2.6.5/sbin

profile情状变量

编纂hadoop-2.6.5/etc/hadoop/hadoop-env.sh文件加入Java景况变量

Hadoop的Java景况变量

那是自个儿这次搭建用到的体系版本。

Linux境况策画:

澳门威斯尼斯全部网址 2

NETWORKING=yes

配备zookeeper集群

作者会在slave1、slave2、slave3那三台机器上添zookeeper集群,把JournalNode节点交给zookeeper做调解。
解压后跻身/zookeeper-3.4.10/conf/目录
拷贝 cp zoo_sample.cfg 改名成 zoo.cfg
拷贝 cp zoo_sample.cfg zoo.cfg

VMware Workstation 12 PRO上CentOS 7 Minimal版安装配备  http://www.linuxidc.com/Linux/2017-03/141646.htm

3:Hadoop布满式集群HA情势安插伊始筹划:

HOSTNAME=hadoop001

在zoo.cfg文件加多以下配置:
dataDir=/home/zookeeper/data
dataLogDir=/home/zookeeper/logs
clientPort=2181
server.1=slave1:2888:3888
server.2=slave2:2888:3888
server.3=slave3:2888:3888

互连网布局:使用桥接方式

  (1)首先,三台机器配置Zookeeper集群,此前早就布署过了,这里计划进度大约了;

 

配置myid:

本身这里有3台zk集群机器,每台机械都亟需在/home/zookeeper/data
目录下开创叁个myid的文本、并且要写上和煦相应的劳务id号,举例笔者在slave1这台机械对应的service.id是1
那么本人在myid就能够写上1,slave2的service.id是2 就能够写上2.. 就那样类推。

cd /home/zookeeper/data/
vim myid (写上服务的id号保存退出)

1.装置一定IP地址和破产防火墙

设想机中必须增加如下配置: (必须和宿主机在同一网段)

在vmware的【编辑】-->【虚拟网络编辑器】设置:将网络连接方式设置为“桥接”,并桥接到宿主机器的网卡(可以是有线或者无线网络)。

设置静态IP地址:

vi /etc/sysconfig/network-scripts/ifcfg-eno16777736  
("eno16777736"这部分名字在不同版本中可能不一样)

修改(增添)如下内容:

BOOTPROTO="static"#dhcp改为static   
ONBOOT="yes"#开机启用本配置  
IPADDR=192.168.1.181#静态IP  
GATEWAY=192.168.1.1   #默认网关  
NETMASK=255.255.255.0  #子网掩码  
DNS1=192.168.1.1#DNS 配置  

一体化示例:

cat /etc/sysconfig/network-scripts/ifcfg-eno16777736 
HWADDR="00:15:5D:07:F1:02"  
TYPE="Ethernet"  
BOOTPROTO="static" #dhcp改为static   
DEFROUTE="yes"  
PEERDNS="yes"  
PEERROUTES="yes"  
IPV4_FAILURE_FATAL="no"  
IPV6INIT="yes"  
IPV6_AUTOCONF="yes"  
IPV6_DEFROUTE="yes"  
IPV6_PEERDNS="yes"  
IPV6_PEERROUTES="yes"  
IPV6_FAILURE_FATAL="no"  
NAME="eth0"  
UUID="bb3a302d-dc46-461a-881e-d46cafd0eb71"  
ONBOOT="yes"  #开机启用本配置  
IPADDR=192.168.1.181    #静态IP  
GATEWAY=192.168.1.1     #默认网关  
NETMASK=255.255.255.0   #子网掩码  
DNS1=192.168.1.1        #DNS 配置  

修改每台主机的主机名:

vi /etc/sysconfig/network

累加如下内容:

HOSTNAME=master01   //master02,master03........

设置IP绑定:

vi  /etc/hosts
master01  192.168.1.181 
master02  192.168.1.182 
master03  192.168.1.186 
master04  192.168.1.187 
slave01   192.168.1.183 
slave02   192.168.1.184  
slave03   192.168.1.185

重启网卡:

service network restart 

centos7中mini安装的防火墙默感到firewalld:

systemctl stop firewalld
systemctl mask firewalld

设置iptables-services并关闭防火墙:

yum install iptables-services
service iptables stop
chkconfig iptables off   #关闭防火墙开机启动
service ip6tables stop
chkconfig ip6tables off

关闭selinux:

vi /etc/sysconfig/selinux
SELINUX=enforcing -> SELINUX=disabled
setenforce 0
getenforce

  (2)作者的各自是centos01(master节点),centos02(slaver1节点),centos03(slaver2节点)安排的是Zookeeper集群;

修改IP

编纂开机运营脚本(为了有助于运行,不用每一遍手动运行zk集群,若是认为麻烦能够忽略该步骤)

写了三个本子设置zookepper开机运行
在/etc/rc.d/init.d/目录下增加八个文件叫zookeeper

命令:touch zookeeper

写入以下配置,JAVA_HOME是你jdk的装置地点,ZOO_LOG_DIENVISION是zookeeper寄存日志的职位,ZOOKEEPE大切诺基_HOME是zookeeper的设置地点。

#!/bin/bash
#chkconfig: 2345 10 90
#description: service zookeeper
export   JAVA_HOME=/usr/local/jdk1.8.0_131
export   ZOO_LOG_DIR=/home/zookeeper/datalog
ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.10
su root  ${ZOOKEEPER_HOME}/bin/zkServer.sh "$1"

为新建的zookeeper文件增添可奉行权限

命令:chmod +x /etc/rc.d/init.d/zookeeper

加上zookeeper到开机运维

命令:chkconfig –add zookeeper

重启你的的zk集群
反省你的zookeeper集群确定保障没难题

命令:/usr/local/zookeeper-3.4.10/bin/zkServer.sh status

启动zookeeper集群

如阳节经陈设好zookeeper集群

2. 添加hadoop用户

增加用户组:

root登录条件下: groupadd hadoop

丰硕用户并分配用户组:

useradd -g hadoop hadoop

修改密码:

passwd hadoop

    centos04,centos05部署NameNode节点;

# vim
/etc/sysconfig/network-scripts/ifcfg-eth0

安装SSH免密登录

两台NameNode之间的和谐必要SSH登入来落到实处,所以两台NameNode须求求配置好
跻身master那台机器的的根目录

输入指令:ssh-keygen -t rsa

并发提示能够不理会
直接按三次回车键就行了,出现以下分界面表达生成私钥id_rsa和公钥id_rsa.pub

变动的公钥

把变化的公钥id发送到 slave1、slave2、slave3、机器上

输入指令: ssh-copy-id slave1

slave1会需求您输入slave1那台机械上的密码

渴求您输入slave1密码

密码输入正确后你会看到以下分界面,它说已经增添了密钥,它叫你品尝登录一下

叫你品尝登录一下slave1

增添另外的slave2、slave3、slave4、standby-master、master也是同等的操作。(一共5台机械,富含如今本机)

在master达成上述操作之后,再到standby-master
重复以上的操作。(记得八个NameNode都要开展操作,主要的事再说叁次)。

3. SSH开机免密码登陆:

安装ssh:

yum intsall openssh-server

第一是root用户免密码登陆:

root用户登入后在每台主机上面运用命令:

 ssh-keygen -t rsa
 cd /root/.ssh/ 

其间有三个公文:

id_rsa.pub    id_rsa

在master01主机上边:

mv id_rsa.pub authorized_keys

下一场把装有主机里面包车型客车id_rsa.pub内容总体保存到那几个authorized_keys后把authorized_keys复制到各类节点上。

Hadoop用户ssh免密码登入同root用户:

注意:这时id_rsa.pub id_rsa的目录为你hadoop用户下的.ssh目录

    centos06,centos07部署resourcemanager节点;

DEVICE=eth0

配置Hadoop集群

配置core-site.xml
在core-site.xml出席以下配置
master是总体服务的标识、以及布置了zookeeper的配置音信

<configuration>

 <property>
      <name>fs.defaultFS</name>
      <value>hdfs://master</value>
 </property>
 <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hadoopData/hdfs/temp</value>
 </property>

 <property>
      <name>io.file.buffer.size</name>
      <value>4096</value>
 </property>

<!--zookeeper配置-->
 <property>
      <name>ha.zookeeper.quorum</name>
      <value>slave1:2181,slave2:2181,slave3:2181</value>
 </property>

</configuration>

配置hdfs-site.xml

<configuration>

<property>
   <name>dfs.namenode.name.dir</name>
   <value>/home/hadoopData/dfs/name</value>
 </property>
 <property>
   <name>dfs.datanode.data.dir</name>
   <value>/home/hadoopData/dfs/data</value>
 </property>
 <property>
   <name>dfs.replication</name>
   <value>3</value>
 </property>
 <property>
   <name>dfs.webhdfs.enabled</name>
   <value>true</value>
 </property>
 <property>
   <name>dfs.permissions.superusergroup</name>
   <value>staff</value>
 </property>
 <property>
   <name>dfs.permissions.enabled</name>
   <value>false</value>
 </property>

<!-- NanmeNode主备切换核心配置 -->
 <property>
        <name>dfs.nameservices</name>
        <value>master</value>
    </property>
    <property>
      <name>dfs.ha.namenodes.master</name>
      <value>nn1,nn2</value>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.master.nn1</name>
      <value>master:9000</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.master.nn1</name>
        <value>master:50070</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.master.nn2</name>
        <value>standby-master:9000</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.master.nn2</name>
        <value>standby-master:50070</value>
    </property>



    <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://slave1:8485;slave2:8485;slave3:8485/master</value>
    </property>
    <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
    <property>
          <name>dfs.journalnode.edits.dir</name>
          <value>/home/hadoopData/journal</value>
    </property>


    <!-- 开启NameNode故障时自动切换 -->
    <property>
      <name>dfs.ha.automatic-failover.enabled</name>
      <value>true</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.master</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    <!--ssh免登陆 -->
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>

    <property>
      <name>dfs.replication</name>
      <value>2</value>
    </property>
    <property>
      <name>dfs.webhdfs.enabled</name>
      <value>true</value>
    </property>

</configuration>

注意事项:
自家那边一同拆分了3有的来注脚、以上的安顿的文书分别有备注表达
在dfs.nameservices标签中的value
和core-site.xml配置中的服务名要一致,因为自个儿起名称为master,所以作者这里也叫master。
dfs.namenode.shared.edits.dir标签中寄存的是您的zk集群的journalnode,前面记得加上你的劳动名。

把那2份配置文件分别拷贝到5台机械上。

4. 设置所需的软件

所用的软件条件安顿示范:

export JAVA_HOME=/usr/local/software/jdk1.8.0_66
export HADOOP_HOME=/usr/local/software/hadoop-2.7.0
export ZOOKEEPER_HOME=/usr/local/software/zookeeper-3.4.6/bin
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin

下一场使境况安顿生效:

source /etc/profile

    然后centos01(master节点),centos02(slaver1节点),centos03(slaver2节点)增加DataNode节点;

HWADDR=♦♦♦♦♦♦♦♦♦♦♦♦♦

安装fuser

在你的两台NameNode都急需安装fuser
跻身你的 .ssh目录(作者的目录是/root/.ssh)

设置命令: yum provides “*/fuser”
设置命令:yum -y install psmisc

安装fuser

一样其它一台standby-master同样的操作。

5. Hadoop HA实现

Hadoop HA配置文件: // 总共5个:

hadoop-env.sh 
core-site.xml 
hdfs-site.xml 
mapred-site.xml 
yarn-site.xml

hadoop-env.sh:

export JAVA_HOME=/usr/local/software/jdk1.8.0_66

core-site.xml:

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://cluster</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/usr/local/software/hadoop-2.7.0/tmp</value>
</property>
<property>
  <name>ha.zookeeper.quorum</name  <value>slave01:2181,slave02:2181,slave03:2181</value>
</property>

hdfs-site.xml

    <property>
            <name>dfs.nameservices</name>
            <value>cluster</value>
    </property>
    <property>
            <name>dfs.ha.namenodes.cluster</name>
            <value>nn1,nn2</value>
    </property>
    <property>
            <name>dfs.namenode.rpc-address.cluster.nn1</name>
            <value>master01:9000</value>
    </property>
    <property>
            <name>dfs.namenode.http-address.cluster.nn1</name>
            <value>master01:50070</value>
    </property>
    <property>
            <name>dfs.namenode.rpc-address.cluster.nn2</name>
            <value>master02:9000</value>
    </property>
    <property>
            <name>dfs.namenode.http-address.cluster.nn2</name>
            <value>master02:50070</value>
    </property>
    <property>
            <name>dfs.namenode.shared.edits.dir</name>
            <value>qjournal://slave01:8485;slave02:8485;slave03:8485/cluster</value>
    </property>
    <property>
            <name>dfs.journalnode.edits.dir</name>
            <value>/usr/local/software/hadoop-2.7.0/journal</value>
    </property>
    <property>
            <name>dfs.ha.automatic-failover.enabled</name>
            <value>true</value>
    </property>
    <property>
            <name>dfs.client.failover.proxy.provider.cluster</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.connect-timeout</name>
            <value>30000</value>
    </property>
    <property>
            <name>dfs.ha.fencing.ssh.private-key-files</name>
            <value>/home/hadoop/.ssh/id_rsa</value>
    </property>
    <property>
            <name>dfs.replication</name>
            <value>2</value>
    </property>

mapred-site.xml

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

yarn-site.xml

    <property>
           <name>yarn.resourcemanager.ha.enabled</name>
            <value>true</value>
    </property>
    <property>
            <name>yarn.resourcemanager.cluster-id</name>
            <value>rm-cluster</value>
    </property>
    <property>
            <name>yarn.resourcemanager.ha.rm-ids</name>
            <value>rm1,rm2</value>
    </property>
    <property>
            <name>yarn.resourcemanager.hostname.rm1</name>
            <value>master01</value>
    </property>
    <property>
            <name>yarn.resourcemanager.hostname.rm2</name>
            <value>master02</value>
    </property>
    <property>
            <name>yarn.resourcemanager.recovery.enabled</name>
            <value>true</value>
    </property>
    <property>
            <name>yarn.resourcemanager.store.class</name>
            <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
     <property>
            <name>yarn.resourcemanager.zk-address</name>
            <value>slave01:2181,slave02:2181,slave03:2181</value>
    </property>
    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>

4:首先将新加的四台设想机的主机名称修改和ip对应提到修改一下:

TYPE=Ethernet

启动Hadoop集群

6. Zookeeper集群配置 // slave01 slave02 slave0

vi /usr/local/software/zookeeper-3.4.6/conf/zoo.cfg

澳门威斯尼斯全部网址,修改dataDir=/usr/local/zk/data
在文书最终新增:

server.1=slave01:2888:3888
server.2=slave02:2888:3888
server.3=slave03:2888:3888

创办理文件件夹

mkdir /usr/local/software/zookeeper-3.4.6/zk/data

在data目录下,创造文件myid,值为1;相应的在slave02和slave03下面成立文件myid,值为2、3

[root@localhost hadoop]# vim
/etc/sysconfig/network

UUID=♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦

在master上的操作

1.启动journalnode

命令:hadoop-daemon.sh start journalnode

因为自己在master中配了slaves那么些文件,把slave1、slave2、slave3都加了进去所以能够运维它们,查看DataNode节点上的journalnode是不是运行成功

翻开journalnode是还是不是运转成功

出现journalnode表达运转成功了。

2.格式化zookepper

命令: hdfs zkfc -formatZK

操作甘休出现以下内容:

格式化zookepper

3.格式化hdfs

命令: hadoop namenode -format

操作结束出现以下内容:

格式化hdfs

4.启动master的NameNode

命令: hadoop-daemon.sh start namenode

运转完成后切换成standby-master操作

7.从头起步

启动zookeeper

   bin/zkServer.sh start
   bin/zkServer.sh status   查看状态(至少两个zookeeper实例开启后才可以查看状态)

第三次开发银行顺序 (zookeeper集群先运行)
启动journalnode:

hadoop-daemon.sh start journalnode //slave01,slave02,slave03

格式化NameNode:

hdfs namenode -format

拷贝格式化后的namenode状态:

scp -r tmp/   hadoop@master02:/usr/local/hadoop-2.6.0/  //从master01拷贝tmp到master02 

格式化zookeeper:

hdfs zkfc -formatZK

启动HDFS:

sbin/start-dfs.sh

启动Yarn:

sbin/start-yarn.sh   //master01

起步master02主机上的ResourceManager:

yarn-daemon.sh start resourcemanager//master02

sbin/start-dfs.sh
sbin/start-yarn.sh   //master01
yarn-daemon.sh start resourcemanager//master02

澳门威斯尼斯全部网址 3

ONBOOT=yes

在standby-master操作

在master的NameNode运维之后,大家开始展览对NameNode的数码同步
在standby-master输入以下命令

命令:hdfs namenode -bootstrapStandby

并发以下音信:

NameNode的数目同步

8. 起动后效果:

启动后master02是active状态

澳门威斯尼斯全部网址 4

master01是standby状态。

澳门威斯尼斯全部网址 5

当kill掉master02进程后,master01会自动造成active状态,从而保险集群的高可用性。

澳门威斯尼斯全部网址 6

威尼斯人棋牌官网,同时master03上面的ResourceManager为active状态:

澳门威斯尼斯全部网址 7

当浏览master04上面ResourceManager时展现新闻为:

“This is standby RM,Redirecting to the current active RM:http://master03:8088/”

澳门威斯尼斯全部网址 8

澳门威斯尼斯全部网址 9

NM_CONTROLLED=yes

启动Hadoop集群

再次回到master运维集群输入以下命令

命令: start-dfs.sh

在游历器输入 和

并发以下情形表达已经成功了。

启动Hadoop集群

9. 为了便利集群众管理理,编写脚本决定:

启航脚本:

for i in slave01 slave02 slave03
do
ssh $i "/usr/local/software/zookeeper-3.4.6/bin/zkServer.sh start"
done
start-dfs.sh
ssh master03 "/usr/local/software/hadoop-2.7.0/sbin/start-yarn.sh"
ssh master04 "/usr/local/software/hadoop-2.7.0/sbin/yarn-daemon.sh start resourcemanager"

运维时日志:

澳门威斯尼斯全部网址 10

威尼斯人娱乐场官网,翻开集群是不是平常运营的脚本:

for i in master01 master02 master03 master04 slave01 slave02 slave03
do
ssh $i "hostname;source /etc/profile;jps"
done

澳门威斯尼斯全部网址 11

甘休脚本:
[hadoop@master01 ~]$ cat stop

ssh master03 "/usr/local/software/hadoop-2.7.0/sbin/stop-yarn.sh"
stop-dfs.sh
for i in slave01 slave02 slave03
do
ssh $i "/usr/local/software/zookeeper-3.4.6/bin/zkServer.sh stop"
done

澳门威斯尼斯全部网址 12

澳门威斯尼斯全部网址 13

BOOTPROTO=static

测量试验HA集群可用性

以上是master是active状态,笔者今日把它倒闭,看看standby-master是还是不是会自行进级为active状态。
关闭master:

关闭master

观察standby-master:

观察standby-master

能够观察standby-master已经自行进级为active状态说美素佳儿(Aptamil)(Dumex)切HA集群搭建完毕了。

10. 安装进度中某个别的的操作:

shell 操作:主机间文件传输示例

for i in master02 slave01 slave02 slave03
do
 scp -rq software hadoop@$i:/usr/local/software/
done

for i in master02 slave01 slave02 slave03
do
ssh $i “source /etc/profile”
done

澳门威斯尼斯全部网址 14

IPADDR=172.17.30.111

11. 注意事项:

1. hadoop用户生成的秘钥在/home/hadoop/.ssh目录中,其他用户以此类推。

2.问题:zookeeper在linux服务器上,通过java代码来控制启动与停止。
发现能控制停止,不能控制启动。

解决:

JAVA_HOME=/usr/local/java/jdk1.7.0_76
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH

3:选择shell脚本运营zookeeper,首先新建文件start.sh
写入内容(rh1 rh2 rh3 分别是主机名。此处须求ssh):

#!/bin/sh
echo “start zkServer…”
for i in rh1 rh2 rh3
do
ssh $i “/usr/local/zookeeper3.4/bin/zkServer.sh start”
done

写好后保存,加上实践权限:chmod u+x start.sh
运维:./start.sh看见运行成功了,有出口。不过输入jps查看的时候,会意识并未有QuorumPeerMain
进度。表明未有运转成功。

原因:

第一知道交互式shell和非交互式shell、登入shell和非登入shell是有分其他
在报到shell里,情况音讯供给读取/etc/profile和~ /.bash_profile,
~/.bash_login, and
~/.profile按顺序伊始的多少个,并执行在那之中的一声令下。除非被
—noprofile选项禁止了;在非登入shell里,情况音信只读取
/etc/bash.bashrc和~/.bashrc
手工业施行是属于登录shell,脚本推行多少非登入shell,而小编的Linux情形安顿中只对/etc/profile举行了jdk1.6等条件的配
置,所以剧本实践/usr/local/zookeeper3.4/bin/zkServer.sh start
运营zookeeper失利了

缓慢解决格局:

把profile的安插消息echo到.bashrc中 echo ‘source /etc/profile’
>~/.bashrc
在/zookeeper/bin/zkEnv.sh的中初露地方增加 export
JAVA_HOME=/usr/local/jdk1.6(仿佛hadoop中对hadoop-env.sh的安排同样)
应用shell脚本运行zookeeper,首先新建文件start.sh
写入内容(rh1 rh2 rh3 分别是主机名。此处需求ssh):#!/bin/sh
echo “start zkServer就足以了。

小结的消除措施(上边3个艺术任选1):

1、脚本代码中丰裕“source /etc/profile;” 改为:ssh crxy$i “source
/etc/profile;/usr/local/zookeeper/bin/zkServer.sh start”

2、把profile的配备音讯echo到.bashrc中 echo ‘source /etc/profile’
>~/.bashrc

3、在/zookeeper/bin/zkEnv.sh的中伊始地点增多 export
JAVA_HOME=/usr/local/jdk1.7.0_45(似乎hadoop中对hadoop-env.sh的配备同样)

本文恒久更新链接地址:http://www.linuxidc.com/Linux/2017-03/141650.htm

澳门威斯尼斯全部网址 15

5:结合早先时代学习和未来的搭建Hadoop分布式集群HA情势陈设的预备:

NETMASK=255.255.254.0

  (1)修改Linux主机名
  (2)修改IP
  (3)修改主机名和IP的映射关系(七台虚构机都遵照上面包车型大巴应和关系写):
  
   ######注意######一经你们公司是租用的服务器或是使用的云主机(如Nokia用主机、阿里云主机等);
  
   /etc/hosts里面要安插的是内网IP地址和主机名的炫丽关系 ;

GATEWAY=172.17.30.1

澳门威斯尼斯全部网址 16

DNS1=223.5.5.5

澳门威斯尼斯全部网址 17
  (4)关闭防火墙(七台设想机全体关闭防火墙)
[root@localhost hadoop]# service iptables stop 关闭防火墙
[root@localhost hadoop]# service iptables status 查看防火墙是或不是关闭

DNS2=223.6.6.6

澳门威斯尼斯全部网址 18
  (5)ssh免登入(免密登四只要知道其进度,这里不再贴图进程,进度相当多,此前也贴过详尽的,):

 

     七台虚构机配置好了免秘钥登陆之后,然后直接免秘钥登入第一遍还要输入yes很烦躁,然后百度时而,上面是输入yes的荒唐和解决办法:

闭馆防火墙

The authenticity of host 'slaver6 (192.168.3.135)' can't be established.
RSA key fingerprint is cc:4e:23:01:ca:97:52:21:85:78:bc:29:ca:b3:12:52.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slaver6' (RSA) to the list of known hosts.
Last login: Thu Oct 12 22:34:41 2017 from master

翻看防火墙状态

       化解办法(蛮好使的):

        
service iptables status

修改/etc/ssh/ssh_config文件的配置,以后则不会再出现此问题

最后面添加:

StrictHostKeyChecking no

UserKnownHostsFile /dev/null

        
关闭防火墙

    
验证一下,达成了免秘钥登入,(必要注意的是自身直接用的root权限,所避防秘钥登入必须选取root权限才得以):

        
service iptables stop

澳门威斯尼斯全部网址 19

        
查看防火墙开机运转状态

  (6)安装JDK,配置景况变量等(由于自家的机械都改成了命令行方式,所以采取命令将jdk传到新装的四台设想机上边),记得上传之后解压缩操作哈,笔者都忘记了,然后直接表明,郁闷咋不得法吧,闹笑话了呢:

        
chkconfig iptables –list

 澳门威斯尼斯全部网址 20

        
关闭防火墙开机运行

    然后布置一下jdk意况,由于自个儿的jdk贮存路线都一模二样,所以一贯复制以前的文本就可以(vim
/etc/profile):

        
chkconfig iptables off

澳门威斯尼斯全部网址 21

 

    修改的如下所示([root@slaver3
hadoop]#  source
/etc/profile),修改/etc/profile文件,让它即时生效 source /etc/profile:

修改主机名和IP映射关系

澳门威斯尼斯全部网址 22

$ vim
/etc/hosts

     修改好现在验证一下(七台虚构机全体验证jdk是或不是安装配备成功):

172.17.30.111  
hadoop001

澳门威斯尼斯全部网址 23

172.17.30.112  
hadoop002

6:学习Hadoop布满式集群HA方式安排:

172.17.30.113  
hadoop003

集群规划:
    主机名          IP              
   安装的软件                        运维的历程
   master     192.168.3.129   
  jdk、hadoop                       
NameNode、DFSZKFailoverController(zkfc)
   slaver1    192.168.3.130     
jdk、hadoop                       
NameNode、DFSZKFailoverController(zkfc)
   slaver2    192.168.3.131     
jdk、hadoop                        ResourceManager
   slaver3    192.168.3.132     
jdk、hadoop                        ResourceManager
   slaver4    192.168.3.133     
jdk、hadoop、zookeeper        
DataNode、NodeManager、JournalNode、QuorumPeerMain
   slaver5    192.168.3.134     
jdk、hadoop、zookeeper        
DataNode、NodeManager、JournalNode、QuorumPeerMain
   slaver6    192.168.3.135     
jdk、hadoop、zookeeper        
DataNode、NodeManager、JournalNode、QuorumPeerMain

说明:
   
(1)在hadoop2.0中常见由多个NameNode组成,多个处于active状态,另一个处于standby状态。Active
NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active
namenode的意况,以便能够在它失利时急迅开始展览切换。
    (2)hadoop2.0法定提供了三种HDFS
HA的消除方案,一种是NFS,另一种是QJM。这里大家使用轻便的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据音信,一条数据倘诺成功写入相当多JournalNode即以为写入成功。常常配置奇数个JournalNode,这里还安排了二个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active
NameNode挂掉了,会自行切换Standby NameNode为standby状态
   
(3)hadoop-2.2.0中还是存在一个主题素材,就是ResourceManager独有三个,存在单点故障,hadoop-2.4.1化解了这一个标题,有多少个ResourceManager,贰个是Active,三个是Standby,状态由zookeeper进行协调

172.17.30.114  
hadoop004

 7:安装配备zooekeeper集群(在master,slaver1,slaver2上),在此之前写过,这里写下进程,具体操作不再贴:

172.17.30.115  
hadoop005

style=”font-size: 18px;”>(1)解压
            tar -zxvf
zookeeper-3.4.5.tar.gz
(2)修改配置
            cd
/home/hadoop/zookeeper-3.4.5/conf/
            cp  zoo_sample.cfg 
zoo.cfg
            vim zoo.cfg
            修改:dataDir= style=”font-size: 18px;”>/home/hadoop/zookeeper-3.4.5/tmp
            在最终增添:
            server.1=master:2888:3888
          
 server.2=slaver1:2888:3888
          
 server.3=slaver2:2888:3888
            保存退出
            然后成立二个tmp文件夹
            mkdir style=”font-size: 18px;”> style=”font-size: 18px;”>/home/hadoop/zookeeper-3.4.5/tmp
            再成立一个空文件
            touch style=”font-size: 18px;”> style=”font-size: 18px;”>/home/hadoop/zookeeper-3.4.5/tmp/myid
            最后向该文件写入ID
            echo 1 > style=”font-size: 18px;”> style=”font-size: 18px;”>/home/hadoop/zookeeper-3.4.5/tmp/myid
style=”font-size: 18px;”>(3)将配备好的zookeeper拷贝到任何节点(首先分别在slaver1、 style=”font-size: 18px;”>slaver2根目录下的/home/hadoop)
            scp -r style=”font-size: 18px;”> style=”font-size: 18px;”>/home/hadoop/zookeeper-3.4.5/ style=”font-size: 18px;”>slaver1: style=”font-size: 18px;”>/home/hadoop/
            scp -r style=”font-size: 18px;”> style=”font-size: 18px;”>/home/hadoop/zookeeper-3.4.5/ style=”font-size: 18px;”>slaver2: style=”font-size: 18px;”>/home/hadoop/
            
            注意:修改slaver1、 style=”font-size: 18px;”>slaver2对应 style=”font-size: 18px;”> style=”font-size: 18px;”>/home/hadoop/zookeeper-3.4.5/tmp/myid内容
            weekend06:
                echo 2 > style=”font-size: 18px;”> style=”font-size: 18px;”>/home/hadoop/zookeeper-3.4.5/tmp/myid
            weekend07:
                echo 3 > style=”font-size: 18px;”> style=”font-size: 18px;”>/home/hadoop/zookeeper-3.4.5/tmp/myid

172.17.30.116  
hadoop006

8:安装配置hadoop集群(在slaver4上操作),首先将Hadoop的安装包hadoop-2.4.1.tar.gz上传到centos04上边,并且解压缩:

172.17.30.117  
hadoop007

[root@localhost hadoop]# tar -zxvf
hadoop-2.4.1.tar.gz

 

澳门威斯尼斯全部网址 24

重启机器

布署HDFS(hadoop2.0具有的安插文件都在hadoop-2.4.1/etc/hadoop目录下),#将hadoop增加到景况变量中,七台设想机都安插都布署一下hadoop的情状变量,这里在后加的四台虚构机配置一下hadoop的景况变量,可是能够往天slaver3(centos04将hadoop配置好,间接复制到剩下的三台虚构机上面,那样效用最高):

#
reboot

澳门威斯尼斯全部网址 25

 

修改的如下所示(贴下代码,好复制粘贴):

安装JDK

澳门威斯尼斯全部网址 26

解压jdk

export JAVA_HOME=/home/hadoop/jdk1.7.0_65

export HADOOP_HOME=/home/hadoop/hadoop-2.4.1

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# tar
-zxvf jdk-7u79-linux-x64.tar.gz -C /opt/modules/

率先个布局文件:修改hadoo-env.sh(首先切换来cd
/home/hadoop/hadoop-2.4.1/etc/hadoop/):

 

澳门威斯尼斯全部网址 27

增多情况变量

修改内容如下所示(即布署jdk的门路):

# vim
/etc/profile

 澳门威斯尼斯全部网址 28

##JAVA

其次个布局文件:修改core-site.xml(修改的原委如下,方便复制)

JAVA_HOME=/opt/modules/jdk1.7.0_79

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

    <!-- 指定zookeeper地址 -->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>master:2181,slaver1:2181,slaver2:2181</value>
    </property>
</configuration>

JRE_HOME=/opt/modules/jdk1.7.0_79/jre

修改的开始和结果如下,方便复制:

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

澳门威斯尼斯全部网址 29

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

其八个布局文件:修改hdfs-site.xml(修改的源委如下,方便复制)

export
JAVA_HOME JRE_HOME PATH CLASSPATH

<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>slaver3:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>slaver3:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>slaver4:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>slaver4:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slaver1:8485;slaver2:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/app/hadoop-2.4.1/journaldata</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</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>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

 

操作内容如(内容太多,分开截屏了)vim
hdfs-site.xml:

刷新配置

澳门威斯尼斯全部网址 30

# source
/etc/profile

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注