hbase伪集群搭建
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hbase伪集群搭建相关的知识,希望对你有一定的参考价值。
hbase 数据存储有三种跑法,跑在本地磁盘上、跑在伪分布式上、跑在完全分布式上--------额。。。官网的文档挺坑爹的,结合官网、百度、谷歌的各种文档看,只要理解原理,搭建也不算难(当然照的官网文档个看就比较坑爹了)
单机模式 ------->> 这个最简单,免写了,下了包直接解压配置个路径就可以启动了,zk 和 hbase 都是起在同一个 jvm 中的,数据落到本地磁盘。
伪分布式部署方式 ------->> 先部署 hdfs , 再部署 hbase ,它们的各个进程跑在不同的 jvm 中 , hbase只是将数据落到了 hdfs 上。
完全分布式 ------->> 完全分布式用大白话来说,我理解的就是个 伪分布式的 升级款,只是把伪分布式的一台服务器变成了 n 台。。。
完全分布式一定要部署在 物理机上
上边蛋扯的差不多了,下面直接入正题,开始部署
下载什么版本的包自己解决,要想下载最轻松的全部安装包,直接到 cdh 上去下载,百度搜索 cdh ,你懂的、、、然后配置文件每个版本的基本上差不多,没有太大的出入
下面是以 hadoop-2.7.2 、 hbase-1.1.2 为例
一、新系统的话,自己先处理一下系统,这个习惯相信所有运维同行的哥哥们都是有这习惯的。。。关闭不用的防火墙、最大文件打开数、jdk全局变量、dns、主机名解析
建议配置时用 ip 的最后用内网的域名,这样的话,开发的代码也好接入做好的 hbase,用主机名的话,开发的还得自己的 hosts ,我这里用的 内网的 dns 域名。
二、部署 hdfs
hadoop-2.7.2.tar.gz 包传到 服务器上,解压
tar xvf hadoop-2.7.2.tar.gz -C /home
cd /home/hadoop-2.7.2
vim etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_72
配置HDFS
mkdir data
vim etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://pretend.hdfs.gag.cn:9000</value>
<!--这里设置 hdfs 文件系统接口-->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop-2.7.2/data/tmp</value>
<!--这里为 hdfs 数据存储路径-->
</property>
</configuration>
----------------------------
vim etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<!--指定创建的副本数-->
</property>
</configuration>
----------------------------
配置YARN
这原配置文件里什么也没有,都是注释内容,直接改名就行
mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
vim etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<!--使用yarn运行mapreduce程序-->
</property>
</configuration>
vim etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<!--NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序-->
</property>
</configuration>
------------------------------------
启动 hdfs
初次启动 hdfs 先要初始化文件系统,也可以说是格式化文件系统
bin/hdfs namenode -format
![](http://i2.51cto.com/images/blog/201803/05/afb7e0d1a567cae57e0219508b614a64.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
格式化完毕,启动NameNod和DataNode进程
启动之前如果修改 jvm 参数的话,在 vim etc/hadoop/hadoop-env.sh 修改 HADOOP_HEAPSIZE 这一项就可以了,默认应该是 1024M 吧
sbin/start-dfs.sh
启动以后,有这里显示有 三个配置文件,是 out 后缀的,看日志的话,看 log 后缀的,看有没有 error 级别的报错
![](http://i2.51cto.com/images/blog/201803/05/b1fb3c375924ba49aa3cabbee725af10.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
-----------------------------
启动YARN
sbin/start-yarn.sh
同样是去看这两个的 log 后缀的日志
这里了 hdfs 就算启动完毕了,这时再 jps 命令可以看到除 jps 进程外有 5 个
![](http://i2.51cto.com/images/blog/201803/05/36625774e3955f1fd3014eb85036cadd.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
查看端口已经有这么多了, 50070 是 hdfs 的 web 端口,以后输入 ip:port 或者 域名:port 来查看 web 页面
![](http://i2.51cto.com/images/blog/201803/05/f63bcacf66e6c9eafed5fc72fd97d2e7.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201803/05/eda0a0aca56cfe831f9ecfe0f061696e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
======================================================================
以上 hdfs 启动没问题后,就可以启动 hbase 了
tar xvf hbase-1.1.2-bin.tar.gz -C /home/
cd /home/hbase-1.1.2/
vim conf/hbase-env.sh
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_72
配置Hbase
mkdir data
vim conf/hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://pretend.hdfs.gag.cn:9000/hbase</value>
<!--使用 hdfs 文件系统,端口为上面配置的 hdfs 接口-->
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hbase-1.1.2/data</value>
<!--zookeeper数据存储路径,用hbase自带的zookeeper-->
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<!--设置hbase模式为集群模式-->
</property>
</configuration>
hbase 集群内的服务器,如果是启动完全分布式,这里要填写hbase所有的服务器域名或者 ip 或者 主机名,顺便说一下,hbase和 hadoop 集群全部是已 ssh 远程 调用命令的方式启动其他节点的
vim conf/regionservers
pretend.hbase.gag.cn
这里的话,我把内存调整了一下,因为开发那边要用,服务器是 8G 的
vim conf/hbase-env.sh
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=1024m -XX:MaxPermSize=512m"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=1024m -XX:MaxPermSize=512m"
启动Hbase
先启动 zookeeper,如果是完全分布式的话,所有的 hbase节点会以临时节点的方式注册在 zk 里,伪分布式也一样,只不过zk 里只有一个节点,zk 也只有一个节点
bin/hbase-daemon.sh start zookeeper 启动后查看日志
bin/hbase-daemon.sh start master 启动后查看日志
bin/hbase-daemon.sh start regionserver 启动后查看日志
此时的 jps 可以查看到除 jps 外 8 个进程
![](http://i2.51cto.com/images/blog/201803/05/692fd3b3f0fddc59044ac10c47b52adb.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
hbase 的 web 页面端口是 16010
![](http://i2.51cto.com/images/blog/201803/05/13f8e5501414a49cf0165f36cad233e3.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
如果要加 开机启动的话,最好加上sleep等待,我是这样加的
![](http://i2.51cto.com/images/blog/201803/05/d72489bbf28360c894972e2b46a048aa.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
正常停止方式:
一定要按照顺序停止
停止 hbase、zookeeper、hdfs
以上是关于hbase伪集群搭建的主要内容,如果未能解决你的问题,请参考以下文章
Spark集群框架搭建VM15+CentOS7+Hadoop+Scala+Spark+Zookeeper+HBase+Hive