hadoop HA + HBase HA搭建:

hadoop HA搭建参考:https://www.cnblogs.com/NGames/p/11083640.html (本节:用不到YARN 所以可以不用考虑部署YARN部分)

Hadoop 使用分 布式文件系统,用于存储大数据,并使用 MapReduce 来处理。Hadoop 擅长于存储各种格式 的庞大的数据,任意的格式甚至非结构化的处理。

Hadoop 的限制:

Hadoop 只能执行批量处理,并且只以顺序方式访问数据。这意味着必须搜索整个数据集, 即使是最简单的搜索工作。这一点上,一个 新的解决方案,需要访问数据中的任何点(随机访问)单元。

Hadoop 随机存取数据库:HBase,Cassandra等...都是一些存储大量数据和 以随机方式访问数据的数据库

HBase简介

使用环境:当您需要对大数据进行随机、实时的读/写访问时,请使用Apache HBase

HBase是Hadoop数据库,一个分布式、可伸缩的大数据存储。硬件集群上托管非常大的表(数十亿行X数百万列),Apache HBase是一个开源的、分布式的、版本化的、非关系数据库,以谷歌的Bigtable: A distributed Storage System for Structured Data为模型,由Chang等人开发。正如Bigtable利用了谷歌文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS之上提供了类似Bigtable的功能。

Apache Hadoop 的数据库,是建 立在 HDFS 之上,被设计用来提供高可靠性、高性能、列存储、可伸缩、多版本的 NoSQL 的分布式数据存储系统,实现对大型数据的实时、随机的读写访问。

HBase 依赖于 HDFS 做底层的数据存储

HBase 依赖于 MapReduce 做数据计算

HBase 依赖于 ZooKeeper 做服务协调


HBase  与 关系型数据库(mysql) 表结构对比,图解

关系型数据库(mysql),一旦表的结构定义好了,扩展比较麻烦

HBASE表结构:建表时,不需要限定表中的字段,只需要指定若干个列簇

 插入数据是,列簇中可以存储任意多个列(KV,列名&列值)

要查询一个具体字段的值,需要指定的坐标:表名-->行键-->列簇:列名----->版本

版本,如:name:小红;晓红;晓红,每个版本查询的结果不同


 

table_1表()---META表---ROOT表----zk


HBASE集群搭建:

主机名 IP 安装软件 运行进程
hadoop01 192.168.109.137 jdk、hadoop、hbase namenode、DFSZKailoverController(zkfc)、HMaster
hadoop02 192.168.109.138 jdk、hadoop、hbase namenode、DFSZKailoverController(zkfc)、HMaster
hadoop05 192.168.109.141 jdk、hadoop、zk、hbase DataNode、JournalNode、QuorumPeerMain、HRegionServer
hadoop06 192.168.109.142 jdk、hadoop、zk、hbase DataNode、JournalNode、QuorumPeerMain、HRegionServer
hadoop07 192.168.109.143 jdk、hadoop、zk、hbase DataNode、JournalNode、QuorumPeerMain、HRegionServer

 wget http://mirror.bit.edu.cn/apache/hbase/2.2.0/hbase-2.2.0-bin.tar.gz (下载与你hadoop版本匹配的hbase::http://hbase.apache.org/book.html#configuration) 

tar -zcf hbase-2.2.0-bin.tar.gz -C /home/apps/
rm -rf /home/apps/hbase-2.2.0/docs/*

cd /home/apps/hbase-2.2.0/conf
vim /home/apps/hbase-2.2.0/conf/hbase-env.sh 添加jak
export JAVA_HOME=/usr/local/soft/jdk
# export HBASE_MANAGES_ZK=true 自带的zk管理开关,我打开注释并改为false关闭自带的,用我们的zk集群

vim /home/apps/hbase-2.2.0/conf/hbase-site.xml
<configuration>
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://ns1/hbase</value>
</property>

<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>

<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop05:2181,hadoop06:2181,hadoop07:2181</value>
</property>

<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>

</configuration>


vim /home/apps/hbase-2.2.0/conf/regionservers
hadoop05
hadoop06
hadoop07

vim /home/apps/hbase-2.2.0/conf/backup-masters 注意:俩台主备互为热主备
hadoop02

注意:上面 hbase-site.sh指定的<value>hdfs://ns1/hbase</value>;要想读取到,我们可以将hadoop下的
core-site.xml 和 hdfs-site.xml 拷贝到Hbase配置下
cp /home/apps/hadoop-3.2.0/etc/hadoop/{core-site.xml,hdfs-site.xml} /home/apps/hbase-2.2.0/conf/


配置完毕,将目录同步到其他机器(hadoop02,hadoop05,hadoop06,hadoop07)
cd /home/apps/
rsync -avz --progress -e ssh ./hbase-2.2.0 hadoop02:/home/apps/
...
...
...

1.zk集群起起来
2.HDFS起起来:start-dfs.sh

 自我检测对应的进程是否完成,日志稍微看看

3.启动hbase集群

可以将hbase环境加入主机环境(略)

启动:/home/apps/hbase-2.2.0/bin/start-hbase.sh

启动完毕查看启动日志过程,各节点jps查看进程

页面查看:

测试:

1.手动kill进程测试HA正常

使用:

命令客户端:/home/apps/hbase-2.2.0/bin/hbase shell

nosql语法上网查

猜你喜欢

转载自www.cnblogs.com/NGames/p/11106089.html