hadoop2.7.3 HA高可用集群安装

集群规划

主机名 ip 安装的软件 进程
hadoop01 192.168.1.101 jdk、hadoop NN、DFSZKFailoverController
hadoop02 192.168.1.102 jdk、hadoop NN、DFSZKFailoverController
hadoop03 192.168.1.103 jdk、hadoop RM
hadoop04 192.168.1.104 jdk、hadoop、zookeeper DN、NM、journalnode
hadoop05 192.168.1.105 jdk、hadoop、zookeeper DN、NM、journalnode
hadoop06 192.168.1.106 jdk、hadoop、zookeeper DN、NM、journalnode

六台主机

主机名: 
hadoop0一、hadoop0二、hadoop0三、hadoop0四、hadoop0五、hadoop06 
若是不会请参考:http://blog.csdn.net/uq_jin/article/details/51355124java

用户名:Hadoop 
密码:12345678node

设置主机名映射(root用户)

将本机的主机名和IP创建映射关系linux

vi /etc/hosts11

加入以下文件:shell

192.168.2.101 hadoop01
192.168.2.102 hadoop02
192.168.2.103 hadoop03
192.168.2.104 hadoop04
192.168.2.105 hadoop05
192.168.2.106 hadoop06123456123456

这里写图片描述

拷贝/etc/hosts到其它主机apache

scp /etc/hosts hadoop02:/etc/scp /etc/hosts hadoop03:/etc/scp /etc/hosts hadoop04:/etc/scp /etc/hosts hadoop05:/etc/scp /etc/hosts hadoop06:/etc/1234512345

开放经常使用端口(root用户)

#关闭防火墙sudo systemctl stop firewalld.service#关闭开机启动sudo systemctl disable firewalld.service12341234

建立专有的用户(root用户)

通常是建专有的hadoop用户,不在root用户上面搭建vim

建立组和用户

这里每台虚拟主机都应该有hadoop用户api

#先建立组cloudgroupadd cloud#建立用户并加入组clouduseradd -g cloud hadoop#修改用户hadoop的密码passwd hadoop123456123456

将hadoop用户加到sodu列表

一、查看/etc/sudoers的权限浏览器

ls -l /etc/sudoers11

这里写图片描述

能够看的是只读权限,若是咱们要修改就必须先改变该文件的权限服务器

二、修改权限微信

chmod 777 /etc/sudoers11

这里写图片描述

三、将hadoop添加root权限

vim /etc/sudoers11

这里写图片描述

在root下加入下面hadoop用户

四、还原权限

chmod 440 /etc/sudoers11

拷贝/etc/sudoers到其它主机

scp /etc/sudoers hadoop02:/etc/scp /etc/sudoers hadoop03:/etc/scp /etc/sudoers hadoop04:/etc/scp /etc/sudoers hadoop05:/etc/scp /etc/sudoers hadoop06:/etc/1234512345

配置免密码登陆(hadoop用户)

切换hadoop用户

su hadoop11

进入到当前用户的根目录

cd ~ 11

查看全部文件

ls –la11

进入.ssh目录

cd .ssh11

生产公钥和私钥(四个回车)

ssh-keygen -t rsa11

执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

这里写图片描述

将公钥拷贝到要免登录的机器上

ssh-copy-id 192.168.2.101ssh-copy-id 192.168.2.102ssh-copy-id 192.168.2.103ssh-copy-id 192.168.2.104ssh-copy-id 192.168.2.105ssh-copy-id 192.168.2.106123456123456

这时会在192.168.2.102主机的.ssh/下产生一个名为authorized_keys的文件,这时经过 ssh 192.168.2.102时能够直接免登录进入主机 
以下:

这里写图片描述

同理能够给其余机器也设置免密码登陆。

准备软件

在/home/hadoop/下建立cloud文件夹,用来安装相关软件,同时所用安装包放在cloud下的soft-install文件夹下,如:

cd /home/hadoopmkdir cloudmkdir soft-install123123

在soft-install里上传咱们须要的软件:

这里写图片描述

上传咱们所须要的软件到这个目录

安装jdk

解压

tar -zxvf jdk-8u91-linux-x64.tar.gz -C /home/hadoop/cloud/11

配置环境变量

# 修改配置文件sudo vi /etc/profile# 在最后下添加export JAVA_HOME=/home/hadoop/cloud/jdk1.8.0_91export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar# 刷新配置文件source /etc/profile1234567891012345678910

将jdk和环境变量分别拷贝到其余主机上

能够直接将cloud文件夹复制过去

scp -r cloud/ hadoop02:/home/hadoop/
scp -r cloud/ hadoop03:/home/hadoop/
scp -r cloud/ hadoop04:/home/hadoop/
scp -r cloud/ hadoop05:/home/hadoop/
scp -r cloud/ hadoop06:/home/hadoop/1234512345

将环境变量拷贝到其余主机下

sudo scp /etc/profile hadoop02:/etc/sudo scp /etc/profile hadoop03:/etc/sudo scp /etc/profile hadoop04:/etc/sudo scp /etc/profile hadoop05:/etc/sudo scp /etc/profile hadoop06:/etc/1234512345

刷新环境变量

source /etc/profile11

安装zookeeper

若是不懂Zookeeper请参考:https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/

下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/

安装

前面咱们已经安装的jdk,如今咱们在hadoop0四、hadoop0五、hadoop06上安装Zookeeper

一、解压

tar -zxvf zookeeper-3.4.8.tar.gz -C /home/hadoop/cloud/11

二、修改Zookeeper的默认配置 conf/zoo_sample.cfg

mv zoo_sample.cfg zoo.cfgvi zoo.cfg1212

配置以下:

#修改dataDir指向咱们数据dataDir=/home/hadoop/cloud/zookeeper-3.4.8/data#并在最后添加server.1=hadoop04:2888:3888server.2=hadoop05:2888:3888server.3=hadoop06:2888:3888123456123456

三、在/home/hadoop/cloud/zookeeper-3.4.8/目录下建立data文件夹

mkdir data11

四、在data文件夹下建立myid文件指明本机id

vim myid11

id 分别对应为hadoop04为1,hadoop05为2,hadoop06为3 后面咱们再统一拷贝

五、复制zookeeper-3.4.8到10五、106机器上并修改相应的myid

scp -r zookeeper-3.4.8/ hadoop04:/home/hadoop/cloud/
scp -r zookeeper-3.4.8/ hadoop05:/home/hadoop/cloud/
scp -r zookeeper-3.4.8/ hadoop06:/home/hadoop/cloud/123123

启动Zookeeper

分别在hadoop0四、hadoop0五、hadoop06上启动Zookeeper

#执行/home/hadoop/cloud/zookeeper-3.4.8/bin目录下的脚本启动./zkServer.sh start1212

查看zookeeper的状态

./zkServer.sh status11

在bin/目录下运行,运行结果以下说明成功(此时至少运行2台)

这里写图片描述

其实咱们能够找到leader 而后stop,会发现Zookeeper会当即切换Leader

安装hadoop

安装(如今hadoop01安装,而后复制其余机器)

解压

tar -zxvf hadoop-2.7.2.tar.gz -C /home/hadoop/cloud/11

配置环境变量

# 修改配置文件sudo vi /etc/profile# 在最后下添加export HADOOP_HOME=/home/hadoop/cloud/hadoop-2.7.2export PATH=$PATH:$HADOOP_HOME/bin# 刷新配置文件source /etc/profile123456789123456789

测试

which hadoop11

这里写图片描述

修改配置文件(6个)

hadoop-env.sh

# The java implementation to use.export JAVA_HOME=/home/hadoop/cloud/jdk1.8.0_911212

core-site.xml

<configuration>

    <!-- 指定hadoop运行时产生文件的存储路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/cloud/hadoop-2.7.2/tmp</value>
    </property>

    <!-- 指定hdfs的nameservice为ns1 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://ns1</value>
    </property>

    <!-- 指定zookeeper地址,多个用,分割 -->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>hadoop04:2181,hadoop05:2181,hadoop06:2181</value>
    </property></configuration>123456789101112131415161718192021123456789101112131415161718192021

hdfs-site.xml

<configuration>
    <!-- dfs.nameservices 命名空间的逻辑名称,多个用,分割 -->
    <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>hadoop01:8020</value>
    </property>

    <!-- 指定nn1的HTTP通讯地址 -->
    <property>
      <name>dfs.namenode.http-address.ns1.nn1</name>
      <value>hadoop01:50070</value>
    </property>

    <!-- 指定nn2的RPC通讯地址 -->
    <property>
      <name>dfs.namenode.rpc-address.ns1.nn2</name>
      <value>hadoop02:8020</value>
    </property>

    <!-- 指定nn2的HTTP通讯地址 -->
    <property>
      <name>dfs.namenode.http-address.ns1.nn2</name>
      <value>hadoop02:50070</value>
    </property>

    <!-- 指定namenode的元数据存放的Journal Node的地址,必须基数,至少三个 -->
    <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://hadoop04:8485;hadoop05:8485;hadoop06:8485/ns1</value>
    </property>

    <!--这是JournalNode进程保持逻辑状态的路径。这是在linux服务器文件的绝对路径-->
    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/home/hadoop/cloud/hadoop-2.7.2/journal/</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>/home/hadoop/.ssh/id_rsa</value>
    </property>

    <!-- 配置sshfence隔离机制超时时间30秒 -->
    <property>
       <name>dfs.ha.fencing.ssh.connect-timeout</name>
       <value>30000</value>
    </property></configuration>1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818212345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

mapred-site.xml.template 
须要重命名: mv mapred-site.xml.template mapred-site.xml

<configuration>
    <!-- 通知框架MR使用YARN -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property></configuration>1234567812345678

yarn-site.xml

<configuration>
    <!-- 指定YARN的老大(RM)的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop03</value>
    </property>

    <!-- reducer取数据的方式是mapreduce_shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property></configuration>1234567891011121312345678910111213

slaves

hadoop04
hadoop05
hadoop06123123

并在 hadoop-2.7.2文件下 建立tmp文件:

mkdir tmp11

将配置好的文件拷贝到其余主机

将hadoop-2.5.2拷贝到其余主机下

scp -r hadoop-2.7.2 hadoop02:/home/hadoop/cloud/
scp -r hadoop-2.7.2 hadoop03:/home/hadoop/cloud/
scp -r hadoop-2.7.2 hadoop04:/home/hadoop/cloud/
scp -r hadoop-2.7.2 hadoop05:/home/hadoop/cloud/
scp -r hadoop-2.7.2 hadoop06:/home/hadoop/cloud/1234512345

将环境变量拷贝到其余主机下

sudo scp /etc/profile hadoop02:/etc/sudo scp /etc/profile hadoop03:/etc/sudo scp /etc/profile hadoop04:/etc/sudo scp /etc/profile hadoop05:/etc/sudo scp /etc/profile hadoop06:/etc/1234512345

刷新环境变量

source /etc/profile11

启动

启动的时候注意启动顺序

一、启动zookeeper(在hadoop0四、0五、06 )

二、启动journal node(在hadoop0四、0五、06)

#hadoop-2.7.2/sbin下./sbin/hadoop-daemon.sh start journalnode1212

三、格式化HDFS(namenode)第一次要格式化(在hadoop0一、02中任意一台)(这里直接复制会有问题,最好手动输入)

./bin/hdfs namenode –format11

并把/home/hadoop/cloud/hadoop-2.7.2/tmp 文件夹拷贝到另外一台namenode的目录下

scp -r /home/hadoop/cloud/hadoop-2.7.2/tmp hadoop@hadoop02:/home/hadoop/cloud/hadoop-2.7.2/11

四、格式化 zk(在hadoop01便可)(这里直接复杂会有问题,最好手动输入)

./bin/hdfs zkfc –formatZK11

五、启动zkfc来监控NN状态(在hadoop0一、02)

./sbin/hadoop-daemon.sh start zkfc11

六、启动HDFS(namenode)(在hadoop01便可)

#hadoop-2.7.2/sbin下./sbin/start-dfs.sh1212

七、启动YARN(MR)(在hadoop03便可)

#hadoop-2.7.2/sbin下./sbin/start-yarn.sh1212

查看结果

若是上面的启动没有报错的的话,这时在咱们的虚拟主机上应该分别有本身的进程,如前文咱们规划的同样。 
查看本机的Java进程

jps11

这里写图片描述

这里写图片描述

经过浏览器测试以下:

http://192.168.2.101:50070/11

这里写图片描述

能够看出hadoop01的namenode是处于一种standby状态,那么hadoop02应该是处于active状态

查看YARN的状态

http://192.168.2.103:8088/11

这里写图片描述

相关文章
相关标签/搜索