hadoop(ha)&hbase(双master)安装

一.软件包准备

CentOS Linux release 7.2  Linux version 3.10.0-327.el7.x86_64

jdk-7u65-linux-x64.tar.gz

zookeeper-3.4.9

hadoop-2.7.3

hbase-1.3.0

 

集群机器配置

时间同步、设置时区

ssh免密登录

安装psmisc工具包

二.安装、配置

                            节点规划

hostname

ip

Hadoop

Hbase

zk

ecloud-test06.cn

192.168.200.80

NameNode

DataNode

JournalNode

DFSZKFailoveController

HMaster

HRegionServer

QuorumPeerMain

ecloud-test07.cn

192.168.200.81

NameNode

DataNode

JournalNode

DFSZKFailoveController

HMaster

HRegionServer

QuorumPeerMain

ecloud-test09.cn

192.168.200.83

DataNode

JournalNode

HRegionServer

ThriftServer

QuorumPeerMain

1. zk安装配置

解压zk到安装目录

 

修改安装目录中zoo.cfg文件

dataDir=/sdb/data1/zookeeper/data   #zk数据目录

dataLogDir=/home/zookeeper/logs#zk日志目录

clientPort=2181#zk端口

server.1=192.168.200.80:2888:3888# .x  本节点id,需要在dataDir下创

server.2=192.168.200.81:2888:3888# myid文件并填入对应id

server.3=192.168.200.83:2888:3888

2888 集群通信端口,3888集群选主端口

 

在各机器上开启服务 bin/zkServer.sh  start

在其中一台机器bin/zkClient.sh 连接服务测试

 

2. Hadoop 安装配置

解压hadoop到安装目录

添加/etc/profile.d/hdfs.sh

   HADOOP_HOME=/usr/local/hadoop-2.7.3
   PATH=$HADOOP_HOME/bin:$PATH
   export HADOOP_HOME
   export PATH
   HADOOP_CONF=/usr/local/hadoop-2.7.3/etc/hadoop
   export HADOOP_CONF
   export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native/
   export LD_LIBRARY_PATH=${HADOOP_HOME}/lib/native/:$LD_LIBRARY_PATH

修改hadoop-env.sh

export JAVA_HOME=/Application/xx/enterprise/jdk/jdk1.7.0_65
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true  -Duser.timezone=GMT+08"

修改hdfs-site.xml配置文件

<configuration>
<!--NameNode集群名称-->
   <property>
       <name>dfs.nameservices</name>
        <value>hcluster</value>
   </property>
        <!--NameNode地址集群标识(hcluster),最多两个-->
   <property>
       <name>dfs.ha.namenodes.hcluster</name>
        <value>nn0,nn1</value>
   </property>
        <!--HDFS文件系统数据存储位置,可以分别保存到不同硬盘,突破单硬盘性能瓶颈,多个位置以逗号隔开-->
   <property>
        <name>dfs.data.dir</name>
       <value>/sdb/data1/hadoop/hdfs/data</value>
   </property>
        <!--数据副本数量,根据HDFS台数设置,默认3份-->
   <property>
        <name>dfs.replication</name>
        <value>2</value>
   </property>
   <property>
       <name>dfs.namenode.rpc-address.hcluster.nn0</name>
       <value>ecloud-test06.cn:9000</value>
   </property>
        <!--RPC端口-->
   <property>
       <name>dfs.namenode.rpc-address.hcluster.nn1</name>
       <value>ecloud-test07.cn:9000</value>
   </property>
        <!--NameNode HTTP访问地址-->
   <property>
       <name>dfs.namenode.http-address.hcluster.nn0</name>
        <value>ecloud-test06.cn:50070</value>
   </property>
   <property>
       <name>dfs.namenode.http-address.hcluster.nn1</name>
       <value>ecloud-test07.cn:50070</value>
   </property>
        <!--NN存放元数据和日志位置-->
   <property>
       <name>dfs.namenode.name.dir</name>
        <value>/sdb/data1/hadoop/hdfs/name</value>
   </property>
        <!--同时把NameNode元数据和日志存放在JournalNode上(/home/hadoop/journal/hcluster)-->
   <property>
       <name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://ecloud-test06.cn:8485;ecloud-test07.cn:8485;ecloud-test09.cn:8485/hcluster</value>
   </property>
        <!--JournalNode上元数据和日志存放位置-->
   <property>
       <name>dfs.journalnode.edits.dir</name>
       <value>/sdb/data1/hadoop/hdfs/journal</value>
   </property>
        <!--开启NameNode失败自动切换-->
   <property>
       <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
   </property>
        <!--NameNode失败自动切换实现方式-->
   <property>
       <name>dfs.client.failover.proxy.provider.hcluster</name>
 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
   </property>
        <!--隔离机制方法,确保任何时间只有一个NameNode处于活动状态-->
   <property>
       <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
   </property>
        <!--使用sshfence隔离机制要SSH免密码认证-->
   <property>
       <name>dfs.ha.fencing.ssh.private-key-files</name>
       <value>/root/.ssh/id_rsa</value>
   </property>
   <property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>30000</value>
   </property>
</configuration>

修改core-site.xml配置文件

<configuration>
        <!--HDFS路径逻辑名称-->
   <property>
        <name>fs.defaultFS</name>
       <value>hdfs://hcluster</value>
   </property>
        <!--Hadoop存放临时文件位置-->
   <property>
        <name>hadoop.tmp.dir</name>
       <value>/sdb/data1/hadoop/hdfs/tmp</value>
   </property>
        <!--使用的zookeeper集群地址-->
   <property>
       <name>ha.zookeeper.quorum</name>
       <value>ecloud-test06.cn:2181,ecloud-test07.cn:2181,ecloud-test09.cn:2181</value>
   </property>
</configuration>

修改yarn-site.xml配置文件

<configuration>
<!-- Site specific YARN configuration properties -->
        <!--启用RM高可用-->
   <property>
       <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
   </property>
        <!--RM集群标识符-->
   <property>
       <name>yarn.resourcemanager.cluster-id</name>
        <value>rm-cluster</value>
   </property>
   <property>
        <!--指定两台RM主机名标识符-->
       <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
   </property>
        <!--RM故障自动切换-->
   <property>
        <name>yarn.resourcemanager.ha.automatic-failover.recover.enabled</name>
        <value>true</value>
   </property>
        <!--RM故障自动恢复
   <property>
       <name>yarn.resourcemanager.recovery.enabled</name> 
        <value>true</value> 
   </property> -->
        <!--RM主机1-->
   <property>
       <name>yarn.resourcemanager.hostname.rm1</name>
        <value>ecloud-test06.cn</value>
   </property>
        <!--RM主机2-->
   <property>
       <name>yarn.resourcemanager.hostname.rm2</name>
        <value>ecloud-test07.cn</value>
   </property>
       <!--RM状态信息存储方式,一种基于内存(MemStore),另一种基于ZK(ZKStore)-->
    <property>
       <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
        <!--使用ZK集群保存状态信息-->
    <property>
       <name>yarn.resourcemanager.zk-address</name>
       <value>ecloud-test06.cn:2181,ecloud-test07.cn:2181,ecloud-test09.cn:2181</value>
    </property>
        <!--向RM调度资源地址-->
    <property>
       <name>yarn.resourcemanager.scheduler.address.rm1</name>
        <value>ecloud-test06.cn:8030</value>
    </property>
    <property>
       <name>yarn.resourcemanager.scheduler.address.rm2</name>
       <value>ecloud-test07.cn:8030</value>
    </property>
        <!--NodeManager通过该地址交换信息-->
    <property>
        <name>yarn.resourcemanager.resource-tracker.address.rm1</name>
       <value>ecloud-test06.cn:8031</value>
    </property>
    <property>
       <name>yarn.resourcemanager.resource-tracker.address.rm2</name>
       <value>ecloud-test07.cn:8031</value>
    </property>
        <!--客户端通过该地址向RM提交对应用程序操作-->
    <property>
       <name>yarn.resourcemanager.address.rm1</name>
       <value>ecloud-test06.cn:8032</value>
    </property>
    <property>
       <name>yarn.resourcemanager.address.rm2</name>
       <value>ecloud-test07.cn:8032</value>
    </property>
        <!--管理员通过该地址向RM发送管理命令-->
    <property>
       <name>yarn.resourcemanager.admin.address.rm1</name>
       <value>ecloud-test06.cn:8033</value>
    </property>
    <property>
       <name>yarn.resourcemanager.admin.address.rm2</name>
        <value>ecloud-test07.cn:8033</value>
    </property>
        <!--RM HTTP访问地址,查看集群信息-->
    <property>
       <name>yarn.resourcemanager.webapp.address.rm1</name>
       <value>ecloud-test06.cn:8088</value>
    </property>
    <property>
       <name>yarn.resourcemanager.webapp.address.rm2</name>
       <value>ecloud-test07.cn:8088</value>
    </property>
</configuration>

修改mapred-site.xml配置文件

<configuration>
        <!--指定MR框架为YARN-->
   <property>
       <name>mapreduce.framework.name</name>
        <value>yarn</value>
   </property>
        <!-- 配置 MapReduce JobHistory Server地址 ,默认端口10020 -->
   <property>
        <name>mapreduce.jobhistory.address</name>
       <value>0.0.0.0:10020</value>
   </property>
        <!-- 配置 MapReduce JobHistory Server HTTP地址, 默认端口19888 -->
   <property>
       <name>mapreduce.jobhistory.webapp.address</name>
        <value>0.0.0.0:19888</value>
   </property>
</configuration>

修改slaves配置文件

ecloud-test06.cn
ecloud-test07.cn
ecloud-test09.cn

 

在任一配置了journalnode的节点启动JournalNode

sbin/hadoop-daemons.sh start journalnode  

test06 上执行格式化namenode

hdfs namenode -format                  

test06 启动 namenode

sbin/hadoop-daemon.sh start namenode

test07 执行同步

bin/hdfs namenode -bootstrapStandby

test07 启动 namenode

sbin/hadoop-daemon.sh start namenode

test06格式化zkfc

hdfs zkfc -formatZK

test06启动HDFS集群

sbin/start-dfs.sh

在命令行输入jps查看hadoop上述节点,如果都存在则安装成功

 

3. Hbase安装配置

解压hbase到安装目录

修改hbase-env.sh配置文件

export JAVA_HOME=/Application/xx/enterprise/jdk/jdk1.7.0_65
export HBASE_OPTS="-XX:+UseConcMarkSweepGC -Duser.timezone=GMT+08"
export HBASE_MANAGES_ZK=false

修改hbase-site.xml配置文件

<configuration>
   <property>
      <name>hbase.rootdir</name>
      <value>hdfs://hcluster/hbase</value>
   </property>
   <property>
      <name>hbase.cluster.distributed</name>
      <value>true</value>
   </property>
   <property>
     <name>hbase.zookeeper.quorum</name>
     <value>ecloud-test06.cn,ecloud-test07.cn,ecloud-test08.cn</value>
  </property>
  <property>
      <name>hbase.master.port</name>
      <value>60000</value>
   </property>
  <property>
     <name>zookeeper.session.timeout</name>
     <value>60000</value>
   </property>
   <property>
    <name>hbase.zookeeper.property.clientPort</name>
     <value>2181</value>
   </property>
   <property>
     <name>hbase.zookeeper.property.dataDir</name>
     <value>/sdb/data1/zookeeper/data</value>
   </property>
</configuration>

修改regionservers配置文件

ecloud-test06.cn
ecloud-test07.cn
ecloud-test09.cn

修改backup-masters配置文件

ecloud-test07.cn

 

使用start-hbase.sh启动集群

使用hbase shell打开shell验证安装

 

参考:

Hadoop2.6(NN/RM)高可用集群安装与部署

hadoop HA高可用集群模式搭建指南

 

 

posted @ 2017-03-01 17:21  B0-1  阅读(531)  评论(0编辑  收藏  举报