1.准备安装软件

OS:centos7
Hadoop:hadoop-2.7.3
HBase:hbase-1.2.6
JDK:jdk-8u121-linux-x64
集群机器:

主机 IP地址 系统 软件 进程
nn1 192.168.150.181 centos7 jdk1.8+,hadoop,HBase NameNode、DFSZKFailoverController(zkfc)、ResourceManager、HMaster、HQuorumPeer
nn2 192.168.150.182 centos7 jdk1.8+,hadoop,HBase NameNode、DFSZKFailoverController(zkfc)、ResourceManager、HQuorumPeer、HRegionServer
dn1 192.168.150.183 centos7 jdk8+,hadoop,zookeeper,HBase DataNode、NodeManager、JournalNode、QuorumPeerMain、HQuorumPeer、HRegionServer
dn2 192.168.150.184 centos7 jdk8+,hadoop,zookeeper,HBase DataNode、NodeManager、JournalNode、QuorumPeerMain、HQuorumPeer、HRegionServer
dn3 192.168.150.185 centos7 jdk8+,hadoop,zookeeper,HBase DataNode、NodeManager、JournalNode、QuorumPeerMain、HQuorumPeer、HRegionServer

参照上面的列表创建5台虚拟机(ps:自己电脑的内存要足够大,每台虚拟机的内存至少是1G),创建hadoop用户,修改每个虚拟机的静态IP、主机名、主机名与IP的映射,关闭防火墙和selinux,不会的请参考 在centos7上搭建hadoop集群 之后就是就是安装,环境的搭建以及启动

对hadoop的理解:
hadoop的设计是主从分布式原理,主(namenod 简称nn)只有一个不负责记录实际数据,只记录元数据(文件描述信息),从(datanode 简称 dn)有多个用来记录实际数据。从(dn)写入数据并备份(默认3)成功后把块信息汇报个主(nn)并维持一个心跳。
所以从我的理解角度来看,数据不会出现spof。而影响整个集群是否能正常工作的地方就是主(nn),如果nn故障整个集群就瘫痪了也就是所谓的spof.
如何避免nn的spof,我的理解就是备份nn,并在其中一个nn故障时快速切换到可用的nn
要解决的问题:热备份,快速启动,防止脑裂,我所说的大家不了解的话可以网上查查。我简单说下
1. 热备份:就是要保证备份数据必须实时,不能丢失,和元数据一样
2. 快速启动:客户端感觉不出来,(因为nn启动时很慢的,根据记录的元数据多少有关)
3. 防止脑裂:hadoop集群任何时刻必须保证只有一个领导者(主nn),也就是一山不能容二虎,除非一公一母。母也就是备份 standby namenode ( snn )

QJM/Quorum Journal Manager方案:

action:表示在服务的
standby:表示不再服务,热备份中的
JN:JournalNode 存储服务中nn的状态,用来共享
zkfc:DFSZKFailoverController 健康监测 ,会话管理 ,master选举,防止脑裂

对HBase的理解:
1.Hbase出现的原因:
HBase作为面向列的数据库运行在HDFS之上,HDFS缺乏随即读写操作,HBase正是为此而出现。HBase以Google BigTable为蓝本,以键值对的形式存储。项目的目标就是快速在主机内数十亿行数据中定位所需的数据并访问它。
HBase是一个数据库,一个NoSql的数据库,像其他数据库一样提供随即读写功能,Hadoop不能满足实时需要,HBase正可以满足。如果你需要实时访问一些数据,就把它存入HBase。
2.HBase:
HBase是一个管理系统,数据依然是存在HDFS中,但是HBase管理的数据具有自己的组织结构,能够满足我们快速查询某一些数据的特点,而HDFS做不到。

HDFS和HBase如何用哪一个?
1)两者可以配合使用,即数据可以存储在HDFS中,同时也存储在HBase中(两者的数据可以稍有不同,比如一个数据比较全,另外一个根据需求,可以少一些),如果需要实时查询某些数据时,使用HBase,进行Hive统计,或者MapReduce运算时,使用HDFS数据。
2).MapReduce的 输入输出,可以设置为HBase
mapreduce编程模型之hbase表作为数据源输入输出
3)Hive也可以对HBase进行操作
http://www.cnblogs.com/npumenglei/p/how_to_use_hive_load_data_from_hbase.html

http://blog.csdn.net/itjavaer/article/details/47397307

http://blog.csdn.net/jiedushi/article/details/7325292

2.开始安装

1.安装jdk1.8+、hadoop(不会的请参考: 在centos7上搭建hadoop集群)
在centos7上搭建hadoop集群
2.安装zookeeper在dn3,dn4,dn5上
zookeeper下载连接

利用xftp上传至dn3,dn4,dn5上,解压到主体目录下:

tar -zvxf zookeeper-3.4.9.tar.gz

3.安装Hbase到所有机器上
HBase下载链接

注意:版本的兼容性,详情看Hbase官网
官网链接

3.配置环境变量

# Java Environment Variables
export JAVA_HOME=/usr/java/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin# Hadoop Environment Variables
export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin# Zookeeper Environment Variables
export ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.9
export PATH=$PATH:$ZOOKEEPER_HOME/bin# HBase Environment Variables
export HBASE_HOME=/home/hadoop/hbase-1.2.6
export PATH=$PATH:$HBASE_HOME/bin

4.zookeeper配置,dn3,dn4,dn5

存放在zookeeper安装目录的conf目录下起名zoo.cfg

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
#dataDir=/tmp/zookeeper 在你的主机中建立相应的目录
dataDir=/home/hadoop/zookeeper-3.4.9/data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=dn3:2888:3888
server.2=dn4:2888:3888
server.3=dn5:2888:3888

在dn3,dn4,dn5的/home/hadoop/zookeeper-3.4.9/data下创建一个myid的文件里面写一个数字 要和上面配置中的信息一直如
server.1=dn3:2888:3888 表示要在node3的myid文件中写一个1的数字
server.2=dn4:2888:3888表示要在node4的myid文件中写一个2的数字
server.3=dn5:2888:3888表示要在node5的myid文件中写一个3的数字

5.hadoop ha配置,在每个node上

1.core-site.xml

<configuration><property>  <name>fs.defaultFS</name>  <value>hdfs://cluster</value>  </property>  <property>  <name>hadoop.tmp.dir</name>  <value>/home/hadoop/hadoop-2.7.3/tmp</value>  </property>  <property>  <name>ha.zookeeper.quorum</name>  <value>dn3:2181,dn4:2181,dn5:2181</value>  </property>
</configuration>

2.hdfs-site.xml

<configuration><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.node1</name>  <value>nn1:9000</value>  </property>  <property>  <name>dfs.namenode.http-address.cluster.node1</name>  <value>nn1:50070</value>  </property>  <property>  <name>dfs.namenode.rpc-address.cluster.node2</name>  <value>nn2:9000</value>  </property>  <property>  <name>dfs.namenode.http-address.cluster.node2</name>  <value>nn2:50070</value>  </property>  <property>  <name>dfs.namenode.shared.edits.dir</name>  <value>qjournal://dn3:8485;dn4:8485;dn5:8485/cluster</value>  </property>  <property>  <name>dfs.journalnode.edits.dir</name>  <value>/home/hadoop/hadoop-2.7.3/journaldata</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.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.mapred-site.xml

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

4.yarn-site.xml

<configuration>
<property>  <name>yarn.resourcemanager.ha.enabled</name>  <value>true</value>  </property>  <property>  <name>yarn.resourcemanager.cluster-id</name>  <value>yrc</value>  </property>  <property>  <name>yarn.resourcemanager.ha.rm-ids</name>  <value>rm1,rm2</value>  </property>  <property>  <name>yarn.resourcemanager.hostname.rm1</name>  <value>nn1</value>  </property>  <property>  <name>yarn.resourcemanager.hostname.rm2</name>  <value>nn2</value>  </property>  <property>  <name>yarn.resourcemanager.zk-address</name>  <value>dn3:2181,dn4:2181,dn5:2181</value>  </property>  <property>  <name>yarn.nodemanager.aux-services</name>  <value>mapreduce_shuffle</value>  </property> </configuration>

5.slaves

dn3
dn4
dn5

5.Hbase配置,在每个node节点上

1.hbase-env.sh
源文件修改两处:

1.)修改HBASE的指向

2.)瞎改HBase是否应该管理它自己的实例的管理员为false。

2.hbase-site

<configuration><property><name>hbase.rootdir</name><value>hdfs://cluster/hbase</value></property><property><name>hbase.cluster.distributed</name><value>true</value></property><property><name>hbase.zookeeper.quorum</name><value>dn3,dn4,dn5</value></property><property><name>hbase.tmp.dir</name><value>/home/hadoop/app/tmp/hbase</value></property><property><name>hbase.zookeeper.property.dataDir</name><value>/home/hadoop/app/tmp/data</value></property><property><name>hbase.regionserver.restart.on.zk.expire</name><value>true</value></property></configuration>

3.regionservers

dn3
dn4
dn5

6.启动步骤

1.先启动zookeeper服务,分别在dn3,dn4,dn5上执行zkServer.sh start
2.启动journalnode,分别在dn3,dn4,dn5上执行 hadoop-daemon.sh start journalnode 注意只有第一次需要这么启动,之后启动hdfs会包含journalnode
3.格式化HDFS,在nn1上执行hdfs namenode -format注意:格式化之后需要把tmp目录拷给nn2(不然node2的namenode起不来)
4.格式化ZKFC,在nn1上执行hdfs zkfc -formatZK
5.启动HDFS,在nn1上执行,start-dfs.sh
6.启动YARN,在nn1上执行,start-yarn.sh
7.nn2的resourcemanager需要手动单独启动:yarn-daemon.sh start resourcemanager
8.start-hbase.sh
9.hbase-daemon.sh start master

转载于:https://www.cnblogs.com/cn-7876/p/7757771.html

Hbase完全分布式高可用集群安装配置相关推荐

  1. 部署Ceph分布式高可用集群中篇

    前言 如何快速部署Ceph分布式高可用集群 Ceph分布式存储底层实现原理 上文介绍了ceph的原理以及ceph的部署(部署了一个mon角色)本文继续介绍下ceph的部署 部署OSD 查看磁盘使用情况 ...

  2. k8s1.18多master节点高可用集群安装-超详细中文官方文档

    kubernetes安装系列文章 kubernetes1.17.3安装-超详细的安装步骤 安装kubernetes1.17.3多master节点的高可用集群 k8s1.18单master节点高可用集群 ...

  3. k8s高可用集群安装

    一.环境准备: 10.10.0.170 k8s-master-01 10.10.0.171 k8s-master-02 10.10.0.172 k8s-master-03 10.10.0.190 k8 ...

  4. 基于zookeeper(集群)+LevelDB的ActiveMq高可用集群安装、配置、测试

    Linux 环境 zookeeper集群安装.配置.测试https://blog.csdn.net/weixin_40816738/article/details/100576259 MQ集群部署规划 ...

  5. Java后台架构-分布式-高可用-集群-负载均衡-正向代理和反向代理

    双 11 即将来临,本文以设计淘宝网的后台架构为例,介绍从一百个并发到千万级并发情况下服务端的架构的14次演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知. 文章最 ...

  6. (五)Hadoop HA高可用集群的配置-Hadoop HA集群模式的安装

    目录 一.目的及要求: 实验目的: 实验要求: 二.环境要求: 集群规划: 三.具体步骤: 项目一:Hadoop的基本安装配置 项目二:Hadoop高可用完全分布模式配置 项目三:同步安装和配置 项目 ...

  7. Memcache 分布式高可用集群介绍

    分布式缓存需考虑如下三点: 1.缓存本身的水平线性扩展的问题. 2.缓存大病罚下的本身性能问题. 3.避免缓存的单点鼓掌问题. 分布式缓存存在的问题: 1.内存本身的管理问题.内存的分配,管理和回收机 ...

  8. 2021-11-10如何快速部署Ceph分布式高可用集群

    基础概念 目前Ceph官方提供三种部署Ceph集群的方法,分别是ceph-deploy,cephadm和手动安装 ceph-deploy 一个集群自动化部署工具,使用较久,成熟稳定,被很多自动化工具所 ...

  9. galeracluster高可用集群安装(mysql)

    参考文档 https://galeracluster.com/library/documentation/install-mysql.html 参考书籍:数据中台建设实战 文章基于centos7 my ...

最新文章

  1. python-opencv 形态学
  2. AI一分钟 | 腾讯将成立机器人实验室;机器翻译重大突破:中英翻译已达人类水平
  3. numpy给数据新增一个维度np.newaxis及其使用场景
  4. iterm2 mac链接linux工具 桌面程序Transmit
  5. 添加程序以DLL函数
  6. 剖析Fragment的Pause生命周期全过程
  7. linux远程虚拟桌面,2020-07-23 Linux 远程连接虚拟桌面
  8. mvc如何嵌套第三方页面_苹果屏蔽第三方Cookie,然后呢?
  9. 光干涉波谷,有可能低于绝对零度
  10. 4.8 数值分析: 牛顿迭代法及收敛分析
  11. vue调用手机扫描二维码
  12. React TypeScript react+ts 包下载
  13. ardupilot代码拉取
  14. 保姆级上云教程:购买百度云BCC服务器以及之后的一些注意事项
  15. 【SLAM】SLAM如何发论文?做SLAM怎么发论文
  16. 腾讯面试题: 百度搜索为什么那么快?
  17. nRF52832低功耗问题不完全总结
  18. Noip2016PJ复赛总结
  19. XenDesktop 5 .VS.View 4.5
  20. JavaMail API 1.4.7邮件发送

热门文章

  1. LeetCode 96. 不同的二叉搜索树(Unique Binary Search Trees )
  2. 奖品好low !! -- 说说开源中国oschina的年度评选
  3. LintCode Python 简单级题目 491.回文数
  4. micro 架构组件介绍
  5. 一起啃PRML - 1.2.2 Expectations and covariances 期望和协方差
  6. WPF MVVM模式
  7. visio 模具_Visio2013 自定义模具 简单公式
  8. 手机上图片信息怎么拉一个矩形框_华为手机EMUI系统隐藏的10个功能,上手体验后,实用性无敌了...
  9. 语言 ota_小米手表第五次OTA升级:百款新表盘 增加运动语音、振动提醒
  10. PowerPC处理器数字仿真测试软件工具——天目全数字实时仿真软件SkyEye